aboutsummaryrefslogtreecommitdiffstats
path: root/bundle-plugin-test/integration-test
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2019-10-20 19:09:07 +0200
committergjoranv <gv@verizonmedia.com>2019-10-23 12:26:58 +0200
commitdd59b17378d9a5c380f305fd0865becf0fab9caf (patch)
tree46ff480984306271408c2eee5a4a0a1a1d9c8540 /bundle-plugin-test/integration-test
parent4f29f8a23a3297db5b0daa5748debf898b651e6c (diff)
Add test with a bundle using artifact version as ExportPackages
- Verify that useArtifactVersionForExportPackages is honoured also for a compile scoped bundle dependency.
Diffstat (limited to 'bundle-plugin-test/integration-test')
-rw-r--r--bundle-plugin-test/integration-test/pom.xml23
-rw-r--r--bundle-plugin-test/integration-test/src/test/java/com/yahoo/BundleIT.java18
-rw-r--r--bundle-plugin-test/integration-test/src/test/java/com/yahoo/ExportPackageVersionIT.java68
3 files changed, 91 insertions, 18 deletions
diff --git a/bundle-plugin-test/integration-test/pom.xml b/bundle-plugin-test/integration-test/pom.xml
index 62204f23999..642d74fb0e9 100644
--- a/bundle-plugin-test/integration-test/pom.xml
+++ b/bundle-plugin-test/integration-test/pom.xml
@@ -1,5 +1,5 @@
<?xml version="1.0"?>
-<!-- Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
+<!-- Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
@@ -17,11 +17,6 @@
<dependencies>
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>com.yahoo.vespa</groupId>
<artifactId>config</artifactId>
<version>${project.version}</version>
@@ -33,6 +28,16 @@
<version>${project.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>com.yahoo.vespa.bundle-plugin</groupId>
@@ -40,6 +45,12 @@
<classifier>bundle</classifier>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>com.yahoo.vespa.bundle-plugin</groupId>
+ <artifactId>artifact-version-for-exports</artifactId>
+ <classifier>bundle</classifier>
+ <version>${project.version}</version>
+ </dependency>
</dependencies>
<build>
<plugins>
diff --git a/bundle-plugin-test/integration-test/src/test/java/com/yahoo/BundleIT.java b/bundle-plugin-test/integration-test/src/test/java/com/yahoo/BundleIT.java
index 2ed1d7f0bc6..5e76b08ab9f 100644
--- a/bundle-plugin-test/integration-test/src/test/java/com/yahoo/BundleIT.java
+++ b/bundle-plugin-test/integration-test/src/test/java/com/yahoo/BundleIT.java
@@ -9,10 +9,10 @@ import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import java.io.File;
-import java.io.FilenameFilter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.Collection;
import java.util.jar.Attributes;
import java.util.jar.JarFile;
@@ -54,19 +54,13 @@ public class BundleIT {
}
}
- private File findBundleJar(String bundleName) {
- File[] componentFile = new File(TEST_BUNDLE_PATH).listFiles(new FilenameFilter() {
- @Override
- public boolean accept(File file, String fileName) {
- return fileName.endsWith("-bundle.jar");
- }
- });
-
- if (componentFile.length != 1) {
- throw new RuntimeException("Failed finding component jar file");
+ static File findBundleJar(String bundleName) {
+ Path bundlePath = Paths.get(TEST_BUNDLE_PATH, bundleName + "-bundle.jar");
+ if (! Files.exists(bundlePath)) {
+ throw new RuntimeException("Failed finding component jar file: " + bundlePath);
}
- return componentFile[0];
+ return bundlePath.toFile();
}
@Test
diff --git a/bundle-plugin-test/integration-test/src/test/java/com/yahoo/ExportPackageVersionIT.java b/bundle-plugin-test/integration-test/src/test/java/com/yahoo/ExportPackageVersionIT.java
new file mode 100644
index 00000000000..e2cee71ca9e
--- /dev/null
+++ b/bundle-plugin-test/integration-test/src/test/java/com/yahoo/ExportPackageVersionIT.java
@@ -0,0 +1,68 @@
+// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.jar.Attributes;
+import java.util.jar.JarFile;
+
+import static com.yahoo.BundleIT.findBundleJar;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.not;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Verifies that the 'useArtifactVersionForExportPackages' setting for the bundle-plugin works as intended.
+ *
+ * @author gjoranv
+ */
+public class ExportPackageVersionIT {
+
+ private static Attributes mainAttributes;
+
+ @BeforeClass
+ public static void setup() {
+ try {
+ File componentJar = findBundleJar("artifact-version-for-exports");
+ mainAttributes = new JarFile(componentJar).getManifest().getMainAttributes();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Test
+ public void artifact_version_without_qualifier_is_used_as_export_version() {
+ // Bundle-Version is artifact version without qualifier
+ String bundleVersion = mainAttributes.getValue("Bundle-Version");
+ String expectedExport = "ai.vespa.noversion;version=" + bundleVersion;
+
+ String exportPackage = mainAttributes.getValue("Export-Package");
+ assertThat(exportPackage, containsString(expectedExport));
+
+ // Verify that there is no qualifier
+ assertThat(exportPackage, not(containsString(expectedExport + ".")));
+ }
+
+ @Test
+ public void explicit_version_in_ExportPackage_annotation_overrides_artifact_version() {
+ String exportPackage = mainAttributes.getValue("Export-Package");
+ assertThat(exportPackage, containsString("ai.vespa.explicitversion;version=2.4.6.RELEASE"));
+ }
+
+ @Test
+ public void artifact_version_of_dependency_is_used_as_export_version_for_package_in_compile_scoped_dependency() {
+ String exportPackage = mainAttributes.getValue("Export-Package");
+ // Verify against the artifact version from the test bundle's pom.
+ assertThat(exportPackage, containsString("ai.vespa.noversion_dep;version=3.2.1"));
+ }
+
+ @Test
+ public void explicit_version_in_ExportPackage_annotation_overrides_artifact_version_of_compile_scoped_dependency() {
+ String exportPackage = mainAttributes.getValue("Export-Package");
+ assertThat(exportPackage, containsString("ai.vespa.explicitversion_dep;version=3.6.9.RELEASE"));
+ }
+
+}