diff options
author | gjoranv <gv@yahooinc.com> | 2023-06-02 12:50:17 +0200 |
---|---|---|
committer | gjoranv <gv@yahooinc.com> | 2023-06-02 16:59:01 +0200 |
commit | 9c0eeab774895b3c3c9b218f82f71fd7314c388c (patch) | |
tree | 25935f8fc7a28940e008286d2933e2bd3a9579fd /bundle-plugin-test/integration-test | |
parent | 2e86853955a19bf290efca723456619ea45cb75f (diff) |
Add test for non-PublicApi usage.
Diffstat (limited to 'bundle-plugin-test/integration-test')
-rw-r--r-- | bundle-plugin-test/integration-test/pom.xml | 7 | ||||
-rw-r--r-- | bundle-plugin-test/integration-test/src/test/java/com/yahoo/container/plugin/NonPublicApiDetectionTest.java | 44 |
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")); + } + +} |