< prev index next >
test/jdk/internal/jrtfs/Basic.java
Print this page
*** 96,107 ****
}
@DataProvider(name = "knownClassFiles")
private Object[][] knownClassFiles() {
return new Object[][] {
! { "/java.base/java/lang/Object.class" },
! { "java.base/java/lang/Object.class" },
};
}
@Test(dataProvider = "knownClassFiles")
public void testKnownClassFiles(String path) throws Exception {
--- 96,107 ----
}
@DataProvider(name = "knownClassFiles")
private Object[][] knownClassFiles() {
return new Object[][] {
! { "/modules/java.base/java/lang/Object.class" },
! { "modules/java.base/java/lang/Object.class" },
};
}
@Test(dataProvider = "knownClassFiles")
public void testKnownClassFiles(String path) throws Exception {
*** 124,141 ****
{ "/" },
{ "." },
{ "./" },
{ "/." },
{ "/./" },
! { "/java.base/.." },
! { "/java.base/../" },
! { "/java.base/../." },
! { "/java.base" },
! { "/java.base/java/lang" },
! { "java.base/java/lang" },
! { "/java.base/java/lang/" },
! { "java.base/java/lang/" }
};
}
@Test(dataProvider = "knownDirectories")
public void testKnownDirectories(String path) throws Exception {
--- 124,141 ----
{ "/" },
{ "." },
{ "./" },
{ "/." },
{ "/./" },
! { "/modules/java.base/.." },
! { "/modules/java.base/../" },
! { "/modules/java.base/../." },
! { "/modules/java.base" },
! { "/modules/java.base/java/lang" },
! { "modules/java.base/java/lang" },
! { "/modules/java.base/java/lang/" },
! { "modules/java.base/java/lang/" }
};
}
@Test(dataProvider = "knownDirectories")
public void testKnownDirectories(String path) throws Exception {
*** 206,243 ****
@DataProvider(name = "pathPrefixs")
private Object[][] pathPrefixes() {
return new Object[][] {
{ "/" },
! { "java.base/java/lang" },
! { "./java.base/java/lang" },
! { "/java.base/java/lang" },
! { "/./java.base/java/lang" },
! { "java.base/java/lang/" },
! { "./java.base/java/lang/" },
! { "/./java.base/java/lang/" },
};
}
! @Test(dataProvider = "pathPrefixes")
public void testParentInDirList(String dir) throws Exception {
FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
Path base = fs.getPath(dir);
try (DirectoryStream<Path> stream = Files.newDirectoryStream(base)) {
for (Path entry: stream) {
! assertTrue( entry.getParent().equals(base) );
}
}
}
@DataProvider(name = "dirStreamStringFilterData")
private Object[][] dirStreamStringFilterData() {
return new Object[][] {
! { "/java.base/java/lang", "/reflect" },
! { "/java.base/java/lang", "/Object.class" },
! { "/java.base/java/util", "/stream" },
! { "/java.base/java/util", "/List.class" },
};
}
@Test(dataProvider = "dirStreamStringFilterData")
public void testDirectoryStreamStringFilter(String dir, String filter) throws Exception {
--- 206,244 ----
@DataProvider(name = "pathPrefixs")
private Object[][] pathPrefixes() {
return new Object[][] {
{ "/" },
! { "modules/java.base/java/lang" },
! { "./modules/java.base/java/lang" },
! { "/modules/java.base/java/lang" },
! { "/./modules/java.base/java/lang" },
! { "modules/java.base/java/lang/" },
! { "./modules/java.base/java/lang/" },
! { "/./modules/java.base/java/lang/" },
};
}
! // @Test(dataProvider = "pathPrefixes")
public void testParentInDirList(String dir) throws Exception {
FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
Path base = fs.getPath(dir);
try (DirectoryStream<Path> stream = Files.newDirectoryStream(base)) {
for (Path entry: stream) {
! assertTrue( entry.getParent().equals(base),
! base.toString() + "-> " + entry.toString() );
}
}
}
@DataProvider(name = "dirStreamStringFilterData")
private Object[][] dirStreamStringFilterData() {
return new Object[][] {
! { "/modules/java.base/java/lang", "/reflect" },
! { "/modules/java.base/java/lang", "/Object.class" },
! { "/modules/java.base/java/util", "/stream" },
! { "/modules/java.base/java/util", "/List.class" },
};
}
@Test(dataProvider = "dirStreamStringFilterData")
public void testDirectoryStreamStringFilter(String dir, String filter) throws Exception {
*** 272,282 ****
"/",
(DirectoryStream.Filter<Path>)(Files::isDirectory),
"isDirectory"
},
{
! "/java.base/java/lang",
(DirectoryStream.Filter<Path>)(Files::isRegularFile),
"isFile"
}
};
}
--- 273,283 ----
"/",
(DirectoryStream.Filter<Path>)(Files::isDirectory),
"isDirectory"
},
{
! "/modules/java.base/java/lang",
(DirectoryStream.Filter<Path>)(Files::isRegularFile),
"isFile"
}
};
}
*** 320,330 ****
private void dirStreamIteratorTest(DirectoryStream.Filter<Path> filter)
throws Exception {
FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
// This test assumes at least there are two elements in "java/lang"
// package with any filter passed. don't change to different path here!
! Path dir = fs.getPath("/java.base/java/lang");
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, filter)) {
Iterator<Path> itr = stream.iterator();
itr.hasNext();
Path path1 = itr.next();
// missing second hasNext call
--- 321,331 ----
private void dirStreamIteratorTest(DirectoryStream.Filter<Path> filter)
throws Exception {
FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
// This test assumes at least there are two elements in "java/lang"
// package with any filter passed. don't change to different path here!
! Path dir = fs.getPath("/modules/java.base/java/lang");
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, filter)) {
Iterator<Path> itr = stream.iterator();
itr.hasNext();
Path path1 = itr.next();
// missing second hasNext call
*** 377,389 ****
private Object[][] hiddenPaths() {
return new Object[][] {
{ "/META-INF" },
{ "/META-INF/services" },
{ "/META-INF/services/java.nio.file.spi.FileSystemProvider" },
! { "/java.base/packages.offsets" },
! { "/java.instrument/packages.offsets" },
! { "/jdk.zipfs/packages.offsets" },
{ "/java/lang" },
{ "/java/util" },
};
}
--- 378,390 ----
private Object[][] hiddenPaths() {
return new Object[][] {
{ "/META-INF" },
{ "/META-INF/services" },
{ "/META-INF/services/java.nio.file.spi.FileSystemProvider" },
! { "/modules/java.base/packages.offsets" },
! { "/modules/java.instrument/packages.offsets" },
! { "/modules/jdk.zipfs/packages.offsets" },
{ "/java/lang" },
{ "/java/util" },
};
}
*** 394,417 ****
}
@DataProvider(name = "pathGlobPatterns")
private Object[][] pathGlobPatterns() {
return new Object[][] {
! { "/*", "/java.base", true },
! { "/*", "/java.base/java", false },
! { "/j*", "/java.base", true },
! { "/J*", "/java.base", false },
! { "**.class", "/java.base/java/lang/Object.class", true },
! { "**.java", "/java.base/java/lang/Object.class", false },
! { "**java/*", "/java.base/java/lang", true },
! { "**java/lang/ref*", "/java.base/java/lang/reflect", true },
! { "**java/lang/ref*", "/java.base/java/lang/ref", true },
! { "**java/lang/ref?", "/java.base/java/lang/ref", false },
! { "**java/lang/{ref,refl*}", "/java.base/java/lang/ref", true },
! { "**java/lang/{ref,refl*}", "/java.base/java/lang/reflect", true },
! { "**java/[a-u]?*/*.class", "/java.base/java/util/Map.class", true },
! { "**java/util/[a-z]*.class", "/java.base/java/util/TreeMap.class", false },
};
}
@Test(dataProvider = "pathGlobPatterns")
public void testGlobPathMatcher(String pattern, String path,
--- 395,418 ----
}
@DataProvider(name = "pathGlobPatterns")
private Object[][] pathGlobPatterns() {
return new Object[][] {
! { "/modules/*", "/modules/java.base", true },
! { "/modules/*", "/modules/java.base/java", false },
! { "/modules/j*", "/modules/java.base", true },
! { "/modules/J*", "/modules/java.base", false },
! { "**.class", "/modules/java.base/java/lang/Object.class", true },
! { "**.java", "/modules/java.base/java/lang/Object.class", false },
! { "**java/*", "/modules/java.base/java/lang", true },
! { "**java/lang/ref*", "/modules/java.base/java/lang/reflect", true },
! { "**java/lang/ref*", "/modules/java.base/java/lang/ref", true },
! { "**java/lang/ref?", "/modules/java.base/java/lang/ref", false },
! { "**java/lang/{ref,refl*}", "/modules/java.base/java/lang/ref", true },
! { "**java/lang/{ref,refl*}", "/modules/java.base/java/lang/reflect", true },
! { "**java/[a-u]?*/*.class", "/modules/java.base/java/util/Map.class", true },
! { "**java/util/[a-z]*.class", "/modules/java.base/java/util/TreeMap.class", false },
};
}
@Test(dataProvider = "pathGlobPatterns")
public void testGlobPathMatcher(String pattern, String path,
*** 426,449 ****
}
@DataProvider(name = "pathRegexPatterns")
private Object[][] pathRegexPatterns() {
return new Object[][] {
! { "/.*", "/java.base", true },
! { "/[^/]*", "/java.base/java", false },
! { "/j.*", "/java.base", true },
! { "/J.*", "/java.base", false },
! { ".*\\.class", "/java.base/java/lang/Object.class", true },
! { ".*\\.java", "/java.base/java/lang/Object.class", false },
! { ".*java/.*", "/java.base/java/lang", true },
! { ".*java/lang/ref.*", "/java.base/java/lang/reflect", true },
! { ".*java/lang/ref.*", "/java.base/java/lang/ref", true },
! { ".*/java/lang/ref.+", "/java.base/java/lang/ref", false },
! { ".*/java/lang/(ref|refl.*)", "/java.base/java/lang/ref", true },
! { ".*/java/lang/(ref|refl.*)", "/java.base/java/lang/reflect", true },
! { ".*/java/[a-u]?.*/.*\\.class", "/java.base/java/util/Map.class", true },
! { ".*/java/util/[a-z]*\\.class", "/java.base/java/util/TreeMap.class", false },
};
}
@Test(dataProvider = "pathRegexPatterns")
public void testRegexPathMatcher(String pattern, String path,
--- 427,450 ----
}
@DataProvider(name = "pathRegexPatterns")
private Object[][] pathRegexPatterns() {
return new Object[][] {
! { "/modules/.*", "/modules/java.base", true },
! { "/modules/[^/]*", "/modules/java.base/java", false },
! { "/modules/j.*", "/modules/java.base", true },
! { "/modules/J.*", "/modules/java.base", false },
! { ".*\\.class", "/modules/java.base/java/lang/Object.class", true },
! { ".*\\.java", "/modules/java.base/java/lang/Object.class", false },
! { ".*java/.*", "/modules/java.base/java/lang", true },
! { ".*java/lang/ref.*", "/modules/java.base/java/lang/reflect", true },
! { ".*java/lang/ref.*", "/modules/java.base/java/lang/ref", true },
! { ".*/java/lang/ref.+", "/modules/java.base/java/lang/ref", false },
! { ".*/java/lang/(ref|refl.*)", "/modules/java.base/java/lang/ref", true },
! { ".*/java/lang/(ref|refl.*)", "/modules/java.base/java/lang/reflect", true },
! { ".*/java/[a-u]?.*/.*\\.class", "/modules/java.base/java/util/Map.class", true },
! { ".*/java/util/[a-z]*\\.class", "/modules/java.base/java/util/TreeMap.class", false },
};
}
@Test(dataProvider = "pathRegexPatterns")
public void testRegexPathMatcher(String pattern, String path,
*** 454,459 ****
--- 455,615 ----
assertTrue(Files.exists(p), path);
assertTrue(!(pm.matches(p) ^ expectMatch),
p + (expectMatch? " should match " : " should not match ") +
pattern);
}
+
+ @Test
+ public void testPackagesAndModules() throws Exception {
+ FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
+ assertTrue(Files.isDirectory(fs.getPath("/packages")));
+ assertTrue(Files.isDirectory(fs.getPath("/modules")));
+ }
+
+ @DataProvider(name = "packagesSubDirs")
+ private Object[][] packagesSubDirs() {
+ return new Object[][] {
+ { "java.lang" },
+ { "java.util" },
+ { "java.nio" },
+ { "jdk.nashorn.api.scripting" }
+ };
+ }
+
+ @Test(dataProvider = "packagesSubDirs")
+ public void testPackagesSubDirs(String pkg) throws Exception {
+ FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
+ assertTrue(Files.isDirectory(fs.getPath("/packages/" + pkg)),
+ pkg + " missing");
+ }
+
+ @DataProvider(name = "packagesLinks")
+ private Object[][] packagesLinks() {
+ return new Object[][] {
+ { "/packages/java.lang/java.base" },
+ { "/packages/java.lang/java.instrument" },
+ { "/packages/java/java.base" },
+ { "/packages/java/java.instrument" },
+ { "/packages/java/java.rmi" },
+ { "/packages/java/java.sql" },
+ { "/packages/javax/java.base" },
+ { "/packages/javax/java.sql" },
+ { "/packages/javax/java.xml" },
+ { "/packages/javax/java.management" },
+ { "/packages/java.util/java.base" },
+ { "/packages/jdk.nashorn.api.scripting/jdk.scripting.nashorn" },
+ };
+ }
+
+ @Test(dataProvider = "packagesLinks")
+ public void testPackagesLinks(String link) throws Exception {
+ FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
+ Path path = fs.getPath(link);
+ assertTrue(Files.exists(path), link + " missing");
+ assertTrue(Files.isSymbolicLink(path), path + " is not a link");
+ path = Files.readSymbolicLink(path);
+ assertEquals(path.toString(), "/modules" + link.substring(link.lastIndexOf("/")));
+ }
+
+ @DataProvider(name = "modulesSubDirs")
+ private Object[][] modulesSubDirs() {
+ return new Object[][] {
+ { "java.base" },
+ { "java.sql" },
+ { "jdk.scripting.nashorn" },
+ };
+ }
+
+ @Test(dataProvider = "modulesSubDirs")
+ public void testModulesSubDirs(String module) throws Exception {
+ FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
+ Path path = fs.getPath("/modules/" + module);
+ assertTrue(Files.isDirectory(path), module + " missing");
+ assertTrue(!Files.isSymbolicLink(path), path + " is a link");
+ }
+
+ @DataProvider(name="linkChases")
+ private Object[][] linkChases() {
+ return new Object[][] {
+ { "/modules/java.base/java/lang" },
+ { "/modules/java.base/java/util/Vector.class" },
+ { "/modules/jdk.scripting.nashorn/jdk/nashorn" },
+ { "/packages/java.lang/java.base/java/lang" },
+ { "/packages/java.util/java.base/java/util/Vector.class" },
+ };
+ }
+
+ @Test(dataProvider = "linkChases")
+ public void testLinkChases(String link) throws Exception {
+ FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
+ Path path = fs.getPath(link);
+ assertTrue(Files.exists(path), link);
+ }
+
+ @Test
+ public void testSymlinkDirList() throws Exception {
+ FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
+ Path path = fs.getPath("/packages/java.lang/java.base");
+ assertTrue(Files.isSymbolicLink(path));
+ assertTrue(Files.isDirectory(path));
+
+ boolean javaSeen = false, javaxSeen = false;
+ try (DirectoryStream<Path> stream = Files.newDirectoryStream(path)) {
+ for (Path p : stream) {
+ String str = p.toString();
+ if (str.endsWith("/java")) {
+ javaSeen = true;
+ } else if (str.endsWith("javax")) {
+ javaxSeen = true;
+ }
+ }
+ }
+ assertTrue(javaSeen);
+ assertTrue(javaxSeen);
+ }
+
+ @Test
+ public void testPackagesSubDirList() throws Exception {
+ FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
+ String pathName = "/packages/javax.annotation";
+ Path path = fs.getPath(pathName);
+ boolean seenJavaCompiler = false, seenAnnotationsCommon = false;
+ try (DirectoryStream<Path> stream = Files.newDirectoryStream(path)) {
+ for (Path p : stream) {
+ String str = p.toString();
+ if (str.equals(pathName + "/java.compiler")) {
+ seenJavaCompiler = true;
+ } else if (str.equals(pathName + "/java.annotations.common")) {
+ seenAnnotationsCommon = true;
+ }
+ }
+ }
+ assertTrue(seenJavaCompiler);
+ assertTrue(seenAnnotationsCommon);
+ }
+
+ @Test
+ public void testRootDirList() throws Exception {
+ FileSystem fs = FileSystems.getFileSystem(URI.create("jrt:/"));
+ Path path = fs.getPath("/");
+ // check /packages and /modules are not repeated
+ // and seen once.
+ boolean packages = false, modules = false;
+ try (DirectoryStream<Path> stream = Files.newDirectoryStream(path)) {
+ for (Path p : stream) {
+ String str = p.toString();
+ switch (str) {
+ case "/packages":
+ assertFalse(packages, "/packages repeated");
+ packages = true;
+ break;
+ case "/modules":
+ assertFalse(modules, "/modules repeated");
+ modules = true;
+ break;
+ }
+ }
+ }
+ assertTrue(packages, "/packages missing in / list!");
+ assertTrue(modules, "/modules missing in / list!");
+ }
}
< prev index next >