< 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 >