From f72d45fb261a3910885a3073c33cc0f98f14392f Mon Sep 17 00:00:00 2001 From: Jan Sievers Date: Tue, 4 Sep 2012 16:02:52 +0200 Subject: [PATCH] Resolve all necessary dependencies for Tycho Surefire. When running an Eclipse bundle's tests, Tycho Surefire resolves its runtime dependencies using a class loader, which is in fact just looking through Bundle-ClassPath. As a result, it must copy over and include system jars in its Bundle-ClassPath. We use Fedora system jars to satisfy these dependencies but even these jars differ slightly in terms of provided classes. This patch addresses this issue. Basically, the jars added to the Bundle-ClassPath in this patch, provide the additional classes that are in the original jars used upstream. Change-Id: I9ef0239eed887fa47c380efcdce968934c788c9f --- pom.xml | 2 +- .../META-INF/MANIFEST.MF | 5 ++-- .../org.eclipse.tycho.surefire.junit/pom.xml | 5 ++++ .../META-INF/MANIFEST.MF | 4 +++- .../org.eclipse.tycho.surefire.junit4/pom.xml | 10 ++++++++ .../META-INF/MANIFEST.MF | 8 ++++--- .../org.eclipse.tycho.surefire.junit47/pom.xml | 10 ++++++++ .../META-INF/MANIFEST.MF | 7 +++--- .../org.eclipse.tycho.surefire.osgibooter/pom.xml | 5 ++++ .../surefire/osgibooter/OsgiSurefireBooter.java | 17 +++++++++----- tycho-surefire/pom.xml | 2 +- .../java/org/eclipse/tycho/surefire/TestMojo.java | 27 +++++++++++++++++++--- 12 files changed, 82 insertions(+), 20 deletions(-) diff --git a/pom.xml b/pom.xml index c43cc8d..6e5fde4 100644 --- a/pom.xml +++ b/pom.xml @@ -380,7 +380,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.17 + 2.19 org.apache.maven.plugins diff --git a/tycho-surefire/org.eclipse.tycho.surefire.junit/META-INF/MANIFEST.MF b/tycho-surefire/org.eclipse.tycho.surefire.junit/META-INF/MANIFEST.MF index da31140..fb5803f 100644 --- a/tycho-surefire/org.eclipse.tycho.surefire.junit/META-INF/MANIFEST.MF +++ b/tycho-surefire/org.eclipse.tycho.surefire.junit/META-INF/MANIFEST.MF @@ -6,6 +6,7 @@ Bundle-Version: 0.23.0 Fragment-Host: org.eclipse.tycho.surefire.osgibooter;bundle-version="0.14.0" Bundle-RequiredExecutionEnvironment: J2SE-1.5, JavaSE-1.6 -Require-Bundle: org.junit;bundle-version="[3.8.0,4.0.0)" -Bundle-ClassPath: jars/surefire-junit3-2.17.jar +Require-Bundle: org.junit;bundle-version="[3.8.0,5.0.0)" +Bundle-ClassPath: jars/surefire-junit3-2.19.jar, + jars/common-junit3-2.19.jar Bundle-Vendor: %providerName diff --git a/tycho-surefire/org.eclipse.tycho.surefire.junit/pom.xml b/tycho-surefire/org.eclipse.tycho.surefire.junit/pom.xml index f99c319..0224cc6 100644 --- a/tycho-surefire/org.eclipse.tycho.surefire.junit/pom.xml +++ b/tycho-surefire/org.eclipse.tycho.surefire.junit/pom.xml @@ -44,6 +44,11 @@ surefire-junit3 ${surefire-version} + + org.apache.maven.surefire + common-junit3 + ${surefire-version} + diff --git a/tycho-surefire/org.eclipse.tycho.surefire.junit4/META-INF/MANIFEST.MF b/tycho-surefire/org.eclipse.tycho.surefire.junit4/META-INF/MANIFEST.MF index 50be5ea..0d8e8d8 100644 --- a/tycho-surefire/org.eclipse.tycho.surefire.junit4/META-INF/MANIFEST.MF +++ b/tycho-surefire/org.eclipse.tycho.surefire.junit4/META-INF/MANIFEST.MF @@ -6,7 +6,9 @@ Bundle-Version: 0.23.0 Fragment-Host: org.eclipse.tycho.surefire.osgibooter;bundle-version="0.14.0" Bundle-RequiredExecutionEnvironment: J2SE-1.5, JavaSE-1.6 -Bundle-ClassPath: jars/surefire-junit4-2.17.jar +Bundle-ClassPath: jars/surefire-junit4-2.19.jar, + jars/common-junit3-2.19.jar, + jars/common-junit4-2.19.jar Import-Package: junit.framework;version="3.0.0", org.junit;version="4.0.0", org.junit.runner;version="4.0.0", diff --git a/tycho-surefire/org.eclipse.tycho.surefire.junit4/pom.xml b/tycho-surefire/org.eclipse.tycho.surefire.junit4/pom.xml index 9628b06..2a09e91 100644 --- a/tycho-surefire/org.eclipse.tycho.surefire.junit4/pom.xml +++ b/tycho-surefire/org.eclipse.tycho.surefire.junit4/pom.xml @@ -44,6 +44,16 @@ surefire-junit4 ${surefire-version} + + org.apache.maven.surefire + common-junit3 + ${surefire-version} + + + org.apache.maven.surefire + common-junit4 + ${surefire-version} + diff --git a/tycho-surefire/org.eclipse.tycho.surefire.junit47/META-INF/MANIFEST.MF b/tycho-surefire/org.eclipse.tycho.surefire.junit47/META-INF/MANIFEST.MF index 595265b..1ac6c5d 100644 --- a/tycho-surefire/org.eclipse.tycho.surefire.junit47/META-INF/MANIFEST.MF +++ b/tycho-surefire/org.eclipse.tycho.surefire.junit47/META-INF/MANIFEST.MF @@ -6,9 +6,11 @@ Bundle-Version: 0.23.0 Fragment-Host: org.eclipse.tycho.surefire.osgibooter;bundle-version="0.16.0" Bundle-RequiredExecutionEnvironment: J2SE-1.5 Bundle-ClassPath: ., - jars/surefire-junit47-2.17.jar, - jars/common-junit48-2.17.jar, - jars/surefire-grouper-2.17.jar + jars/surefire-junit47-2.19.jar, + jars/common-junit48-2.19.jar, + jars/surefire-grouper-2.19.jar, + jars/common-junit3-2.19.jar, + jars/common-junit4-2.19.jar Import-Package: junit.framework;version="3.0.0", org.junit;version="[4.7,5)", org.junit.runner;version="[4.7,5)", diff --git a/tycho-surefire/org.eclipse.tycho.surefire.junit47/pom.xml b/tycho-surefire/org.eclipse.tycho.surefire.junit47/pom.xml index dc49a46..db453ac 100644 --- a/tycho-surefire/org.eclipse.tycho.surefire.junit47/pom.xml +++ b/tycho-surefire/org.eclipse.tycho.surefire.junit47/pom.xml @@ -54,6 +54,16 @@ surefire-grouper ${surefire-version} + + org.apache.maven.surefire + common-junit4 + ${surefire-version} + + + org.apache.maven.surefire + common-junit3 + ${surefire-version} + diff --git a/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/META-INF/MANIFEST.MF b/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/META-INF/MANIFEST.MF index 991edc1..83732d5 100644 --- a/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/META-INF/MANIFEST.MF +++ b/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/META-INF/MANIFEST.MF @@ -5,9 +5,10 @@ Require-Bundle: org.eclipse.osgi;bundle-version="3.2.2", Eclipse-AutoStart: true Bundle-Version: 0.23.0 Bundle-ClassPath: ., - jars/surefire-booter-2.17.jar, - jars/surefire-api-2.17.jar, - jars/maven-surefire-common-2.17.jar + jars/surefire-booter-2.19.jar, + jars/surefire-api-2.19.jar, + jars/maven-surefire-common-2.19.jar, + jars/plexus-utils-3.0.jar Bundle-Name: Tycho Surefire OSGi Booter Eclipse Application (Incubation) Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.eclipse.tycho.surefire.osgibooter;singleton:=true diff --git a/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/pom.xml b/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/pom.xml index 82700eb..3fbc3a3 100644 --- a/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/pom.xml +++ b/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/pom.xml @@ -57,6 +57,11 @@ maven-surefire-common ${surefire-version} + + org.codehaus.plexus + plexus-utils + 3.0 + diff --git a/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/src/main/java/org/eclipse/tycho/surefire/osgibooter/OsgiSurefireBooter.java b/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/src/main/java/org/eclipse/tycho/surefire/osgibooter/OsgiSurefireBooter.java index 19eeab9..7accf71 100644 --- a/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/src/main/java/org/eclipse/tycho/surefire/osgibooter/OsgiSurefireBooter.java +++ b/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/src/main/java/org/eclipse/tycho/surefire/osgibooter/OsgiSurefireBooter.java @@ -21,7 +21,9 @@ import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.Enumeration; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; @@ -34,7 +36,9 @@ import org.apache.maven.surefire.booter.ClasspathConfiguration; import org.apache.maven.surefire.booter.ForkedBooter; import org.apache.maven.surefire.booter.ProviderConfiguration; import org.apache.maven.surefire.booter.ProviderFactory; +import org.apache.maven.surefire.booter.Shutdown; import org.apache.maven.surefire.booter.StartupConfiguration; +import org.apache.maven.surefire.cli.CommandLineOption; import org.apache.maven.surefire.report.ReporterConfiguration; import org.apache.maven.surefire.report.ReporterFactory; import org.apache.maven.surefire.suite.RunResult; @@ -75,13 +79,14 @@ public class OsgiSurefireBooter { new ClassLoaderConfiguration(useSystemClassloader, useManifestOnlyJar), forkRequested, inForkedVM); // TODO dir scanning with no includes done here (done in TestMojo already) // but without dirScannerParams we get an NPE accessing runOrder - DirectoryScannerParameters dirScannerParams = new DirectoryScannerParameters(testClassesDir, emptyList(), - emptyList(), emptyList(), failIfNoTests, runOrder); + DirectoryScannerParameters dirScannerParams = new DirectoryScannerParameters(testClassesDir, Collections.emptyList(), + Collections.emptyList(), Collections.emptyList(), failIfNoTests, runOrder); ReporterConfiguration reporterConfig = new ReporterConfiguration(reportsDir, trimStacktrace); TestRequest testRequest = new TestRequest(null, testClassesDir, null); ProviderConfiguration providerConfiguration = new ProviderConfiguration(dirScannerParams, new RunOrderParameters(runOrder, null), failIfNoTests, reporterConfig, null, testRequest, - extractProviderProperties(testProps), null, false); + extractProviderProperties(testProps), null, false, Collections.emptyList(), + 0, Shutdown.DEFAULT); StartupReportConfiguration startupReportConfig = new StartupReportConfiguration(useFile, printSummary, StartupReportConfiguration.PLAIN_REPORT_FORMAT, redirectTestOutputToFile, disableXmlReport, reportsDir, trimStacktrace, null, "TESTHASH", false, 0); @@ -103,12 +108,12 @@ public class OsgiSurefireBooter { /* * See TestMojo#mergeProviderProperties */ - private static Properties extractProviderProperties(Properties surefireProps) { - Properties providerProps = new Properties(); + private static Map extractProviderProperties(Properties surefireProps) { + Map providerProps = new HashMap(); for (Map.Entry entry : surefireProps.entrySet()) { String key = (String) entry.getKey(); if (key.startsWith("__provider.")) { - providerProps.put(key.substring("__provider.".length()), entry.getValue()); + providerProps.put(key.substring("__provider.".length()), (String)entry.getValue()); } } return providerProps; diff --git a/tycho-surefire/pom.xml b/tycho-surefire/pom.xml index cb2b826..bbe5f29 100644 --- a/tycho-surefire/pom.xml +++ b/tycho-surefire/pom.xml @@ -26,7 +26,7 @@ Tycho Surefire Parent (Incubation) - 2.17 + 2.19