aboutsummaryrefslogtreecommitdiffstats
path: root/bundle-plugin-test/integration-test
diff options
context:
space:
mode:
authorgjoranv <gv@yahooinc.com>2023-06-02 12:50:17 +0200
committergjoranv <gv@yahooinc.com>2023-06-02 16:59:01 +0200
commit9c0eeab774895b3c3c9b218f82f71fd7314c388c (patch)
tree25935f8fc7a28940e008286d2933e2bd3a9579fd /bundle-plugin-test/integration-test
parent2e86853955a19bf290efca723456619ea45cb75f (diff)
Add test for non-PublicApi usage.
Diffstat (limited to 'bundle-plugin-test/integration-test')
-rw-r--r--bundle-plugin-test/integration-test/pom.xml7
-rw-r--r--bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/NonPublicApiDetectionTest.java44
2 files changed, 51 insertions, 0 deletions
diff --git a/bundle-plugin-test/integration-test/pom.xml b/bundle-plugin-test/integration-test/pom.xml
index 7384bf3aea6..acd075d0365 100644
--- a/bundle-plugin-test/integration-test/pom.xml
+++ b/bundle-plugin-test/integration-test/pom.xml
@@ -56,7 +56,14 @@
<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>
+ </dependency>
</dependencies>
+
<build>
<plugins>
<plugin>
diff --git a/bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/NonPublicApiDetectionTest.java b/bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/NonPublicApiDetectionTest.java
new file mode 100644
index 00000000000..42ac99c65e5
--- /dev/null
+++ b/bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/NonPublicApiDetectionTest.java
@@ -0,0 +1,44 @@
+package com.yahoo.container.plugin;
+
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Set;
+import java.util.jar.Attributes;
+import java.util.jar.JarFile;
+import java.util.stream.Collectors;
+
+import static com.yahoo.container.plugin.BundleTest.findBundleJar;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * @author gjoranv
+ */
+public class NonPublicApiDetectionTest {
+
+ private static Set<String> usedNonPublicApi;
+
+ @BeforeAll
+ public static void setup() {
+ try {
+ File componentJar = findBundleJar("non-public-api-usage");
+ Attributes mainAttributes = new JarFile(componentJar).getManifest().getMainAttributes();
+ var nonPublicApiAttribute = mainAttributes.getValue("X-JDisc-Non-PublicApi-Import-Package");
+ usedNonPublicApi = Arrays.stream(nonPublicApiAttribute.split(",")).collect(Collectors.toSet());
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Test
+ void usage_of_non_publicApi_packages_is_detected() {
+ assertEquals(2, usedNonPublicApi.size());
+ assertTrue(usedNonPublicApi.contains("ai.vespa.http"));
+ assertTrue(usedNonPublicApi.contains("com.yahoo.io"));
+ }
+
+}