< 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 >