Fix Surfire test plugin.

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 commit is contained in:
Roland Grunberg 2012-05-29 15:04:45 -04:00
parent 4a3b7d4fce
commit 416b074682
5 changed files with 196 additions and 27 deletions

View File

@ -670,8 +670,8 @@ diff -rauN tycho-0.14.x.old/tycho-surefire/org.eclipse.tycho.surefire.osgibooter
--- tycho-0.14.x.old/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/META-INF/MANIFEST.MF 2012-02-24 06:40:15.000000000 -0500
+++ tycho-0.14.x/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/META-INF/MANIFEST.MF 2012-03-30 14:49:39.000000000 -0400
@@ -7,7 +7,7 @@
jars/surefire-booter-2.10.jar,
jars/surefire-api-2.10.jar,
jars/plexus-utils-3.0.jar,
jars/maven-surefire-common-2.10.jar
-Bundle-Version: 0.14.1
+Bundle-Version: 0.14.1.qualifier

View File

@ -97,16 +97,6 @@
} catch (BundleException e) {
throw new OsgiManifestParserException(location, e);
}
--- ./tycho-0.14.0.old/tycho-surefire/org.eclipse.tycho.surefire.junit/META-INF/MANIFEST.MF 2012-02-06 10:26:59.000000000 -0500
+++ ./tycho-0.14.0/tycho-surefire/org.eclipse.tycho.surefire.junit/META-INF/MANIFEST.MF 2012-02-14 12:04:02.275017810 -0500
@@ -6,6 +6,6 @@
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)"
+Require-Bundle: org.junit;bundle-version="[3.8.0,4.9.0)"
Bundle-ClassPath: jars/surefire-junit3-2.10.jar
Bundle-Vendor: %providerName
--- ./tycho-0.14.x.old/tycho-core/src/main/java/org/eclipse/tycho/core/utils/EEVersion.java 2012-02-24 06:40:15.000000000 -0500
+++ ./tycho-0.14.x/tycho-core/src/main/java/org/eclipse/tycho/core/utils/EEVersion.java 2012-05-03 14:09:09.000000000 -0400
@@ -18,7 +18,7 @@

160
tycho-fix-surefire.patch Normal file
View File

@ -0,0 +1,160 @@
From 5ddb88911071664de0e07f7f247aeeaedecc8cab Mon Sep 17 00:00:00 2001
From: Roland Grunberg <rgrunber@redhat.com>
Date: Tue, 29 May 2012 14:27:27 -0400
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.
---
pom.xml | 2 +-
.../META-INF/MANIFEST.MF | 5 +++--
.../build.properties | 2 +-
.../org.eclipse.tycho.surefire.junit/pom.xml | 5 +++++
.../META-INF/MANIFEST.MF | 4 +++-
.../build.properties | 2 +-
.../org.eclipse.tycho.surefire.junit4/pom.xml | 10 ++++++++++
.../META-INF/MANIFEST.MF | 3 ++-
.../org.eclipse.tycho.surefire.osgibooter/pom.xml | 5 +++++
9 files changed, 31 insertions(+), 7 deletions(-)
diff --git a/pom.xml b/pom.xml
index e9d8624..ca20999 100644
--- a/pom.xml
+++ b/pom.xml
@@ -79,7 +79,7 @@
<junitVersion>3.8.2</junitVersion>
<plexusVersion>1.5.5</plexusVersion>
<plexusInterpolationVersion>1.14</plexusInterpolationVersion>
- <plexusUtilsVersion>2.0.4</plexusUtilsVersion>
+ <plexusUtilsVersion>3.0</plexusUtilsVersion>
<sisuInjectVersion>1.4.2</sisuInjectVersion>
<wagonVersion>1.0-beta-6</wagonVersion>
<securityDispatcherVersion>1.3</securityDispatcherVersion>
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 9264109..a27abe4 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.14.1
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.10.jar
+Require-Bundle: org.junit;bundle-version="[3.8.0,4.9.0)"
+Bundle-ClassPath: jars/surefire-junit3-2.10.jar,
+ jars/common-junit3-2.10.jar
Bundle-Vendor: %providerName
diff --git a/tycho-surefire/org.eclipse.tycho.surefire.junit/build.properties b/tycho-surefire/org.eclipse.tycho.surefire.junit/build.properties
index 499ce76..fe88b19 100644
--- a/tycho-surefire/org.eclipse.tycho.surefire.junit/build.properties
+++ b/tycho-surefire/org.eclipse.tycho.surefire.junit/build.properties
@@ -9,5 +9,5 @@
# Sonatype Inc. - initial API and implementation
###############################################################################
bin.includes = META-INF/,\
- jars/surefire-junit3-2.10.jar,\
+ jars/,\
plugin.properties
diff --git a/tycho-surefire/org.eclipse.tycho.surefire.junit/pom.xml b/tycho-surefire/org.eclipse.tycho.surefire.junit/pom.xml
index 2a4afc8..ae35035 100644
--- a/tycho-surefire/org.eclipse.tycho.surefire.junit/pom.xml
+++ b/tycho-surefire/org.eclipse.tycho.surefire.junit/pom.xml
@@ -47,6 +47,11 @@
<artifactId>surefire-junit3</artifactId>
<version>${surefire-version}</version>
</artifactItem>
+ <artifactItem>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>common-junit3</artifactId>
+ <version>${surefire-version}</version>
+ </artifactItem>
</artifactItems>
</configuration>
</execution>
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 bbb54a8..82e66d1 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.14.1
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.10.jar
+Bundle-ClassPath: jars/surefire-junit4-2.10.jar,
+ jars/common-junit3-2.10.jar,
+ jars/common-junit4-2.10.jar
Import-Package: junit.framework;version="4.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/build.properties b/tycho-surefire/org.eclipse.tycho.surefire.junit4/build.properties
index b787149..fe88b19 100644
--- a/tycho-surefire/org.eclipse.tycho.surefire.junit4/build.properties
+++ b/tycho-surefire/org.eclipse.tycho.surefire.junit4/build.properties
@@ -9,5 +9,5 @@
# Sonatype Inc. - initial API and implementation
###############################################################################
bin.includes = META-INF/,\
- jars/surefire-junit4-2.10.jar,\
+ jars/,\
plugin.properties
diff --git a/tycho-surefire/org.eclipse.tycho.surefire.junit4/pom.xml b/tycho-surefire/org.eclipse.tycho.surefire.junit4/pom.xml
index 08ab16a..2ed7c3a 100644
--- a/tycho-surefire/org.eclipse.tycho.surefire.junit4/pom.xml
+++ b/tycho-surefire/org.eclipse.tycho.surefire.junit4/pom.xml
@@ -71,6 +71,16 @@
<artifactId>surefire-junit4</artifactId>
<version>${surefire-version}</version>
</artifactItem>
+ <artifactItem>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>common-junit3</artifactId>
+ <version>${surefire-version}</version>
+ </artifactItem>
+ <artifactItem>
+ <groupId>org.apache.maven.surefire</groupId>
+ <artifactId>common-junit4</artifactId>
+ <version>${surefire-version}</version>
+ </artifactItem>
</artifactItems>
</configuration>
</execution>
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 fda57c6..ab5de08 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,7 +5,8 @@ Require-Bundle: org.eclipse.osgi;bundle-version="3.2.2",
Eclipse-AutoStart: true
Bundle-ClassPath: .,
jars/surefire-booter-2.10.jar,
- jars/surefire-api-2.10.jar
+ jars/surefire-api-2.10.jar,
+ jars/plexus-utils-3.0.jar
Bundle-Version: 0.14.1
Bundle-Name: Tycho Surefire OSGi Booter Eclipse Application (Incubation)
Bundle-ManifestVersion: 2
diff --git a/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/pom.xml b/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/pom.xml
index cd5b2d7..d1d24da 100644
--- a/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/pom.xml
+++ b/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/pom.xml
@@ -52,6 +52,11 @@
<artifactId>surefire-booter</artifactId>
<version>${surefire-version}</version>
</artifactItem>
+ <artifactItem>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ <version>${plexusUtilsVersion}</version>
+ </artifactItem>
</artifactItems>
</configuration>
</execution>
--
1.7.7.6

View File

@ -11,12 +11,12 @@
throw new MojoFailureException(message);
--- ./tycho-0.14.x.old/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/META-INF/MANIFEST.MF 2012-02-24 06:40:15.000000000 -0500
+++ ./tycho-0.14.x/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/META-INF/MANIFEST.MF 2012-03-09 14:53:53.000000000 -0500
@@ -5,7 +5,8 @@
Eclipse-AutoStart: true
@@ -6,7 +6,8 @@
Bundle-ClassPath: .,
jars/surefire-booter-2.10.jar,
- jars/surefire-api-2.10.jar
+ jars/surefire-api-2.10.jar,
jars/surefire-api-2.10.jar,
- jars/plexus-utils-3.0.jar
+ jars/plexus-utils-3.0.jar,
+ jars/maven-surefire-common-2.10.jar
Bundle-Version: 0.14.1
Bundle-Name: Tycho Surefire OSGi Booter Eclipse Application (Incubation)
@ -70,10 +70,10 @@
RunResult result = surefireStarter.runSuitesInProcess();
--- ./tycho-0.14.x.old/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/pom.xml 2012-02-24 06:40:15.000000000 -0500
+++ ./tycho-0.14.x/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/pom.xml 2012-03-09 14:45:54.987999986 -0500
@@ -51,6 +51,13 @@
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-booter</artifactId>
<version>${surefire-version}</version>
@@ -56,6 +56,13 @@
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>${plexusUtilsVersion}</version>
+
+ </artifactItem>
+ <artifactItem>
@ -84,3 +84,17 @@
</artifactItem>
</artifactItems>
</configuration>
--- ./tycho-0.14.x.old/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/src/main/java/org/eclipse/tycho/surefire/osgibooter/TychoClasspathConfiguration.java 2012-02-24 06:40:15.000000000 -0500
+++ ./tycho-0.14.x/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/src/main/java/org/eclipse/tycho/surefire/osgibooter/TychoClasspathConfiguration.java 2012-05-29 16:45:39.000000000 -0400
@@ -30,6 +30,11 @@
}
@Override
+ public ClassLoader createInprocSurefireClassLoader(ClassLoader parent) throws SurefireExecutionException {
+ return surefireClassLoader;
+ }
+
+ @Override
public ClassLoader createTestClassLoader() throws SurefireExecutionException {
return testClassLoader;
}

View File

@ -1,4 +1,4 @@
%global bootstrap 0
%global bootstrap 1
%if %{bootstrap}
%global snap -SNAPSHOT
@ -8,7 +8,7 @@
Name: tycho
Version: 0.14.1
Release: 4%{?dist}
Release: 4.1%{?dist}
Summary: Plugins and extensions for building Eclipse plugins and OSGI bundles with Maven
Group: Development/Libraries
@ -26,14 +26,15 @@ Source1: EmptyMojo.java
Source2: depmap.xml
Patch0: %{name}-fix-build.patch
Patch1: %{name}-fix-surefire.patch
# Upstream builds against maven-surefire 2.10 but in rawhide we have 2.12
Patch1: %{name}-maven-surefire.patch
Patch2: %{name}-use-custom-resolver.patch
Patch2: %{name}-maven-surefire.patch
Patch3: %{name}-use-custom-resolver.patch
# Set some temporary build version so that the bootstrapped build has
# a different version from the nonbootstrapped. Otherwise there will
# be cyclic dependencies.
%if %{bootstrap}
Patch3: %{name}-bootstrap.patch
Patch4: %{name}-bootstrap.patch
%endif
BuildArch: noarch
@ -109,10 +110,11 @@ This package contains the API documentation for %{name}.
%setup -q -n %{name}-0.14.x
%patch0 -p2
%patch1 -p2
%patch2 -p1
%if %{bootstrap}
%patch1 -p1
%patch2 -p2
%patch3 -p1
%if %{bootstrap}
%patch4 -p1
%endif
find tycho-core -iname '*html' -delete
@ -193,6 +195,9 @@ cp -pr target/site/api*/* %{buildroot}%{_javadocdir}/%{name}
%{_javadocdir}/%{name}
%changelog
* Tue May 29 2012 Roland Grunberg <rgrunber@redhat.com> 0.14.1-4.1
- Fix Tycho Surfire to run Eclipse test bundles.
* Wed May 23 2012 Roland Grunberg <rgrunber@redhat.com> 0.14.1-4
- Non-bootstrap build.