summaryrefslogtreecommitdiffstats
path: root/vespa-enforcer-extensions
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2022-06-13 11:36:20 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2022-06-13 11:36:20 +0200
commit9a970bbfecff93622907ac1c3cad663e61df063a (patch)
treeab88233a78893727a22b47db16d76530e72f5178 /vespa-enforcer-extensions
parenta48c89794f75e820891c2e90285677cde0ce1e49 (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"));