From c7da1d535cae00861da3058995b0be4a8cda9d57 Mon Sep 17 00:00:00 2001 From: Mat Booth Date: Fri, 8 Dec 2017 13:12:38 +0000 Subject: [PATCH] Calculate xmvn/lib path, allow building against older and newer surefire --- tycho-fix-build.patch | 30 -- tycho-surefire-2.19.patch | 389 ++++++++++++++++++ ...urefire.patch => tycho-surefire-2.20.patch | 0 tycho.spec | 25 +- 4 files changed, 406 insertions(+), 38 deletions(-) create mode 100644 tycho-surefire-2.19.patch rename tycho-fix-surefire.patch => tycho-surefire-2.20.patch (100%) diff --git a/tycho-fix-build.patch b/tycho-fix-build.patch index 24b0406..9af873c 100644 --- a/tycho-fix-build.patch +++ b/tycho-fix-build.patch @@ -12,10 +12,6 @@ checking. We must keep previous build version strings different to avoid a cyclic dependency, but doing so causes the version checking to fail, so we must provide a way to disable it. Disable by default. -Update to using Jetty 9 API. - -Update to using maven-surefire 2.18. - Change-Id: Ic8c0514c1fa10ee53580d2654ac6a363ccd66814 --- .../eclipse/tycho/p2/target/ee/CustomEEResolutionHandler.java | 2 +- @@ -38,32 +34,6 @@ index 7afa13e..82962f9 100644 result.add(new SystemCapability(Type.OSGI_EE, name, version)); } else if (PublisherHelper.CAPABILITY_NS_JAVA_PACKAGE.equals(namespace)) { result.add(new SystemCapability(Type.JAVA_PACKAGE, name, version)); -diff --git a/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/HttpServer.java b/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/HttpServer.java -index 6e65627..eefc753 100644 ---- a/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/HttpServer.java -+++ b/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/HttpServer.java -@@ -17,6 +17,11 @@ import java.util.List; - import java.util.Map; - import java.util.Random; - -+import org.eclipse.jetty.security.ConstraintMapping; -+import org.eclipse.jetty.security.ConstraintSecurityHandler; -+import org.eclipse.jetty.security.HashLoginService; -+import org.eclipse.jetty.server.AbstractNetworkConnector; -+import org.eclipse.jetty.server.Connector; - import org.eclipse.jetty.server.Server; - import org.eclipse.jetty.server.ServerConnector; - import org.eclipse.jetty.servlet.ServletContextHandler; -@@ -76,8 +81,7 @@ public class HttpServer extends ExternalResource { - - private static RunningServer startServerOnPort(int port) throws Exception { - Server jetty = new Server(); -- ServerConnector connector = new ServerConnector(jetty); -- connector.setHost("localhost"); -+ AbstractNetworkConnector connector = new ServerConnector(jetty); - connector.setPort(port); - jetty.addConnector(connector); - diff --git a/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java b/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java index b00c344..bc05c2d 100644 --- a/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java diff --git a/tycho-surefire-2.19.patch b/tycho-surefire-2.19.patch new file mode 100644 index 0000000..206a650 --- /dev/null +++ b/tycho-surefire-2.19.patch @@ -0,0 +1,389 @@ +From d4d161e7ccfb21503e906229a37000eb9a821284 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 | 5 +++- + .../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 | 20 ++++++++++------ + tycho-surefire/pom.xml | 2 +- + .../java/org/eclipse/tycho/surefire/TestMojo.java | 27 +++++++++++++++++++--- + 12 files changed, 85 insertions(+), 21 deletions(-) + +diff --git a/pom.xml b/pom.xml +index c43cc8d..6e5fde4 100644 +--- a/pom.xml ++++ b/pom.xml +@@ -390,7 +390,7 @@ + + org.apache.maven.plugins + maven-surefire-plugin +- 2.17 ++ 2.19.1 + + + 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.1.jar, ++ jars/common-junit3-2.19.1.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..97760e2 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,9 +6,12 @@ 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.1.jar, ++ jars/common-junit3-2.19.1.jar, ++ jars/common-junit4-2.19.1.jar + Import-Package: junit.framework;version="3.0.0", + org.junit;version="4.0.0", + org.junit.runner;version="4.0.0", ++ org.junit.runner.manipulation;version="4.0.0", + org.junit.runner.notification;version="4.0.0" + Bundle-Vendor: %providerName +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.1.jar, ++ jars/common-junit48-2.19.1.jar, ++ jars/surefire-grouper-2.19.1.jar, ++ jars/common-junit3-2.19.1.jar, ++ jars/common-junit4-2.19.1.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: 1.0.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.1.jar, ++ jars/surefire-api-2.19.1.jar, ++ jars/maven-surefire-common-2.19.1.jar, ++ jars/plexus-utils-3.0.jar + Bundle-Name: Tycho Surefire OSGi Booter Eclipse Application + 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..31e9d3e 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.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; +@@ -36,12 +38,15 @@ + import org.apache.maven.surefire.booter.PropertiesWrapper; + 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; + import org.apache.maven.surefire.testset.DirectoryScannerParameters; + import org.apache.maven.surefire.testset.RunOrderParameters; ++import org.apache.maven.surefire.testset.TestListResolver; + import org.apache.maven.surefire.testset.TestRequest; + import org.eclipse.core.runtime.CoreException; + import org.eclipse.core.runtime.IStatus; +@@ -62,7 +67,11 @@ + File reportsDir = new File(testProps.getProperty("reportsdirectory")); + String provider = testProps.getProperty("testprovider"); + String runOrder = testProps.getProperty("runOrder"); +- PropertiesWrapper wrapper = new PropertiesWrapper(testProps); ++ Map testPropsMap = new HashMap(); ++ for (Map.Entry e : testProps.entrySet()) { ++ testPropsMap.put((String) e.getKey(), (String) e.getValue()); ++ } ++ PropertiesWrapper wrapper = new PropertiesWrapper(testPropsMap); + List suiteXmlFiles = wrapper.getStringList(BooterConstants.TEST_SUITE_XML_FILES); + + boolean forkRequested = true; +@@ -79,16 +88,17 @@ + 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(suiteXmlFiles, testClassesDir, null); ++ TestRequest testRequest = new TestRequest(suiteXmlFiles, testClassesDir, new TestListResolver(Collections. emptyList())); + 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); ++ trimStacktrace, null, "TESTHASH", false, 0); + ReporterFactory reporterFactory = new DefaultReporterFactory(startupReportConfig); + // API indicates we should use testClassLoader below but surefire also tries + // to load surefire classes using this classloader +@@ -107,12 +117,12 @@ + /* + * 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 + + +- 2.17 ++ 2.19.1 +