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