< prev index next >

test/langtools/tools/jdeps/MultiReleaseJar.java

Print this page

        

*** 25,49 **** * @test * @bug 8153654 8176333 * @summary Tests for jdeps tool with multi-release jar files * @modules jdk.jdeps/com.sun.tools.jdeps * @library mrjar mrjar/base mrjar/9 mrjar/10 mrjar/v9 mrjar/v10 ! * @build test.* p.* q.* * @run testng MultiReleaseJar */ import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import java.io.File; - import java.io.IOException; import java.io.InputStream; import java.nio.file.Path; import java.nio.file.Paths; - import java.util.concurrent.TimeUnit; import java.util.stream.Stream; public class MultiReleaseJar { Path mrjar; String testJdk; --- 25,47 ---- * @test * @bug 8153654 8176333 * @summary Tests for jdeps tool with multi-release jar files * @modules jdk.jdeps/com.sun.tools.jdeps * @library mrjar mrjar/base mrjar/9 mrjar/10 mrjar/v9 mrjar/v10 ! * @build test.* p.* q.* foo/* * @run testng MultiReleaseJar */ import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import java.io.File; import java.io.InputStream; import java.nio.file.Path; import java.nio.file.Paths; import java.util.stream.Stream; public class MultiReleaseJar { Path mrjar; String testJdk;
*** 63,76 **** cmdPath = Paths.get(testJdk, "bin"); } @Test public void basic() throws Exception { ! // build the jar file Result r = run("jar -cf Version.jar -C base test --release 9 -C 9 test --release 10 -C 10 test"); checkResult(r); // try out a bunch of things r = run("jdeps --multi-release 9 -v missing.jar"); checkResult(r, false, "Warning: Path does not exist: missing.jar"); r = run("jdeps -v Version.jar"); --- 61,80 ---- cmdPath = Paths.get(testJdk, "bin"); } @Test public void basic() throws Exception { ! // build Version.jar, Version_9.jar and main.jar Result r = run("jar -cf Version.jar -C base test --release 9 -C 9 test --release 10 -C 10 test"); checkResult(r); + r = run("jar -cf Version_9.jar -C base test --release 9 -C 9 test"); + checkResult(r); + + r = run("jar -cf Main.jar test/Main.class"); + checkResult(r); + // try out a bunch of things r = run("jdeps --multi-release 9 -v missing.jar"); checkResult(r, false, "Warning: Path does not exist: missing.jar"); r = run("jdeps -v Version.jar");
*** 109,132 **** checkResult(r, false, "Error: invalid argument for option: 8"); r = run("jdeps --multi-release 9.1 -v Version.jar"); checkResult(r, false, "Error: invalid argument for option: 9.1"); ! r = run("jdeps -v -R -cp Version.jar test/Main.class"); checkResult(r, false, "--multi-release option is not set"); ! r = run("jdeps -v -R -cp Version.jar -multi-release 9 test/Main.class"); checkResult(r, false, "Error: unknown option: -multi-release", "Usage: jdeps <options> <path", "use --help" ); ! r = run("jdeps -v -R -cp Version.jar --multi-release 9 test/Main.class"); checkResult(r, true, ! "Main.class ->", ! "Main.class ->", "test.Main", "test.Main", "test.Main", "Version.jar ->", "9/test.NonPublic", --- 113,148 ---- checkResult(r, false, "Error: invalid argument for option: 8"); r = run("jdeps --multi-release 9.1 -v Version.jar"); checkResult(r, false, "Error: invalid argument for option: 9.1"); ! runJdeps("test/Main.class"); ! runJdeps("Main.jar"); ! } ! ! ! private void runJdeps(String path) throws Exception { ! Result r = run("jdeps -v -R -cp Version.jar " + path); checkResult(r, false, "--multi-release option is not set"); ! r = run("jdeps -v -R -cp Version.jar -multi-release 9 " + path); checkResult(r, false, "Error: unknown option: -multi-release", "Usage: jdeps <options> <path", "use --help" ); ! r = run("jdeps -v -R -cp Version.jar --multi-release 9 " + path); ! ! String name = path; ! int index = path.lastIndexOf('/'); ! if (index >= 0) { ! name = path.substring(index + 1, path.length()); ! } checkResult(r, true, ! name + " ->", ! name + " ->", "test.Main", "test.Main", "test.Main", "Version.jar ->", "9/test.NonPublic",
*** 135,148 **** "9/test.Version", "9/test.Version", "9/test.Version" ); ! r = run("jdeps -v -R -cp Version.jar --multi-release 10 test/Main.class"); checkResult(r, true, ! "Main.class ->", ! "Main.class ->", "test.Main", "test.Main", "test.Main", "Version.jar ->", "10/test.Version", --- 151,164 ---- "9/test.Version", "9/test.Version", "9/test.Version" ); ! r = run("jdeps -v -R -cp Version.jar --multi-release 10 " + path); checkResult(r, true, ! name + " ->", ! name + " ->", "test.Main", "test.Main", "test.Main", "Version.jar ->", "10/test.Version",
*** 151,188 **** "10/test.Version", "9/test.NonPublic", "9/test.NonPublic" ); ! r = run("jdeps -v -R -cp Version.jar --multi-release base test/Main.class"); checkResult(r, true, ! "Main.class ->", ! "Main.class ->", "test.Main", "test.Main", "test.Main", "Version.jar ->", "test.Version", "test.Version" ); ! r = run("jdeps -v -R -cp Version.jar --multi-release 9.1 test/Main.class"); checkResult(r, false, "Error: invalid argument for option: 9.1"); ! // Rebuild jar without version 10 ! r = run("jar -cf Version.jar -C base test --release 9 -C 9 test"); ! checkResult(r); ! ! // but ask for version 10 ! r = run("jdeps -v -R -cp Version.jar --multi-release 10 test/Main.class"); checkResult(r, true, ! "Main.class ->", ! "Main.class ->", "test.Main", "test.Main", "test.Main", ! "Version.jar ->", "9/test.NonPublic", "9/test.NonPublic", "9/test.Version", "9/test.Version", "9/test.Version", --- 167,200 ---- "10/test.Version", "9/test.NonPublic", "9/test.NonPublic" ); ! r = run("jdeps -v -R -cp Version.jar --multi-release base " + path); checkResult(r, true, ! name + " ->", ! name + " ->", "test.Main", "test.Main", "test.Main", "Version.jar ->", "test.Version", "test.Version" ); ! r = run("jdeps -v -R -cp Version.jar --multi-release 9.1 " + path); checkResult(r, false, "Error: invalid argument for option: 9.1"); ! // Version_9.jar does not have any version 10 entry ! r = run("jdeps -v -R -cp Version_9.jar --multi-release 10 " + path); checkResult(r, true, ! name + " ->", ! name + " ->", "test.Main", "test.Main", "test.Main", ! "Version_9.jar ->", "9/test.NonPublic", "9/test.NonPublic", "9/test.Version", "9/test.Version", "9/test.Version",
*** 220,229 **** --- 232,286 ---- "9/p.Foo", "9/p.Foo" ); } + @Test + public void modularJar() throws Exception { + Result r = run("jar -cf foo.jar -C base p"); + checkResult(r); + + Path foo = Paths.get(System.getProperty("test.classes")).resolve("modules").resolve("foo"); + r = run("jar -uf foo.jar --release 9 -C " + foo.toString() + " module-info.class --release 10 -C v10 q"); + checkResult(r); + + r = run("jdeps -v --multi-release 10 --module-path foo.jar -m foo"); + checkResult(r, true, + "foo", // module name + "foo.jar", // the path to foo.jar + "requires mandated java.base", // module dependences + "foo -> java.base", + "10/q.Bar", + "10/q.Bar", + "10/q.Gee", + "p.Foo" + ); + + r = run("jdeps --multi-release 9 --module-path foo.jar Main.jar"); + checkResult(r, true, + "Main.jar ->", + "test", + "foo", // module name + "foo.jar", // the path to foo.jar + "requires mandated java.base", // module dependences + "foo -> java.base", + "p" + ); + + r = run("jdeps --multi-release 10 --module-path foo.jar Main.jar"); + checkResult(r, true, + "Main.jar ->", + "test", + "foo", // module name + "foo.jar", // the path to foo.jar + "requires mandated java.base", // module dependences + "foo -> java.base", + "p", + "q" + ); + } + static class Result { final String cmd; final int rc; final String out; final String err;
< prev index next >