< prev index next >

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

Print this page

        

@@ -21,11 +21,11 @@
  * questions.
  */
 
 /*
  * @test
- * @bug 8144355 8144062 8176709 8194070 8193802
+ * @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,12 +86,11 @@
 
     @DataProvider(name="strings")
     public Object[][] createStrings() {
         return new Object[][]{
                 {"runtime", MAJOR_VERSION},
-                {"-20", 8},
-                {"0", 8},
+                {null, 8},
                 {"8", 8},
                 {"9", 9},
                 {Integer.toString(MAJOR_VERSION), MAJOR_VERSION},
                 {Integer.toString(MAJOR_VERSION+1), MAJOR_VERSION},
                 {"50", MAJOR_VERSION}

@@ -99,12 +98,11 @@
     }
 
     @DataProvider(name="integers")
     public Object[][] createIntegers() {
         return new Object[][] {
-                {Integer.valueOf(-5), 8},
-                {Integer.valueOf(0), 8},
+                {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,28 +110,42 @@
     }
 
     @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("multi-release", "runtime");
+        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,34 +160,71 @@
         return src.contains("return " + expected);
     }
 
     @Test(dataProvider="strings")
     public void testStrings(String value, int expected) throws Throwable {
-        stringEnv.put("multi-release", value);
+        stringEnv.put("releaseVersion", value);
         runTest(stringEnv, expected);
     }
 
     @Test(dataProvider="integers")
     public void testIntegers(Integer value, int expected) throws Throwable {
-        integerEnv.put("multi-release", value);
+        integerEnv.put("releaseVersion", value);
         runTest(integerEnv, expected);
     }
 
     @Test(dataProvider="versions")
     public void testVersions(Version value, int expected) throws Throwable {
-        versionEnv.put("multi-release", value);
+        versionEnv.put("releaseVersion", value);
         runTest(versionEnv, expected);
     }
 
     @Test
     public void testShortJar() throws Throwable {
-        integerEnv.put("multi-release", Integer.valueOf(MAJOR_VERSION));
+        integerEnv.put("releaseVersion", Integer.valueOf(MAJOR_VERSION));
         runTest(smruri, integerEnv, MAJOR_VERSION);
-        integerEnv.put("multi-release", Integer.valueOf(9));
+        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,11 +260,11 @@
         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");
+        Map<String,String> env = Map.of("releaseVersion", "runtime");
         try (FileSystem fs = FileSystems.newFileSystem(uri, env)) {
             Assert.assertTrue(true);
         }
         Files.delete(jfpath);
     }

@@ -226,11 +275,11 @@
             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");
+        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 >