aboutsummaryrefslogtreecommitdiffstats
path: root/vespa-enforcer-extensions/src/test/java/com
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2022-06-10 13:40:39 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2022-06-10 13:40:39 +0200
commit7f291cb8b20c0867b5ec7c5a1b5d110f9a0f0a16 (patch)
tree58b9970b0957fd4b6505928bd832b5685be763c1 /vespa-enforcer-extensions/src/test/java/com
parent57b0533a24471eff70913a069fa340a5ca1001b4 (diff)
Add custom rule for verifying transitive Maven dependencies
Diffstat (limited to 'vespa-enforcer-extensions/src/test/java/com')
-rw-r--r--vespa-enforcer-extensions/src/test/java/com/yahoo/vespa/maven/plugin/enforcer/DependencyEnforcerTest.java73
1 files changed, 73 insertions, 0 deletions
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/DependencyEnforcerTest.java
new file mode 100644
index 00000000000..1af976ae5b0
--- /dev/null
+++ b/vespa-enforcer-extensions/src/test/java/com/yahoo/vespa/maven/plugin/enforcer/DependencyEnforcerTest.java
@@ -0,0 +1,73 @@
+package com.yahoo.vespa.maven.plugin.enforcer;// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DefaultArtifact;
+import org.apache.maven.artifact.handler.DefaultArtifactHandler;
+import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
+import org.junit.jupiter.api.Test;
+
+import java.util.Set;
+
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+/**
+ * @author bjorncs
+ */
+class DependencyEnforcerTest {
+
+ @Test
+ void succeeds_when_all_dependencies_and_rules_match() {
+ Set<Artifact> dependencies = Set.of(
+ artifact("com.yahoo.vespa", "container-core", "8.0.0", "provided"),
+ artifact("com.yahoo.vespa", "testutils", "8.0.0", "test"));
+ Set<String> rules = Set.of(
+ "com.yahoo.vespa:container-core:*:jar:provided",
+ "com.yahoo.vespa:*:*:jar:test");
+ assertDoesNotThrow(() -> DependencyEnforcer.validateDependencies(dependencies, rules, true));
+ }
+
+ @Test
+ void fails_on_unmatched_dependency() {
+ Set<Artifact> dependencies = Set.of(
+ artifact("com.yahoo.vespa", "container-core", "8.0.0", "provided"),
+ artifact("com.yahoo.vespa", "testutils", "8.0.0", "test"));
+ Set<String> rules = Set.of("com.yahoo.vespa:*:*:jar:test");
+ EnforcerRuleException exception = assertThrows(
+ EnforcerRuleException.class,
+ () -> DependencyEnforcer.validateDependencies(dependencies, rules, true));
+ String expectedErrorMessage =
+ """
+ Vespa dependency enforcer failed:
+ Dependencies not matching any rule:
+ - com.yahoo.vespa:container-core:jar:8.0.0:provided
+ """;
+ assertEquals(expectedErrorMessage, exception.getMessage());
+ }
+
+ @Test
+ void fails_on_unmatched_rule() {
+ Set<Artifact> dependencies = Set.of(
+ artifact("com.yahoo.vespa", "testutils", "8.0.0", "test"));
+ Set<String> rules = Set.of(
+ "com.yahoo.vespa:container-core:*:jar:provided",
+ "com.yahoo.vespa:*:*:jar:test");
+ EnforcerRuleException exception = assertThrows(
+ EnforcerRuleException.class,
+ () -> DependencyEnforcer.validateDependencies(dependencies, rules, true));
+ String expectedErrorMessage =
+ """
+ Vespa dependency enforcer failed:
+ Rules not matching any dependency:
+ - com.yahoo.vespa:container-core:*: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"));
+ }
+
+} \ No newline at end of file