test/jdk/tools/jar/multiRelease/Basic.java

Print this page

        

*** 21,30 **** --- 21,31 ---- * questions. */ /* * @test + # @bug 8186087 * @library /test/lib * @modules java.base/jdk.internal.misc * jdk.compiler * jdk.jartool * @build jdk.test.lib.util.FileUtils
*** 344,386 **** FileUtils.deleteFileIfExistsWithRetry(Paths.get(jarfile)); FileUtils.deleteFileTreeWithRetry(Paths.get(usr, "classes")); } @Test - // resources with same name in different versions - // this is okay but produces warning - public void test08() throws Throwable { - String jarfile = "test.jar"; - - compile("test01"); //use same data as test01 - - Path classes = Paths.get("classes"); - - // add a resource to the base - Path source = Paths.get(src, "data", "test01", "base", "version"); - Files.copy(source.resolve("Version.java"), classes.resolve("base") - .resolve("version").resolve("Version.java")); - - jar("cf", jarfile, "-C", classes.resolve("base").toString(), ".", - "--release", "9", "-C", classes.resolve("v9").toString(), ".") - .shouldHaveExitValue(SUCCESS) - .shouldBeEmpty(); - - // now add a different resource with same name to META-INF/version/9 - Files.copy(source.resolve("Main.java"), classes.resolve("v9") - .resolve("version").resolve("Version.java")); - - jar("cf", jarfile, "-C", classes.resolve("base").toString(), ".", - "--release", "9", "-C", classes.resolve("v9").toString(), ".") - .shouldHaveExitValue(SUCCESS) - .shouldContain("multiple resources with same name"); - - FileUtils.deleteFileIfExistsWithRetry(Paths.get(jarfile)); - FileUtils.deleteFileTreeWithRetry(Paths.get(usr, "classes")); - } - - @Test // a class with an internal name different from the external name public void test09() throws Throwable { String jarfile = "test.jar"; compile("test01"); //use same data as test01 --- 345,354 ----
*** 449,467 **** --- 417,448 ---- "-C", classes.resolve("base").toString(), ".", "--release", "9", "-C", classes.resolve("v9").toString(), ".") .shouldNotHaveExitValue(SUCCESS) .asLines(); + /* "META-INF/versions/9/version/Nested$nested.class" is really NOT isolated assertTrue(output.size() == 4); + assertTrue(output.size() == 3); assertTrue(output.get(0).contains("an isolated nested class"), output.get(0)); assertTrue(output.get(1).contains("contains a new public class"), output.get(1)); assertTrue(output.get(2).contains("an isolated nested class"), output.get(2)); assertTrue(output.get(3).contains("invalid multi-release jar file"), output.get(3)); + assertTrue(output.get(2).contains("invalid multi-release jar file"), + output.get(2)); + */ + + assertTrue(output.size() == 3); + assertTrue(output.get(0).contains("an isolated nested class"), + output.get(0)); + assertTrue(output.get(1).contains("contains a new public class"), + output.get(1)); + assertTrue(output.get(2).contains("invalid multi-release jar file"), + output.get(2)); FileUtils.deleteFileIfExistsWithRetry(Paths.get(jarfile)); FileUtils.deleteFileTreeWithRetry(Paths.get(usr, "classes")); }
*** 493,502 **** --- 474,508 ---- FileUtils.deleteFileIfExistsWithRetry(Paths.get(jarfile)); FileUtils.deleteFileTreeWithRetry(Paths.get(usr, "classes")); } @Test + // assure the nested-nested classes are acceptable + public void test13() throws Throwable { + String jarfile = "test.jar"; + + compile("test01"); //use same data as test01 + + Path classes = Paths.get("classes"); + + // add a base class with a nested and nested-nested class + Path source = Paths.get(src, "data", "test13", "base", "version"); + javac(classes.resolve("base"), source.resolve("Nested.java")); + + // add a versioned class with a nested and nested-nested class + source = Paths.get(src, "data", "test13", "v10", "version"); + javac(classes.resolve("v10"), source.resolve("Nested.java")); + + jar("cf", jarfile, "-C", classes.resolve("base").toString(), ".", + "--release", "10", "-C", classes.resolve("v10").toString(), ".") + .shouldHaveExitValue(SUCCESS); + + FileUtils.deleteFileIfExistsWithRetry(Paths.get(jarfile)); + FileUtils.deleteFileTreeWithRetry(Paths.get(usr, "classes")); + } + + @Test public void testCustomManifest() throws Throwable { String jarfile = "test.jar"; compile("test01");