diff -r fcd74557a9cc -r 47c879f478d2 test/jdk/jdk/nio/zipfs/jarfs/MultiReleaseJarTest.java --- a/test/jdk/jdk/nio/zipfs/jarfs/MultiReleaseJarTest.java Thu Nov 21 23:32:11 2019 -0500 +++ b/test/jdk/jdk/nio/zipfs/jarfs/MultiReleaseJarTest.java Fri Nov 22 09:25:09 2019 +0100 @@ -50,6 +50,8 @@ public class MultiReleaseJarTest { final private int MAJOR_VERSION = Runtime.version().feature(); + private static final String PROPERTY_RELEASE_VERSION = "releaseVersion"; + private static final String PROPERTY_MULTI_RELEASE = "multi-release"; final private String userdir = System.getProperty("user.dir","."); final private CreateMultiReleaseTestJars creator = new CreateMultiReleaseTestJars(); @@ -88,56 +90,56 @@ @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} + {"runtime", MAJOR_VERSION, "8"}, + {null, 8, Integer.toString(MAJOR_VERSION)}, + {"8", 8, "9"}, + {"9", 9, null}, + {Integer.toString(MAJOR_VERSION), MAJOR_VERSION, "8"}, + {Integer.toString(MAJOR_VERSION+1), MAJOR_VERSION, "8"}, + {"50", MAJOR_VERSION, "9"} }; } @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} + {null, 8, Integer.valueOf(9)}, + {Integer.valueOf(8), 8, Integer.valueOf(9)}, + {Integer.valueOf(9), 9, Integer.valueOf(MAJOR_VERSION)}, + {Integer.valueOf(MAJOR_VERSION), MAJOR_VERSION, Integer.valueOf(8)}, + {Integer.valueOf(MAJOR_VERSION + 1), MAJOR_VERSION, null}, + {Integer.valueOf(100), MAJOR_VERSION, Integer.valueOf(8)} }; } @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} + {null, 8, Version.parse("14")}, + {Version.parse("8"), 8, Version.parse("7")}, + {Version.parse("9"), 9, null}, + {Version.parse(Integer.toString(MAJOR_VERSION)), MAJOR_VERSION, Version.parse("8")}, + {Version.parse(Integer.toString(MAJOR_VERSION) + 1), MAJOR_VERSION, Version.parse("9")}, + {Version.parse("100"), MAJOR_VERSION, Version.parse("14")} }; } @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", new ArrayList())}, - {Map.of("releaseVersion", Integer.valueOf(0))}, - {Map.of("releaseVersion", Integer.valueOf(-1))} + {Map.of(PROPERTY_RELEASE_VERSION, "")}, + {Map.of(PROPERTY_RELEASE_VERSION, "invalid")}, + {Map.of(PROPERTY_RELEASE_VERSION, "0")}, + {Map.of(PROPERTY_RELEASE_VERSION, "-1")}, + {Map.of(PROPERTY_RELEASE_VERSION, "11.0.1")}, + {Map.of(PROPERTY_RELEASE_VERSION, new ArrayList())}, + {Map.of(PROPERTY_RELEASE_VERSION, Integer.valueOf(0))}, + {Map.of(PROPERTY_RELEASE_VERSION, 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 ...) + // Not the best test but all I can do since ZipFileSystem + // is not public, so I can't use (fs instanceof ...) @Test public void testNewFileSystem() throws Exception { Map env = new HashMap<>(); @@ -145,7 +147,7 @@ try (FileSystem fs = FileSystems.newFileSystem(mruri, env)) { Assert.assertTrue(readAndCompare(fs, 8)); } - env.put("releaseVersion", "runtime"); + env.put(PROPERTY_RELEASE_VERSION, "runtime"); // a configuration and jar file is multi-release try (FileSystem fs = FileSystems.newFileSystem(mruri, env)) { Assert.assertTrue(readAndCompare(fs, MAJOR_VERSION)); @@ -163,28 +165,38 @@ } @Test(dataProvider="strings") - public void testStrings(String value, int expected) throws Throwable { - stringEnv.put("releaseVersion", value); + public void testStrings(String value, int expected, String ignorable) throws Throwable { + stringEnv.clear(); + stringEnv.put(PROPERTY_RELEASE_VERSION, value); + // we check, that values for "multi-release" are ignored + stringEnv.put(PROPERTY_MULTI_RELEASE, ignorable); runTest(stringEnv, expected); } @Test(dataProvider="integers") - public void testIntegers(Integer value, int expected) throws Throwable { - integerEnv.put("releaseVersion", value); + public void testIntegers(Integer value, int expected, Integer ignorable) throws Throwable { + integerEnv.clear(); + integerEnv.put(PROPERTY_RELEASE_VERSION, value); + // we check, that values for "multi-release" are ignored + integerEnv.put(PROPERTY_MULTI_RELEASE, value); runTest(integerEnv, expected); } @Test(dataProvider="versions") - public void testVersions(Version value, int expected) throws Throwable { - versionEnv.put("releaseVersion", value); + public void testVersions(Version value, int expected, Version ignorable) throws Throwable { + versionEnv.clear(); + versionEnv.put(PROPERTY_RELEASE_VERSION, value); + // we check, that values for "multi-release" are ignored + versionEnv.put(PROPERTY_MULTI_RELEASE, ignorable); runTest(versionEnv, expected); } @Test public void testShortJar() throws Throwable { - integerEnv.put("releaseVersion", Integer.valueOf(MAJOR_VERSION)); + integerEnv.clear(); + integerEnv.put(PROPERTY_RELEASE_VERSION, Integer.valueOf(MAJOR_VERSION)); runTest(smruri, integerEnv, MAJOR_VERSION); - integerEnv.put("releaseVersion", Integer.valueOf(9)); + integerEnv.put(PROPERTY_RELEASE_VERSION, Integer.valueOf(9)); runTest(smruri, integerEnv, 8); } @@ -205,23 +217,23 @@ // 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 { + public void testMRStrings(String value, int expected, String ignorable) throws Throwable { stringEnv.clear(); - stringEnv.put("multi-release", value); + stringEnv.put(PROPERTY_MULTI_RELEASE, value); runTest(stringEnv, expected); } @Test(dataProvider="integers") - public void testMRIntegers(Integer value, int expected) throws Throwable { + public void testMRIntegers(Integer value, int expected, Integer ignorable) throws Throwable { integerEnv.clear(); - integerEnv.put("multi-release", value); + integerEnv.put(PROPERTY_MULTI_RELEASE, value); runTest(integerEnv, expected); } @Test(dataProvider="versions") - public void testMRVersions(Version value, int expected) throws Throwable { + public void testMRVersions(Version value, int expected, Version ignorable) throws Throwable { versionEnv.clear(); - versionEnv.put("multi-release", value); + versionEnv.put(PROPERTY_MULTI_RELEASE, value); runTest(versionEnv, expected); } @@ -264,7 +276,7 @@ JarBuilder jb = new JarBuilder(jfname); jb.addAttribute("Multi-Release", "true"); jb.build(); - Map env = Map.of("releaseVersion", "runtime"); + Map env = Map.of(PROPERTY_RELEASE_VERSION, "runtime"); try (FileSystem fs = FileSystems.newFileSystem(uri, env)) { Assert.assertTrue(true); } @@ -279,7 +291,7 @@ creator.buildCustomMultiReleaseJar(fileName, value, Map.of(), /*addEntries*/true); - Map env = Map.of("releaseVersion", "runtime"); + Map env = Map.of(PROPERTY_RELEASE_VERSION, "runtime"); Path filePath = Paths.get(userdir, fileName); String ssp = filePath.toUri().toString(); URI customJar = new URI("jar", ssp , null);