aboutsummaryrefslogtreecommitdiffstats
path: root/bundle-plugin-test/integration-test
diff options
context:
space:
mode:
authorgjoranv <gv@yahooinc.com>2023-06-09 16:52:52 +0200
committergjoranv <gv@yahooinc.com>2023-06-09 16:56:14 +0200
commit7ac829699dc908bd747f97714a1b8fc9a12ded18 (patch)
treea74c25e8ed608853657f274260fbb536ab6c5ecf /bundle-plugin-test/integration-test
parentacd484916c47a0c158a29d3c77bb34b1f502b78f (diff)
Add test for non-public api manifest header..
and add new test bundle to avoid depending on proper Vespa bundles.
Diffstat (limited to 'bundle-plugin-test/integration-test')
-rw-r--r--bundle-plugin-test/integration-test/pom.xml6
-rw-r--r--bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/BundleTest.java30
2 files changed, 31 insertions, 5 deletions
diff --git a/bundle-plugin-test/integration-test/pom.xml b/bundle-plugin-test/integration-test/pom.xml
index acd075d0365..57ca134ed05 100644
--- a/bundle-plugin-test/integration-test/pom.xml
+++ b/bundle-plugin-test/integration-test/pom.xml
@@ -58,6 +58,12 @@
</dependency>
<dependency>
<groupId>com.yahoo.vespa.bundle-plugin</groupId>
+ <artifactId>export-packages-lib</artifactId>
+ <classifier>bundle</classifier>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.yahoo.vespa.bundle-plugin</groupId>
<artifactId>non-public-api-usage</artifactId>
<classifier>bundle</classifier>
<version>${project.version}</version>
diff --git a/bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/BundleTest.java b/bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/BundleTest.java
index 673d7d8e09e..a9b482377fa 100644
--- a/bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/BundleTest.java
+++ b/bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/BundleTest.java
@@ -10,12 +10,15 @@ import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.Arrays;
import java.util.Enumeration;
+import java.util.List;
import java.util.jar.Attributes;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.Manifest;
import java.util.regex.Pattern;
+import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -105,21 +108,38 @@ public class BundleTest {
@Test
void require_that_manifest_contains_public_api_for_this_bundle_and_embedded_bundles() {
- assertEquals("com.yahoo.test,com.yahoo.vespa.defaults", mainAttributes.getValue("X-JDisc-PublicApi-Package"));
+ var publicApiAttribute = mainAttributes.getValue("X-JDisc-PublicApi-Package");
+ assertNotNull(publicApiAttribute);
+ var publicApi = Arrays.stream(publicApiAttribute.split(",")).collect(Collectors.toSet());
+
+ var expected = List.of("ai.vespa.lib.public_api", "com.yahoo.lib.public_api", "com.yahoo.test");
+ assertEquals(expected.size(), publicApi.size());
+ expected.forEach(pkg -> assertTrue(publicApi.contains(pkg), "Public api did not contain %s".formatted(pkg)));
}
@Test
+ void require_that_manifest_contains_non_public_api_for_this_bundle_and_embedded_bundles() {
+ var nonPublicApiAttribute = mainAttributes.getValue("X-JDisc-Non-PublicApi-Export-Package");
+ assertNotNull(nonPublicApiAttribute);
+ var nonPublicApi = Arrays.stream(nonPublicApiAttribute.split(",")).collect(Collectors.toSet());
+
+ var expected = List.of("ai.vespa.lib.non_public", "com.yahoo.lib.non_public", "com.yahoo.non_public");
+ assertEquals(expected.size(), nonPublicApi.size());
+ expected.forEach(pkg -> assertTrue(nonPublicApi.contains(pkg), "Non-public api did not contain %s".formatted(pkg)));
+ }
+
+ @Test
void require_that_manifest_contains_bundle_class_path() {
String bundleClassPath = mainAttributes.getValue("Bundle-ClassPath");
assertTrue(bundleClassPath.contains(".,"));
- Pattern jrtPattern = Pattern.compile("dependencies/defaults" + snapshotOrVersionOrNone);
- assertTrue(jrtPattern.matcher(bundleClassPath).find(), "Bundle class path did not contain 'defaults''.");
+ Pattern jrtPattern = Pattern.compile("dependencies/export-packages-lib" + snapshotOrVersionOrNone);
+ assertTrue(jrtPattern.matcher(bundleClassPath).find(), "Bundle class path did not contain 'export-packages-lib''.");
}
@Test
void require_that_component_jar_file_contains_compile_artifacts() {
- String requiredDep = "dependencies/defaults";
+ String requiredDep = "dependencies/export-packages-lib";
Pattern depPattern = Pattern.compile(requiredDep + snapshotOrVersionOrNone);
ZipEntry depEntry = null;
@@ -133,7 +153,7 @@ public class BundleTest {
}
}
}
- assertNotNull(depEntry, "Component jar file did not contain 'defaults' dependency.");
+ assertNotNull(depEntry, "Component jar file did not contain 'export-packages-lib' dependency.");
}