< prev index next >
test/jdk/java/util/jar/JarFile/mrjar/TestVersionedStream.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
@@ -62,10 +62,12 @@
public class TestVersionedStream {
private final Path userdir;
private final Set<String> unversionedEntryNames;
+ private static final int LATEST_VERSION = Runtime.version().feature();
+
public TestVersionedStream() throws IOException {
userdir = Paths.get(System.getProperty("user.dir", "."));
// These are not real class files even though they end with .class.
// They are resource files so jar tool validation won't reject them.
@@ -77,16 +79,18 @@
"base/p/Foo.class",
"base/p/Main.class",
"v9/p/Foo.class",
"v10/p/Foo.class",
"v10/q/Bar.class",
- "v11/p/Bar.class",
- "v11/p/Foo.class"
+ "v" + LATEST_VERSION + "/p/Bar.class",
+ "v" + LATEST_VERSION + "/p/Foo.class"
);
- jar("cf mmr.jar -C base . --release 9 -C v9 . " +
- "--release 10 -C v10 . --release 11 -C v11 .");
+ jar("cf mmr.jar -C base . " +
+ "--release 9 -C v9 . " +
+ "--release 10 -C v10 . " +
+ "--release " + LATEST_VERSION + " -C v" + LATEST_VERSION + " .");
System.out.println("Contents of mmr.jar\n=======");
try(JarFile jf = new JarFile("mmr.jar")) {
unversionedEntryNames = jf.stream()
@@ -122,11 +126,11 @@
public Object[][] data() {
return new Object[][] {
{Runtime.Version.parse("8")},
{Runtime.Version.parse("9")},
{Runtime.Version.parse("10")},
- {Runtime.Version.parse("11")},
+ {Runtime.Version.parse(Integer.toString(LATEST_VERSION))},
{JarFile.baseVersion()},
{JarFile.runtimeVersion()}
};
}
@@ -171,11 +175,12 @@
// value.[1] versioned path/real name
Map<String,String[]> expected = new HashMap<>();
expected.put("p/Bar.class", new String[] { "base/p/Bar.class", "p/Bar.class" });
expected.put("p/Main.class", new String[] { "base/p/Main.class", "p/Main.class" });
- switch (version.major()) {
+ int majorVersion = version.major();
+ switch (majorVersion) {
case 8:
expected.put("p/Foo.class", new String[]
{ "base/p/Foo.class", "p/Foo.class" });
break;
case 9:
@@ -187,21 +192,24 @@
{ "v10/p/Foo.class", "META-INF/versions/10/p/Foo.class" });
expected.put("q/Bar.class", new String[]
{ "v10/q/Bar.class", "META-INF/versions/10/q/Bar.class" });
break;
- case 11:
- expected.put("p/Bar.class", new String[]
- { "v11/p/Bar.class", "META-INF/versions/11/p/Bar.class"});
- expected.put("p/Foo.class", new String[]
- { "v11/p/Foo.class", "META-INF/versions/11/p/Foo.class"});
- expected.put("q/Bar.class", new String[]
- { "q/Bar.class", "META-INF/versions/10/q/Bar.class"});
- break;
default:
+ if (majorVersion == LATEST_VERSION) {
+ expected.put("p/Bar.class",
+ new String[] { "v" + LATEST_VERSION + "/p/Bar.class",
+ "META-INF/versions/" + LATEST_VERSION + "/p/Bar.class"});
+ expected.put("p/Foo.class",
+ new String[]{ "v" + LATEST_VERSION + "/p/Foo.class",
+ "META-INF/versions/" + LATEST_VERSION + "/p/Foo.class"});
+ expected.put("q/Bar.class",
+ new String[] { "q/Bar.class", "META-INF/versions/10/q/Bar.class"});
+ } else {
Assert.fail("Test out of date, please add more cases");
}
+ }
expected.entrySet().stream().forEach(e -> {
String name = e.getKey();
int i = versionedNames.indexOf(name);
Assert.assertTrue(i != -1, name + " not in enames");
< prev index next >