diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2022-06-13 11:36:20 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2022-06-13 11:36:20 +0200 |
commit | 9a970bbfecff93622907ac1c3cad663e61df063a (patch) | |
tree | ab88233a78893727a22b47db16d76530e72f5178 /vespa-enforcer-extensions | |
parent | a48c89794f75e820891c2e90285677cde0ce1e49 (diff) |
Misc improvements
Rename 'DependencyEnforcer' => 'EnforceDependencies'.
Improve javadoc. Add unit tests. Log on successful completion.
Diffstat (limited to 'vespa-enforcer-extensions')
-rw-r--r-- | vespa-enforcer-extensions/src/main/java/com/yahoo/vespa/maven/plugin/enforcer/EnforceDependencies.java (renamed from vespa-enforcer-extensions/src/main/java/com/yahoo/vespa/maven/plugin/enforcer/DependencyEnforcer.java) | 5 | ||||
-rw-r--r-- | vespa-enforcer-extensions/src/test/java/com/yahoo/vespa/maven/plugin/enforcer/EnforceDependenciesTest.java (renamed from vespa-enforcer-extensions/src/test/java/com/yahoo/vespa/maven/plugin/enforcer/DependencyEnforcerTest.java) | 48 |
2 files changed, 47 insertions, 6 deletions
diff --git a/vespa-enforcer-extensions/src/main/java/com/yahoo/vespa/maven/plugin/enforcer/DependencyEnforcer.java b/vespa-enforcer-extensions/src/main/java/com/yahoo/vespa/maven/plugin/enforcer/EnforceDependencies.java index c46a67f551f..154ba9db790 100644 --- a/vespa-enforcer-extensions/src/main/java/com/yahoo/vespa/maven/plugin/enforcer/DependencyEnforcer.java +++ b/vespa-enforcer-extensions/src/main/java/com/yahoo/vespa/maven/plugin/enforcer/EnforceDependencies.java @@ -30,11 +30,11 @@ import java.util.regex.Pattern; /** * Enforces that all expected dependencies are present. * Fails by default for rules that do not match any dependencies. - * Similar to the built-in banned-dependency rule in maven-enforcer-plugin. + * Similar to the built-in 'bannedDependencies' rule in maven-enforcer-plugin. * * @author bjorncs */ -public class DependencyEnforcer implements EnforcerRule { +public class EnforceDependencies implements EnforcerRule { private List<String> allowedDependencies = List.of(); private boolean failOnUnmatched = true; @@ -42,6 +42,7 @@ public class DependencyEnforcer implements EnforcerRule { @Override public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException { validateDependencies(getAllDependencies(helper), Set.copyOf(allowedDependencies), failOnUnmatched); + helper.getLog().info("The 'enforceDependencies' validation completed successfully"); } static void validateDependencies(Set<Artifact> dependencies, Set<String> allowedRules, boolean failOnUnmatched) diff --git a/vespa-enforcer-extensions/src/test/java/com/yahoo/vespa/maven/plugin/enforcer/DependencyEnforcerTest.java b/vespa-enforcer-extensions/src/test/java/com/yahoo/vespa/maven/plugin/enforcer/EnforceDependenciesTest.java index 1af976ae5b0..0dcbe595121 100644 --- a/vespa-enforcer-extensions/src/test/java/com/yahoo/vespa/maven/plugin/enforcer/DependencyEnforcerTest.java +++ b/vespa-enforcer-extensions/src/test/java/com/yahoo/vespa/maven/plugin/enforcer/EnforceDependenciesTest.java @@ -15,7 +15,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; /** * @author bjorncs */ -class DependencyEnforcerTest { +class EnforceDependenciesTest { @Test void succeeds_when_all_dependencies_and_rules_match() { @@ -25,7 +25,7 @@ class DependencyEnforcerTest { Set<String> rules = Set.of( "com.yahoo.vespa:container-core:*:jar:provided", "com.yahoo.vespa:*:*:jar:test"); - assertDoesNotThrow(() -> DependencyEnforcer.validateDependencies(dependencies, rules, true)); + assertDoesNotThrow(() -> EnforceDependencies.validateDependencies(dependencies, rules, true)); } @Test @@ -36,7 +36,7 @@ class DependencyEnforcerTest { Set<String> rules = Set.of("com.yahoo.vespa:*:*:jar:test"); EnforcerRuleException exception = assertThrows( EnforcerRuleException.class, - () -> DependencyEnforcer.validateDependencies(dependencies, rules, true)); + () -> EnforceDependencies.validateDependencies(dependencies, rules, true)); String expectedErrorMessage = """ Vespa dependency enforcer failed: @@ -55,7 +55,7 @@ class DependencyEnforcerTest { "com.yahoo.vespa:*:*:jar:test"); EnforcerRuleException exception = assertThrows( EnforcerRuleException.class, - () -> DependencyEnforcer.validateDependencies(dependencies, rules, true)); + () -> EnforceDependencies.validateDependencies(dependencies, rules, true)); String expectedErrorMessage = """ Vespa dependency enforcer failed: @@ -65,6 +65,46 @@ class DependencyEnforcerTest { assertEquals(expectedErrorMessage, exception.getMessage()); } + @Test + void fails_on_version_mismatch() { + Set<Artifact> dependencies = Set.of( + artifact("com.yahoo.vespa", "testutils", "8.0.0", "test")); + Set<String> rules = Set.of( + "com.yahoo.vespa:testutils:[7.0.0]:jar:test"); + EnforcerRuleException exception = assertThrows( + EnforcerRuleException.class, + () -> EnforceDependencies.validateDependencies(dependencies, rules, true)); + String expectedErrorMessage = + """ + Vespa dependency enforcer failed: + Dependencies not matching any rule: + - com.yahoo.vespa:testutils:jar:8.0.0:test + Rules not matching any dependency: + - com.yahoo.vespa:testutils:[7.0.0]:jar:test + """; + assertEquals(expectedErrorMessage, exception.getMessage()); + } + + @Test + void fails_on_scope_mismatch() { + Set<Artifact> dependencies = Set.of( + artifact("com.yahoo.vespa", "testutils", "8.0.0", "test")); + Set<String> rules = Set.of( + "com.yahoo.vespa:testutils:8.0.0:jar:provided"); + EnforcerRuleException exception = assertThrows( + EnforcerRuleException.class, + () -> EnforceDependencies.validateDependencies(dependencies, rules, true)); + String expectedErrorMessage = + """ + Vespa dependency enforcer failed: + Dependencies not matching any rule: + - com.yahoo.vespa:testutils:jar:8.0.0:test + Rules not matching any dependency: + - com.yahoo.vespa:testutils:8.0.0:jar:provided + """; + assertEquals(expectedErrorMessage, exception.getMessage()); + } + private static Artifact artifact(String groupId, String artifactId, String version, String scope) { return new DefaultArtifact( groupId, artifactId, version, scope, "jar", /*classifier*/null, new DefaultArtifactHandler("jar")); |