Skip to content

Commit

Permalink
Move test method to better location.
Browse files Browse the repository at this point in the history
  • Loading branch information
garydgregory committed Sep 27, 2021
1 parent dd9e526 commit e3cac47
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 62 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -147,60 +147,6 @@ public void testDeleteReadOnlyFileDirectory1FileSize1() throws IOException {
Files.deleteIfExists(tempDir);
}

@Test
public void testSetReadOnlyFile() throws IOException {
final Path resolved = tempDir.resolve("testSetReadOnlyFile.txt");

// TEMP HACK
assumeTrue(Files.getFileAttributeView(resolved, DosFileAttributeView.class) != null);
assumeTrue(Files.getFileAttributeView(resolved, PosixFileAttributeView.class) == null);

PathUtils.writeString(resolved, "test", StandardCharsets.UTF_8);
final boolean readable = Files.isReadable(resolved);
final boolean writable = Files.isWritable(resolved);
final boolean regularFile = Files.isRegularFile(resolved);
final boolean executable = Files.isExecutable(resolved);
final boolean hidden = Files.isHidden(resolved);
final boolean directory = Files.isDirectory(resolved);
final boolean symbolicLink = Files.isSymbolicLink(resolved);
// Sanity checks
assertTrue(readable);
assertTrue(writable);
// Test A
PathUtils.setReadOnly(resolved, false);
assertEquals(true, Files.isReadable(resolved));
assertEquals(true, Files.isWritable(resolved));
assertEquals(regularFile, Files.isReadable(resolved));
assertEquals(executable, Files.isExecutable(resolved));
assertEquals(hidden, Files.isHidden(resolved));
assertEquals(directory, Files.isDirectory(resolved));
assertEquals(symbolicLink, Files.isSymbolicLink(resolved));
// Test B
PathUtils.setReadOnly(resolved, true);
assertEquals(true, Files.isReadable(resolved));
assertEquals(false, Files.isWritable(resolved));
final DosFileAttributeView dosFileAttributeView = Files.getFileAttributeView(resolved, DosFileAttributeView.class);
if (dosFileAttributeView != null) {
assertTrue(dosFileAttributeView.readAttributes().isReadOnly());
}
final PosixFileAttributeView posixFileAttributeView = Files.getFileAttributeView(resolved, PosixFileAttributeView.class);
if (posixFileAttributeView != null) {
// Not Windows
final Set<PosixFilePermission> permissions = posixFileAttributeView.readAttributes().permissions();
assertFalse(permissions.contains(PosixFilePermission.GROUP_WRITE), () -> permissions.toString());
assertFalse(permissions.contains(PosixFilePermission.OTHERS_WRITE), () -> permissions.toString());
assertFalse(permissions.contains(PosixFilePermission.OWNER_WRITE), () -> permissions.toString());
}
assertEquals(regularFile, Files.isReadable(resolved));
assertEquals(executable, Files.isExecutable(resolved));
assertEquals(hidden, Files.isHidden(resolved));
assertEquals(directory, Files.isDirectory(resolved));
assertEquals(symbolicLink, Files.isSymbolicLink(resolved));
//
PathUtils.setReadOnly(resolved, false);
PathUtils.deleteFile(resolved);
}

/**
* Tests a directory with one file of size 1.
*/
Expand Down
76 changes: 68 additions & 8 deletions src/test/java/org/apache/commons/io/file/PathUtilsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assumptions.assumeTrue;

import java.io.File;
import java.io.IOException;
Expand All @@ -33,9 +34,13 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.DosFileAttributeView;
import java.nio.file.attribute.PosixFileAttributeView;
import java.nio.file.attribute.PosixFilePermission;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import org.apache.commons.io.filefilter.NameFileFilter;
import org.apache.commons.io.test.TestUtils;
Expand Down Expand Up @@ -247,15 +252,58 @@ public void testReadStringSimpleUtf8() throws IOException {
assertEquals(expected, PathUtils.readString(path, null));
}

/**
* Tests newOutputStream() here and don't use Files.write obviously.
*/
private Path writeToNewOutputStream(final boolean append) throws IOException {
final Path file = tempDir.resolve("test1.txt");
try (OutputStream os = PathUtils.newOutputStream(file, append)) {
os.write(BYTE_ARRAY_FIXTURE);
@Test
public void testSetReadOnlyFile() throws IOException {
final Path resolved = tempDir.resolve("testSetReadOnlyFile.txt");

// TEMP HACK
assumeTrue(Files.getFileAttributeView(resolved, DosFileAttributeView.class) != null);
assumeTrue(Files.getFileAttributeView(resolved, PosixFileAttributeView.class) == null);

PathUtils.writeString(resolved, "test", StandardCharsets.UTF_8);
final boolean readable = Files.isReadable(resolved);
final boolean writable = Files.isWritable(resolved);
final boolean regularFile = Files.isRegularFile(resolved);
final boolean executable = Files.isExecutable(resolved);
final boolean hidden = Files.isHidden(resolved);
final boolean directory = Files.isDirectory(resolved);
final boolean symbolicLink = Files.isSymbolicLink(resolved);
// Sanity checks
assertTrue(readable);
assertTrue(writable);
// Test A
PathUtils.setReadOnly(resolved, false);
assertEquals(true, Files.isReadable(resolved));
assertEquals(true, Files.isWritable(resolved));
assertEquals(regularFile, Files.isReadable(resolved));
assertEquals(executable, Files.isExecutable(resolved));
assertEquals(hidden, Files.isHidden(resolved));
assertEquals(directory, Files.isDirectory(resolved));
assertEquals(symbolicLink, Files.isSymbolicLink(resolved));
// Test B
PathUtils.setReadOnly(resolved, true);
assertEquals(true, Files.isReadable(resolved));
assertEquals(false, Files.isWritable(resolved));
final DosFileAttributeView dosFileAttributeView = Files.getFileAttributeView(resolved, DosFileAttributeView.class);
if (dosFileAttributeView != null) {
assertTrue(dosFileAttributeView.readAttributes().isReadOnly());
}
return file;
final PosixFileAttributeView posixFileAttributeView = Files.getFileAttributeView(resolved, PosixFileAttributeView.class);
if (posixFileAttributeView != null) {
// Not Windows
final Set<PosixFilePermission> permissions = posixFileAttributeView.readAttributes().permissions();
assertFalse(permissions.contains(PosixFilePermission.GROUP_WRITE), () -> permissions.toString());
assertFalse(permissions.contains(PosixFilePermission.OTHERS_WRITE), () -> permissions.toString());
assertFalse(permissions.contains(PosixFilePermission.OWNER_WRITE), () -> permissions.toString());
}
assertEquals(regularFile, Files.isReadable(resolved));
assertEquals(executable, Files.isExecutable(resolved));
assertEquals(hidden, Files.isHidden(resolved));
assertEquals(directory, Files.isDirectory(resolved));
assertEquals(symbolicLink, Files.isSymbolicLink(resolved));
//
PathUtils.setReadOnly(resolved, false);
PathUtils.deleteFile(resolved);
}

@Test
Expand All @@ -266,4 +314,16 @@ public void testWriteStringToFile1() throws Exception {
TestUtils.assertEqualContent(text, file);
}

/**
* Tests newOutputStream() here and don't use Files.write obviously.
*/
private Path writeToNewOutputStream(final boolean append) throws IOException {
final Path file = tempDir.resolve("test1.txt");
try (OutputStream os = PathUtils.newOutputStream(file, append)) {
os.write(BYTE_ARRAY_FIXTURE);
}
return file;
}


}

0 comments on commit e3cac47

Please sign in to comment.