test/jdk/jdk/nio/zipfs/jarfs/MultiReleaseJarTest.java
changeset 59216 47c879f478d2
parent 58467 72ef2c0faf47
--- 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<Long>())},
-                {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<Long>())},
+                {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<String,String> 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<String,String> env = Map.of("releaseVersion", "runtime");
+        Map<String,String> 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<String,String> env = Map.of("releaseVersion", "runtime");
+        Map<String,String> 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);