You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ol...@apache.org on 2019/05/28 12:32:52 UTC

[sling-org-apache-sling-testing-paxexam] 04/04: SLING-8432 Provide support for running the Pax Exam tests on Java 9 and higher

This is an automated email from the ASF dual-hosted git repository.

olli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-paxexam.git

commit a63b64ced730b9dfd9ba3ae6b9e2ecceb400d840
Author: Oliver Lietz <ol...@apache.org>
AuthorDate: Tue May 28 14:32:17 2019 +0200

    SLING-8432 Provide support for running the Pax Exam tests on Java 9 and higher
---
 .../apache/sling/testing/paxexam/SlingOptions.java   | 20 ++++++++++++++++++++
 .../sling/testing/paxexam/SlingVersionResolver.java  | 18 ++++++++++++++++++
 .../apache/sling/testing/paxexam/TestSupport.java    |  4 +++-
 src/main/resources/templates/SlingOptions.hbs        | 20 ++++++++++++++++++++
 .../resources/templates/SlingVersionResolver.hbs     | 18 ++++++++++++++++++
 .../testing/paxexam/it/SlingOptionsTestSupport.java  |  4 +++-
 6 files changed, 82 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/apache/sling/testing/paxexam/SlingOptions.java b/src/main/java/org/apache/sling/testing/paxexam/SlingOptions.java
index 013e431..bcb0bf3 100644
--- a/src/main/java/org/apache/sling/testing/paxexam/SlingOptions.java
+++ b/src/main/java/org/apache/sling/testing/paxexam/SlingOptions.java
@@ -25,6 +25,7 @@ import static org.ops4j.pax.exam.CoreOptions.composite;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.systemPackages;
 import static org.ops4j.pax.exam.CoreOptions.systemProperty;
+import static org.ops4j.pax.exam.CoreOptions.vmOption;
 import static org.ops4j.pax.exam.cm.ConfigurationAdminOptions.factoryConfiguration;
 import static org.ops4j.pax.exam.cm.ConfigurationAdminOptions.newConfiguration;
 
@@ -35,6 +36,25 @@ public class SlingOptions {
 
     public static SlingVersionResolver versionResolver = new SlingVersionResolver();
 
+    public static ModifiableCompositeOption backing() {
+        final int version = SlingVersionResolver.getJavaVersion();
+        if (version >= 11) {
+            return composite(
+                mavenBundle().groupId("org.apache.servicemix.specs").artifactId("org.apache.servicemix.specs.annotation-api-1.3").version(versionResolver),
+                mavenBundle().groupId("org.apache.servicemix.specs").artifactId("org.apache.servicemix.specs.activation-api-1.1").version(versionResolver),
+                mavenBundle().groupId("org.apache.servicemix.specs").artifactId("org.apache.servicemix.specs.stax-api-1.2").version(versionResolver),
+                mavenBundle().groupId("org.apache.servicemix.specs").artifactId("org.apache.servicemix.specs.jaxb-api-2.2").version(versionResolver),
+                mavenBundle().groupId("org.apache.servicemix.bundles").artifactId("org.apache.servicemix.bundles.jaxb-impl").version(versionResolver)
+            );
+        } else if (version >= 9) {
+            return composite(
+                vmOption("--add-modules=java.se.ee")
+            );
+        } else {
+            return composite();
+        }
+    }
+
     public static ModifiableCompositeOption config() {
         return composite(
             mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.configadmin").version(versionResolver)
diff --git a/src/main/java/org/apache/sling/testing/paxexam/SlingVersionResolver.java b/src/main/java/org/apache/sling/testing/paxexam/SlingVersionResolver.java
index 08e780d..12e4a1d 100644
--- a/src/main/java/org/apache/sling/testing/paxexam/SlingVersionResolver.java
+++ b/src/main/java/org/apache/sling/testing/paxexam/SlingVersionResolver.java
@@ -34,6 +34,11 @@ public class SlingVersionResolver implements VersionResolver {
     public static final String SLING_GROUP_ID = "org.apache.sling";
 
     public SlingVersionResolver() {
+        versions.put("org.apache.servicemix.specs:org.apache.servicemix.specs.annotation-api-1.3", "1.3_1");
+        versions.put("org.apache.servicemix.specs:org.apache.servicemix.specs.activation-api-1.1", "2.9.0");
+        versions.put("org.apache.servicemix.specs:org.apache.servicemix.specs.stax-api-1.2", "1.2_1");
+        versions.put("org.apache.servicemix.specs:org.apache.servicemix.specs.jaxb-api-2.2", "2.9.0");
+        versions.put("org.apache.servicemix.bundles:org.apache.servicemix.bundles.jaxb-impl", "2.2.11_1");
         versions.put("org.apache.sling:org.apache.sling.scripting.jsp-api", "1.0.0");
         versions.put("org.apache.sling:org.apache.sling.scripting.el-api", "1.0.0");
         versions.put("org.apache.felix:org.apache.felix.configadmin", "1.9.10");
@@ -260,4 +265,17 @@ public class SlingVersionResolver implements VersionResolver {
         return versions.get(key(groupId, artifactId));
     }
 
+    public static int getJavaVersion() {
+        final String version = System.getProperty("java.specification.version");
+        try {
+            if (version.contains(".")) {
+                return Integer.parseInt(version.split("\\.")[1]);
+            } else {
+                return Integer.parseInt(version);
+            }
+        } catch (NumberFormatException e) {
+            return 0;
+        }
+    }
+
 }
diff --git a/src/main/java/org/apache/sling/testing/paxexam/TestSupport.java b/src/main/java/org/apache/sling/testing/paxexam/TestSupport.java
index d21eaf4..c51a760 100644
--- a/src/main/java/org/apache/sling/testing/paxexam/TestSupport.java
+++ b/src/main/java/org/apache/sling/testing/paxexam/TestSupport.java
@@ -33,6 +33,7 @@ import org.ops4j.pax.exam.util.PathUtils;
 import org.ops4j.pax.tinybundles.core.TinyBundle;
 import org.osgi.service.cm.ConfigurationAdmin;
 
+import static org.apache.sling.testing.paxexam.SlingOptions.backing;
 import static org.apache.sling.testing.paxexam.SlingOptions.paxTinybundles;
 import static org.ops4j.pax.exam.CoreOptions.bundle;
 import static org.ops4j.pax.exam.CoreOptions.composite;
@@ -79,7 +80,8 @@ public abstract class TestSupport {
             repository("https://repository.apache.org/snapshots/").id("apache-snapshots").allowSnapshots(),
             CoreOptions.workingDirectory(workingDirectory()),
             mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.testing.paxexam").versionAsInProject(),
-            paxTinybundles()
+            paxTinybundles(),
+            backing()
         );
     }
 
diff --git a/src/main/resources/templates/SlingOptions.hbs b/src/main/resources/templates/SlingOptions.hbs
index 77d6be4..f56eb7a 100644
--- a/src/main/resources/templates/SlingOptions.hbs
+++ b/src/main/resources/templates/SlingOptions.hbs
@@ -25,6 +25,7 @@ import static org.ops4j.pax.exam.CoreOptions.composite;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.systemPackages;
 import static org.ops4j.pax.exam.CoreOptions.systemProperty;
+import static org.ops4j.pax.exam.CoreOptions.vmOption;
 import static org.ops4j.pax.exam.cm.ConfigurationAdminOptions.factoryConfiguration;
 import static org.ops4j.pax.exam.cm.ConfigurationAdminOptions.newConfiguration;
 
@@ -35,6 +36,25 @@ public class SlingOptions {
 
     public static SlingVersionResolver versionResolver = new SlingVersionResolver();
 
+    public static ModifiableCompositeOption backing() {
+        final int version = SlingVersionResolver.getJavaVersion();
+        if (version >= 11) {
+            return composite(
+                mavenBundle().groupId("org.apache.servicemix.specs").artifactId("org.apache.servicemix.specs.annotation-api-1.3").version(versionResolver),
+                mavenBundle().groupId("org.apache.servicemix.specs").artifactId("org.apache.servicemix.specs.activation-api-1.1").version(versionResolver),
+                mavenBundle().groupId("org.apache.servicemix.specs").artifactId("org.apache.servicemix.specs.stax-api-1.2").version(versionResolver),
+                mavenBundle().groupId("org.apache.servicemix.specs").artifactId("org.apache.servicemix.specs.jaxb-api-2.2").version(versionResolver),
+                mavenBundle().groupId("org.apache.servicemix.bundles").artifactId("org.apache.servicemix.bundles.jaxb-impl").version(versionResolver)
+            );
+        } else if (version >= 9) {
+            return composite(
+                vmOption("--add-modules=java.se.ee")
+            );
+        } else {
+            return composite();
+        }
+    }
+
     public static ModifiableCompositeOption config() {
         return composite(
             mavenBundle().groupId("org.apache.felix").artifactId("org.apache.felix.configadmin").version(versionResolver)
diff --git a/src/main/resources/templates/SlingVersionResolver.hbs b/src/main/resources/templates/SlingVersionResolver.hbs
index bb343a8..5d2f1dd 100644
--- a/src/main/resources/templates/SlingVersionResolver.hbs
+++ b/src/main/resources/templates/SlingVersionResolver.hbs
@@ -34,6 +34,11 @@ public class SlingVersionResolver implements VersionResolver {
     public static final String SLING_GROUP_ID = "org.apache.sling";
 
     public SlingVersionResolver() {
+        versions.put("org.apache.servicemix.specs:org.apache.servicemix.specs.annotation-api-1.3", "1.3_1");
+        versions.put("org.apache.servicemix.specs:org.apache.servicemix.specs.activation-api-1.1", "2.9.0");
+        versions.put("org.apache.servicemix.specs:org.apache.servicemix.specs.stax-api-1.2", "1.2_1");
+        versions.put("org.apache.servicemix.specs:org.apache.servicemix.specs.jaxb-api-2.2", "2.9.0");
+        versions.put("org.apache.servicemix.bundles:org.apache.servicemix.bundles.jaxb-impl", "2.2.11_1");
         versions.put("org.apache.sling:org.apache.sling.scripting.jsp-api", "1.0.0");
         versions.put("org.apache.sling:org.apache.sling.scripting.el-api", "1.0.0");
         versions.put("org.apache.felix:org.apache.felix.configadmin", "1.9.10");
@@ -82,4 +87,17 @@ public class SlingVersionResolver implements VersionResolver {
         return versions.get(key(groupId, artifactId));
     }
 
+    public static int getJavaVersion() {
+        final String version = System.getProperty("java.specification.version");
+        try {
+            if (version.contains(".")) {
+                return Integer.parseInt(version.split("\\.")[1]);
+            } else {
+                return Integer.parseInt(version);
+            }
+        } catch (NumberFormatException e) {
+            return 0;
+        }
+    }
+
 }
diff --git a/src/test/java/org/apache/sling/testing/paxexam/it/SlingOptionsTestSupport.java b/src/test/java/org/apache/sling/testing/paxexam/it/SlingOptionsTestSupport.java
index 02e8504..87c1ef5 100644
--- a/src/test/java/org/apache/sling/testing/paxexam/it/SlingOptionsTestSupport.java
+++ b/src/test/java/org/apache/sling/testing/paxexam/it/SlingOptionsTestSupport.java
@@ -25,6 +25,7 @@ import org.ops4j.pax.exam.CoreOptions;
 import org.ops4j.pax.exam.Option;
 import org.ops4j.pax.exam.util.PathUtils;
 
+import static org.apache.sling.testing.paxexam.SlingOptions.backing;
 import static org.ops4j.pax.exam.CoreOptions.bundle;
 import static org.ops4j.pax.exam.CoreOptions.composite;
 import static org.ops4j.pax.exam.CoreOptions.keepCaches;
@@ -45,7 +46,8 @@ public abstract class SlingOptionsTestSupport {
             keepCaches(),
             localMavenRepo(),
             CoreOptions.workingDirectory(workingDirectory()),
-            testBundle("bundle.filename")
+            testBundle("bundle.filename"),
+            backing()
         );
     }