< prev index next >

test/jdk/jdk/nio/zipfs/jarfs/MultiReleaseJarTest.java

Print this page

        

*** 21,31 **** * questions. */ /* * @test ! * @bug 8144355 8144062 8176709 8194070 8193802 * @summary Test aliasing additions to ZipFileSystem for multi-release jar files * @library /lib/testlibrary/java/util/jar * @modules jdk.compiler * jdk.jartool * jdk.zipfs --- 21,31 ---- * questions. */ /* * @test ! * @bug 8144355 8144062 8176709 8194070 8193802 8231093 * @summary Test aliasing additions to ZipFileSystem for multi-release jar files * @library /lib/testlibrary/java/util/jar * @modules jdk.compiler * jdk.jartool * jdk.zipfs
*** 86,97 **** @DataProvider(name="strings") public Object[][] createStrings() { return new Object[][]{ {"runtime", MAJOR_VERSION}, ! {"-20", 8}, ! {"0", 8}, {"8", 8}, {"9", 9}, {Integer.toString(MAJOR_VERSION), MAJOR_VERSION}, {Integer.toString(MAJOR_VERSION+1), MAJOR_VERSION}, {"50", MAJOR_VERSION} --- 86,96 ---- @DataProvider(name="strings") public Object[][] createStrings() { return new Object[][]{ {"runtime", MAJOR_VERSION}, ! {null, 8}, {"8", 8}, {"9", 9}, {Integer.toString(MAJOR_VERSION), MAJOR_VERSION}, {Integer.toString(MAJOR_VERSION+1), MAJOR_VERSION}, {"50", MAJOR_VERSION}
*** 99,110 **** } @DataProvider(name="integers") public Object[][] createIntegers() { return new Object[][] { ! {Integer.valueOf(-5), 8}, ! {Integer.valueOf(0), 8}, {Integer.valueOf(8), 8}, {Integer.valueOf(9), 9}, {Integer.valueOf(MAJOR_VERSION), MAJOR_VERSION}, {Integer.valueOf(MAJOR_VERSION + 1), MAJOR_VERSION}, {Integer.valueOf(100), MAJOR_VERSION} --- 98,108 ---- } @DataProvider(name="integers") public Object[][] createIntegers() { return new Object[][] { ! {null, 8}, {Integer.valueOf(8), 8}, {Integer.valueOf(9), 9}, {Integer.valueOf(MAJOR_VERSION), MAJOR_VERSION}, {Integer.valueOf(MAJOR_VERSION + 1), MAJOR_VERSION}, {Integer.valueOf(100), MAJOR_VERSION}
*** 112,139 **** } @DataProvider(name="versions") public Object[][] createVersions() { return new Object[][] { {Version.parse("8"), 8}, {Version.parse("9"), 9}, {Version.parse(Integer.toString(MAJOR_VERSION)), MAJOR_VERSION}, {Version.parse(Integer.toString(MAJOR_VERSION) + 1), MAJOR_VERSION}, {Version.parse("100"), MAJOR_VERSION} }; } // Not the best test but all I can do since ZipFileSystem and JarFileSystem // are not public, so I can't use (fs instanceof ...) @Test public void testNewFileSystem() throws Exception { Map<String,String> env = new HashMap<>(); // no configuration, treat multi-release jar as unversioned try (FileSystem fs = FileSystems.newFileSystem(mruri, env)) { Assert.assertTrue(readAndCompare(fs, 8)); } ! env.put("multi-release", "runtime"); // a configuration and jar file is multi-release try (FileSystem fs = FileSystems.newFileSystem(mruri, env)) { Assert.assertTrue(readAndCompare(fs, MAJOR_VERSION)); } // a configuration but jar file is unversioned --- 110,151 ---- } @DataProvider(name="versions") public Object[][] createVersions() { return new Object[][] { + {null, 8}, {Version.parse("8"), 8}, {Version.parse("9"), 9}, {Version.parse(Integer.toString(MAJOR_VERSION)), MAJOR_VERSION}, {Version.parse(Integer.toString(MAJOR_VERSION) + 1), MAJOR_VERSION}, {Version.parse("100"), MAJOR_VERSION} }; } + @DataProvider(name="invalidVersions") + public Object[][] invalidVersions() { + return new Object[][] { + {Map.of("releaseVersion", "")}, + {Map.of("releaseVersion", "invalid")}, + {Map.of("releaseVersion", "0")}, + {Map.of("releaseVersion", "-1")}, + {Map.of("releaseVersion", "11.0.1")}, + {Map.of("releaseVersion",Integer.valueOf(0))}, + {Map.of("releaseVersion",Integer.valueOf(-1))} + }; + } + // Not the best test but all I can do since ZipFileSystem and JarFileSystem // are not public, so I can't use (fs instanceof ...) @Test public void testNewFileSystem() throws Exception { Map<String,String> env = new HashMap<>(); // no configuration, treat multi-release jar as unversioned try (FileSystem fs = FileSystems.newFileSystem(mruri, env)) { Assert.assertTrue(readAndCompare(fs, 8)); } ! env.put("releaseVersion", "runtime"); // a configuration and jar file is multi-release try (FileSystem fs = FileSystems.newFileSystem(mruri, env)) { Assert.assertTrue(readAndCompare(fs, MAJOR_VERSION)); } // a configuration but jar file is unversioned
*** 148,181 **** return src.contains("return " + expected); } @Test(dataProvider="strings") public void testStrings(String value, int expected) throws Throwable { ! stringEnv.put("multi-release", value); runTest(stringEnv, expected); } @Test(dataProvider="integers") public void testIntegers(Integer value, int expected) throws Throwable { ! integerEnv.put("multi-release", value); runTest(integerEnv, expected); } @Test(dataProvider="versions") public void testVersions(Version value, int expected) throws Throwable { ! versionEnv.put("multi-release", value); runTest(versionEnv, expected); } @Test public void testShortJar() throws Throwable { ! integerEnv.put("multi-release", Integer.valueOf(MAJOR_VERSION)); runTest(smruri, integerEnv, MAJOR_VERSION); ! integerEnv.put("multi-release", Integer.valueOf(9)); runTest(smruri, integerEnv, 8); } private void runTest(Map<String,?> env, int expected) throws Throwable { runTest(mruri, env, expected); } private void runTest(URI uri, Map<String,?> env, int expected) throws Throwable { --- 160,230 ---- return src.contains("return " + expected); } @Test(dataProvider="strings") public void testStrings(String value, int expected) throws Throwable { ! stringEnv.put("releaseVersion", value); runTest(stringEnv, expected); } @Test(dataProvider="integers") public void testIntegers(Integer value, int expected) throws Throwable { ! integerEnv.put("releaseVersion", value); runTest(integerEnv, expected); } @Test(dataProvider="versions") public void testVersions(Version value, int expected) throws Throwable { ! versionEnv.put("releaseVersion", value); runTest(versionEnv, expected); } @Test public void testShortJar() throws Throwable { ! integerEnv.put("releaseVersion", Integer.valueOf(MAJOR_VERSION)); runTest(smruri, integerEnv, MAJOR_VERSION); ! integerEnv.put("releaseVersion", Integer.valueOf(9)); runTest(smruri, integerEnv, 8); } + /** + * Validate that an invalid value for the "releaseVersion" property throws + * an {@code IllegalArgumentException} + * @param env Zip FS map + * @throws Throwable Exception thrown for anything other than the expected + * IllegalArgumentException + */ + @Test(dataProvider="invalidVersions") + public void testInvalidVersions(Map<String,?> env) throws Throwable { + Assert.assertThrows(IllegalArgumentException.class, () -> + FileSystems.newFileSystem(Path.of(userdir, + "multi-release.jar"), env)); + } + + // The following tests are for backwards compatibility to validate that + // the original property still works + @Test(dataProvider="strings") + public void testMRStrings(String value, int expected) throws Throwable { + stringEnv.clear(); + stringEnv.put("multi-release", value); + runTest(stringEnv, expected); + } + + @Test(dataProvider="integers") + public void testMRIntegers(Integer value, int expected) throws Throwable { + integerEnv.clear(); + integerEnv.put("multi-release", value); + runTest(integerEnv, expected); + } + + @Test(dataProvider="versions") + public void testMRVersions(Version value, int expected) throws Throwable { + versionEnv.clear(); + versionEnv.put("multi-release", value); + runTest(versionEnv, expected); + } + private void runTest(Map<String,?> env, int expected) throws Throwable { runTest(mruri, env, expected); } private void runTest(URI uri, Map<String,?> env, int expected) throws Throwable {
*** 211,221 **** Path jfpath = Paths.get(jfname); URI uri = new URI("jar", jfpath.toUri().toString() , null); JarBuilder jb = new JarBuilder(jfname); jb.addAttribute("Multi-Release", "true"); jb.build(); ! Map<String,String> env = Map.of("multi-release", "runtime"); try (FileSystem fs = FileSystems.newFileSystem(uri, env)) { Assert.assertTrue(true); } Files.delete(jfpath); } --- 260,270 ---- Path jfpath = Paths.get(jfname); URI uri = new URI("jar", jfpath.toUri().toString() , null); JarBuilder jb = new JarBuilder(jfname); jb.addAttribute("Multi-Release", "true"); jb.build(); ! Map<String,String> env = Map.of("releaseVersion", "runtime"); try (FileSystem fs = FileSystems.newFileSystem(uri, env)) { Assert.assertTrue(true); } Files.delete(jfpath); }
*** 226,236 **** throws Exception { String fileName = "custom-mr" + JAR_COUNT.incrementAndGet() + ".jar"; creator.buildCustomMultiReleaseJar(fileName, value, Map.of(), /*addEntries*/true); ! Map<String,String> env = Map.of("multi-release", "runtime"); Path filePath = Paths.get(userdir, fileName); String ssp = filePath.toUri().toString(); URI customJar = new URI("jar", ssp , null); try (FileSystem fs = FileSystems.newFileSystem(customJar, env)) { if (expected) { --- 275,285 ---- throws Exception { String fileName = "custom-mr" + JAR_COUNT.incrementAndGet() + ".jar"; creator.buildCustomMultiReleaseJar(fileName, value, Map.of(), /*addEntries*/true); ! Map<String,String> env = Map.of("releaseVersion", "runtime"); Path filePath = Paths.get(userdir, fileName); String ssp = filePath.toUri().toString(); URI customJar = new URI("jar", ssp , null); try (FileSystem fs = FileSystems.newFileSystem(customJar, env)) { if (expected) {
< prev index next >