test/java/nio/file/Files/FileAttributes.java

Print this page

        

*** 21,31 **** * questions. */ /* @test * @bug 4313887 6838333 ! * @summary Unit test for java.nio.file.Path * @library .. */ import java.nio.file.*; import java.nio.file.attribute.*; --- 21,31 ---- * questions. */ /* @test * @bug 4313887 6838333 ! * @summary Unit test for java.nio.file.Files * @library .. */ import java.nio.file.*; import java.nio.file.attribute.*;
*** 57,256 **** long diff = Math.abs(t1.toMillis() - t2.toMillis()); assertTrue(diff <= 1000); } // Exercise getAttribute/setAttribute/readAttributes on basic attributes ! static void checkBasicAttributes(FileRef file, BasicFileAttributes attrs) throws IOException { // getAttribute ! checkEqual(attrs.size(), file.getAttribute("size")); ! checkEqual(attrs.lastModifiedTime(), file.getAttribute("basic:lastModifiedTime")); ! checkEqual(attrs.lastAccessTime(), file.getAttribute("lastAccessTime")); ! checkEqual(attrs.creationTime(), file.getAttribute("basic:creationTime")); ! assertTrue((Boolean)file.getAttribute("isRegularFile")); ! assertTrue(!(Boolean)file.getAttribute("basic:isDirectory")); ! assertTrue(!(Boolean)file.getAttribute("isSymbolicLink")); ! assertTrue(!(Boolean)file.getAttribute("basic:isOther")); ! checkEqual(attrs.fileKey(), file.getAttribute("basic:fileKey")); // setAttribute FileTime modTime = attrs.lastModifiedTime(); ! file.setAttribute("basic:lastModifiedTime", FileTime.fromMillis(0L)); ! checkEqual(Attributes.readBasicFileAttributes(file).lastModifiedTime(), FileTime.fromMillis(0L)); ! file.setAttribute("lastModifiedTime", modTime); ! checkEqual(Attributes.readBasicFileAttributes(file).lastModifiedTime(), modTime); ! Map<String,?> map; ! map = file.readAttributes("*"); assertTrue(map.size() >= 9); checkEqual(attrs.isRegularFile(), map.get("isRegularFile")); // check one ! map = file.readAttributes("basic:*"); assertTrue(map.size() >= 9); checkEqual(attrs.lastAccessTime(), map.get("lastAccessTime")); // check one ! map = file.readAttributes("size,lastModifiedTime"); assertTrue(map.size() == 2); checkEqual(attrs.size(), map.get("size")); checkEqual(attrs.lastModifiedTime(), map.get("lastModifiedTime")); ! map = file.readAttributes( "basic:lastModifiedTime,lastAccessTime,ShouldNotExist"); assertTrue(map.size() == 2); checkEqual(attrs.lastModifiedTime(), map.get("lastModifiedTime")); checkEqual(attrs.lastAccessTime(), map.get("lastAccessTime")); } // Exercise getAttribute/setAttribute/readAttributes on posix attributes ! static void checkPosixAttributes(FileRef file, PosixFileAttributes attrs) throws IOException { checkBasicAttributes(file, attrs); // getAttribute ! checkEqual(attrs.permissions(), file.getAttribute("posix:permissions")); ! checkEqual(attrs.owner(), file.getAttribute("posix:owner")); ! checkEqual(attrs.group(), file.getAttribute("posix:group")); // setAttribute Set<PosixFilePermission> orig = attrs.permissions(); ! Set<PosixFilePermission> newPerms = new HashSet<PosixFilePermission>(orig); newPerms.remove(PosixFilePermission.OTHERS_READ); newPerms.remove(PosixFilePermission.OTHERS_WRITE); newPerms.remove(PosixFilePermission.OTHERS_EXECUTE); ! file.setAttribute("posix:permissions", newPerms); ! checkEqual(Attributes.readPosixFileAttributes(file).permissions(), newPerms); ! file.setAttribute("posix:permissions", orig); ! checkEqual(Attributes.readPosixFileAttributes(file).permissions(), orig); ! file.setAttribute("posix:owner", attrs.owner()); ! file.setAttribute("posix:group", attrs.group()); // readAttributes ! Map<String,?> map; ! map = file.readAttributes("posix:*"); assertTrue(map.size() >= 12); checkEqual(attrs.permissions(), map.get("permissions")); // check one ! map = file.readAttributes("posix:size,owner,ShouldNotExist"); assertTrue(map.size() == 2); checkEqual(attrs.size(), map.get("size")); checkEqual(attrs.owner(), map.get("owner")); } // Exercise getAttribute/readAttributes on unix attributes ! static void checkUnixAttributes(FileRef file) throws IOException { // getAttribute ! int mode = (Integer)file.getAttribute("unix:mode"); ! long ino = (Long)file.getAttribute("unix:ino"); ! long dev = (Long)file.getAttribute("unix:dev"); ! long rdev = (Long)file.getAttribute("unix:rdev"); ! int nlink = (Integer)file.getAttribute("unix:nlink"); ! int uid = (Integer)file.getAttribute("unix:uid"); ! int gid = (Integer)file.getAttribute("unix:gid"); ! FileTime ctime = (FileTime)file.getAttribute("unix:ctime"); // readAttributes ! Map<String,?> map; ! map = file.readAttributes("unix:*"); assertTrue(map.size() >= 20); ! map = file.readAttributes("unix:size,uid,gid,ShouldNotExist"); assertTrue(map.size() == 3); checkEqual(map.get("size"), ! Attributes.readBasicFileAttributes(file).size()); } // Exercise getAttribute/setAttribute on dos attributes ! static void checkDosAttributes(FileRef file, DosFileAttributes attrs) throws IOException { checkBasicAttributes(file, attrs); // getAttribute ! checkEqual(attrs.isReadOnly(), file.getAttribute("dos:readonly")); ! checkEqual(attrs.isHidden(), file.getAttribute("dos:hidden")); ! checkEqual(attrs.isSystem(), file.getAttribute("dos:system")); ! checkEqual(attrs.isArchive(), file.getAttribute("dos:archive")); // setAttribute boolean value; value = attrs.isReadOnly(); ! file.setAttribute("dos:readonly", !value); ! checkEqual(Attributes.readDosFileAttributes(file).isReadOnly(), !value); ! file.setAttribute("dos:readonly", value); ! checkEqual(Attributes.readDosFileAttributes(file).isReadOnly(), value); value = attrs.isHidden(); ! file.setAttribute("dos:hidden", !value); ! checkEqual(Attributes.readDosFileAttributes(file).isHidden(), !value); ! file.setAttribute("dos:hidden", value); ! checkEqual(Attributes.readDosFileAttributes(file).isHidden(), value); value = attrs.isSystem(); ! file.setAttribute("dos:system", !value); ! checkEqual(Attributes.readDosFileAttributes(file).isSystem(), !value); ! file.setAttribute("dos:system", value); ! checkEqual(Attributes.readDosFileAttributes(file).isSystem(), value); value = attrs.isArchive(); ! file.setAttribute("dos:archive", !value); ! checkEqual(Attributes.readDosFileAttributes(file).isArchive(), !value); ! file.setAttribute("dos:archive", value); ! checkEqual(Attributes.readDosFileAttributes(file).isArchive(), value); // readAttributes ! Map<String,?> map; ! map = file.readAttributes("dos:*"); assertTrue(map.size() >= 13); checkEqual(attrs.isReadOnly(), map.get("readonly")); // check one ! map = file.readAttributes("dos:size,hidden,ShouldNotExist"); assertTrue(map.size() == 2); checkEqual(attrs.size(), map.get("size")); checkEqual(attrs.isHidden(), map.get("hidden")); } static void miscTests(Path file) throws IOException { // NPE tests try { ! file.getAttribute(null); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException npe) { } try { ! file.getAttribute("isRegularFile", (LinkOption[])null); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException npe) { } try { ! file.setAttribute(null, 0L); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException npe) { } } static void doTests(Path dir) throws IOException { ! Path file = dir.resolve("foo").createFile(); ! FileStore store = file.getFileStore(); try { checkBasicAttributes(file, ! Attributes.readBasicFileAttributes(file)); if (store.supportsFileAttributeView("posix")) checkPosixAttributes(file, ! Attributes.readPosixFileAttributes(file)); if (store.supportsFileAttributeView("unix")) checkUnixAttributes(file); if (store.supportsFileAttributeView("dos")) checkDosAttributes(file, ! Attributes.readDosFileAttributes(file)); miscTests(file); } finally { ! file.delete(); } } public static void main(String[] args) throws IOException { --- 57,257 ---- long diff = Math.abs(t1.toMillis() - t2.toMillis()); assertTrue(diff <= 1000); } // Exercise getAttribute/setAttribute/readAttributes on basic attributes ! static void checkBasicAttributes(Path file, BasicFileAttributes attrs) throws IOException { // getAttribute ! checkEqual(attrs.size(), Files.getAttribute(file, "size")); ! checkEqual(attrs.lastModifiedTime(), Files.getAttribute(file, "basic:lastModifiedTime")); ! checkEqual(attrs.lastAccessTime(), Files.getAttribute(file, "lastAccessTime")); ! checkEqual(attrs.creationTime(), Files.getAttribute(file, "basic:creationTime")); ! assertTrue((Boolean)Files.getAttribute(file, "isRegularFile")); ! assertTrue(!(Boolean)Files.getAttribute(file, "basic:isDirectory")); ! assertTrue(!(Boolean)Files.getAttribute(file, "isSymbolicLink")); ! assertTrue(!(Boolean)Files.getAttribute(file, "basic:isOther")); ! checkEqual(attrs.fileKey(), Files.getAttribute(file, "basic:fileKey")); // setAttribute FileTime modTime = attrs.lastModifiedTime(); ! Files.setAttribute(file, "basic:lastModifiedTime", FileTime.fromMillis(0L)); ! checkEqual(Files.getLastModifiedTime(file), FileTime.fromMillis(0L)); ! Files.setAttribute(file, "lastModifiedTime", modTime); ! checkEqual(Files.getLastModifiedTime(file), modTime); ! Map<String,Object> map; ! map = Files.readAttributes(file, "*"); assertTrue(map.size() >= 9); checkEqual(attrs.isRegularFile(), map.get("isRegularFile")); // check one ! map = Files.readAttributes(file, "basic:*"); assertTrue(map.size() >= 9); checkEqual(attrs.lastAccessTime(), map.get("lastAccessTime")); // check one ! map = Files.readAttributes(file, "size,lastModifiedTime"); assertTrue(map.size() == 2); checkEqual(attrs.size(), map.get("size")); checkEqual(attrs.lastModifiedTime(), map.get("lastModifiedTime")); ! map = Files.readAttributes(file, "basic:lastModifiedTime,lastAccessTime,ShouldNotExist"); assertTrue(map.size() == 2); checkEqual(attrs.lastModifiedTime(), map.get("lastModifiedTime")); checkEqual(attrs.lastAccessTime(), map.get("lastAccessTime")); } // Exercise getAttribute/setAttribute/readAttributes on posix attributes ! static void checkPosixAttributes(Path file, PosixFileAttributes attrs) throws IOException { checkBasicAttributes(file, attrs); // getAttribute ! checkEqual(attrs.permissions(), Files.getAttribute(file, "posix:permissions")); ! checkEqual(attrs.owner(), Files.getAttribute(file, "posix:owner")); ! checkEqual(attrs.group(), Files.getAttribute(file, "posix:group")); // setAttribute Set<PosixFilePermission> orig = attrs.permissions(); ! Set<PosixFilePermission> newPerms = new HashSet<>(orig); newPerms.remove(PosixFilePermission.OTHERS_READ); newPerms.remove(PosixFilePermission.OTHERS_WRITE); newPerms.remove(PosixFilePermission.OTHERS_EXECUTE); ! Files.setAttribute(file, "posix:permissions", newPerms); ! checkEqual(Files.getPosixFilePermissions(file), newPerms); ! Files.setAttribute(file, "posix:permissions", orig); ! checkEqual(Files.getPosixFilePermissions(file), orig); ! Files.setAttribute(file, "posix:owner", attrs.owner()); ! Files.setAttribute(file, "posix:group", attrs.group()); // readAttributes ! Map<String,Object> map; ! map = Files.readAttributes(file, "posix:*"); assertTrue(map.size() >= 12); checkEqual(attrs.permissions(), map.get("permissions")); // check one ! map = Files.readAttributes(file, "posix:size,owner,ShouldNotExist"); assertTrue(map.size() == 2); checkEqual(attrs.size(), map.get("size")); checkEqual(attrs.owner(), map.get("owner")); } // Exercise getAttribute/readAttributes on unix attributes ! static void checkUnixAttributes(Path file) throws IOException { // getAttribute ! int mode = (Integer)Files.getAttribute(file, "unix:mode"); ! long ino = (Long)Files.getAttribute(file, "unix:ino"); ! long dev = (Long)Files.getAttribute(file, "unix:dev"); ! long rdev = (Long)Files.getAttribute(file, "unix:rdev"); ! int nlink = (Integer)Files.getAttribute(file, "unix:nlink"); ! int uid = (Integer)Files.getAttribute(file, "unix:uid"); ! int gid = (Integer)Files.getAttribute(file, "unix:gid"); ! FileTime ctime = (FileTime)Files.getAttribute(file, "unix:ctime"); // readAttributes ! Map<String,Object> map; ! map = Files.readAttributes(file, "unix:*"); assertTrue(map.size() >= 20); ! map = Files.readAttributes(file, "unix:size,uid,gid,ShouldNotExist"); assertTrue(map.size() == 3); checkEqual(map.get("size"), ! Files.readAttributes(file, BasicFileAttributes.class).size()); } // Exercise getAttribute/setAttribute on dos attributes ! static void checkDosAttributes(Path file, DosFileAttributes attrs) throws IOException { checkBasicAttributes(file, attrs); // getAttribute ! checkEqual(attrs.isReadOnly(), Files.getAttribute(file, "dos:readonly")); ! checkEqual(attrs.isHidden(), Files.getAttribute(file, "dos:hidden")); ! checkEqual(attrs.isSystem(), Files.getAttribute(file, "dos:system")); ! checkEqual(attrs.isArchive(), Files.getAttribute(file, "dos:archive")); // setAttribute boolean value; value = attrs.isReadOnly(); ! Files.setAttribute(file, "dos:readonly", !value); ! checkEqual(Files.readAttributes(file, DosFileAttributes.class).isReadOnly(), !value); ! Files.setAttribute(file, "dos:readonly", value); ! checkEqual(Files.readAttributes(file, DosFileAttributes.class).isReadOnly(), value); value = attrs.isHidden(); ! Files.setAttribute(file, "dos:hidden", !value); ! checkEqual(Files.readAttributes(file, DosFileAttributes.class).isHidden(), !value); ! Files.setAttribute(file, "dos:hidden", value); ! checkEqual(Files.readAttributes(file, DosFileAttributes.class).isHidden(), value); value = attrs.isSystem(); ! Files.setAttribute(file, "dos:system", !value); ! checkEqual(Files.readAttributes(file, DosFileAttributes.class).isSystem(), !value); ! Files.setAttribute(file, "dos:system", value); ! checkEqual(Files.readAttributes(file, DosFileAttributes.class).isSystem(), value); value = attrs.isArchive(); ! Files.setAttribute(file, "dos:archive", !value); ! checkEqual(Files.readAttributes(file, DosFileAttributes.class).isArchive(), !value); ! Files.setAttribute(file, "dos:archive", value); ! checkEqual(Files.readAttributes(file, DosFileAttributes.class).isArchive(), value); // readAttributes ! Map<String,Object> map; ! map = Files.readAttributes(file, "dos:*"); assertTrue(map.size() >= 13); checkEqual(attrs.isReadOnly(), map.get("readonly")); // check one ! map = Files.readAttributes(file, "dos:size,hidden,ShouldNotExist"); assertTrue(map.size() == 2); checkEqual(attrs.size(), map.get("size")); checkEqual(attrs.isHidden(), map.get("hidden")); } static void miscTests(Path file) throws IOException { // NPE tests try { ! Files.getAttribute(file, null); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException npe) { } try { ! Files.getAttribute(file, "isRegularFile", (LinkOption[])null); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException npe) { } try { ! Files.setAttribute(file, null, 0L); throw new RuntimeException("NullPointerException expected"); } catch (NullPointerException npe) { } } static void doTests(Path dir) throws IOException { ! Path file = dir.resolve("foo"); ! Files.createFile(file); ! FileStore store = Files.getFileStore(file); try { checkBasicAttributes(file, ! Files.readAttributes(file, BasicFileAttributes.class)); if (store.supportsFileAttributeView("posix")) checkPosixAttributes(file, ! Files.readAttributes(file, PosixFileAttributes.class)); if (store.supportsFileAttributeView("unix")) checkUnixAttributes(file); if (store.supportsFileAttributeView("dos")) checkDosAttributes(file, ! Files.readAttributes(file, DosFileAttributes.class)); miscTests(file); } finally { ! Files.delete(file); } } public static void main(String[] args) throws IOException {