summaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
authorJan Matèrne <jhm@apache.org>2016-09-21 09:02:58 +0200
committerJan Matèrne <jhm@apache.org>2016-09-21 09:02:58 +0200
commitaf3d90cce9d18ff6faa4f2c1513dcf32d7cb7bb8 (patch)
tree76d47244d834aeb7682fcbac02feff676b2890a7 /src/tests
parente843dd287f13bc9e87b1af1201d2e557fdcc1897 (diff)
downloadant-af3d90cce9d18ff6faa4f2c1513dcf32d7cb7bb8.tar.gz
JEP-238: create a MultiVersion-JAR with current possibilities
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/antunit/taskdefs/jar-test.xml61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/tests/antunit/taskdefs/jar-test.xml b/src/tests/antunit/taskdefs/jar-test.xml
index c2c8834eb..bd0026a77 100644
--- a/src/tests/antunit/taskdefs/jar-test.xml
+++ b/src/tests/antunit/taskdefs/jar-test.xml
@@ -249,4 +249,65 @@ Main-Class: MyClass
resource="${output}/META-INF/MANIFEST.MF"/>
</target>
+ <target name="testMultiReleaseJar" description="http://openjdk.java.net/jeps/238">
+ <!-- Preparation of the 'MultiRelease-Project' -->
+ <property name="java8.src" value="${input}/src/java"/>
+ <property name="java9.src" value="${input}/src/java9"/>
+ <property name="java10.src" value="${input}/src/java10"/>
+ <property name="java8.classes" value="${input}/build/classes"/>
+ <property name="java9.classes" value="${input}/build/classes9"/>
+ <property name="java10.classes" value="${input}/build/classes10"/>
+ <macrodef name="create">
+ <attribute name="version" />
+ <sequential>
+ <local name="src"/>
+ <local name="classes"/>
+ <property name="src" value="${java@{version}.src}"/>
+ <property name="classes" value="${java@{version}.classes}"/>
+ <mkdir dir="${src}/org/apache/ant/test"/>
+ <echo file="${src}/org/apache/ant/test/MRJarTest.java">
+ package org.apache.ant.test;
+ public class MRJarTest {
+ public static final String VERSION = "Java@{version}";
+ }
+ </echo>
+ <mkdir dir="${classes}"/>
+ <javac srcdir="${src}" destdir="${classes}" debug="on" includeantruntime="false"/>
+ </sequential>
+ </macrodef>
+ <create version="8"/>
+ <create version="9"/>
+ <create version="10"/>
+
+ <!-- Now create the MultiReleaseJar -->
+ <jar destfile="${antunit.tmpdir}/mrjar.jar">
+ <manifest>
+ <!-- special mf-entry according to the spec -->
+ <attribute name="Multi-Release" value="true"/>
+ </manifest>
+ <!-- directory structure according to the spec ... -->
+ <!-- ... default classes loadable by old (<Java9) versions -->
+ <fileset dir="${java8.classes}"/>
+ <!-- ... per release classes, require Java9+ for loadable via standard ClassLoader -->
+ <zipfileset prefix="META-INF/versions/9/" dir="${java9.classes}"/>
+ <zipfileset prefix="META-INF/versions/10/" dir="${java10.classes}"/>
+ </jar>
+
+ <!-- Now some tests -->
+ <loadresource property="valueFrom8">
+ <javaconstant name="org.apache.ant.test.MRJarTest.VERSION">
+ <classpath>
+ <pathelement location="${antunit.tmpdir}/mrjar.jar"/>
+ </classpath>
+ </javaconstant>
+ </loadresource>
+ <au:assertEquals expected="Java8" actual="${valueFrom8}"/>
+ <au:assertNestedResourceExists>
+ <zipentry zipfile="${antunit.tmpdir}/mrjar.jar" name="META-INF/versions/9/org/apache/ant/test/MRJarTest.class"/>
+ </au:assertNestedResourceExists>
+ <au:assertNestedResourceExists>
+ <zipentry zipfile="${antunit.tmpdir}/mrjar.jar" name="META-INF/versions/10/org/apache/ant/test/MRJarTest.class"/>
+ </au:assertNestedResourceExists>
+ </target>
+
</project>