aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/apache/commons/io/FileUtilsTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/org/apache/commons/io/FileUtilsTest.java')
-rw-r--r--src/test/java/org/apache/commons/io/FileUtilsTest.java89
1 files changed, 63 insertions, 26 deletions
diff --git a/src/test/java/org/apache/commons/io/FileUtilsTest.java b/src/test/java/org/apache/commons/io/FileUtilsTest.java
index 4d976c4e..2c820c8d 100644
--- a/src/test/java/org/apache/commons/io/FileUtilsTest.java
+++ b/src/test/java/org/apache/commons/io/FileUtilsTest.java
@@ -40,6 +40,7 @@ import java.math.BigInteger;
import java.net.URL;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
+import java.nio.charset.UnsupportedCharsetException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -47,6 +48,7 @@ import java.nio.file.StandardCopyOption;
import java.nio.file.attribute.AclFileAttributeView;
import java.nio.file.attribute.FileTime;
import java.nio.file.attribute.PosixFilePermission;
+import java.nio.file.attribute.PosixFilePermissions;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -86,6 +88,7 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.EnabledIf;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
@@ -123,20 +126,6 @@ public class FileUtilsTest extends AbstractTempDirTest {
}
}
- // Test helper class to pretend a file is shorter than it is
- private static class ShorterFile extends File {
- private static final long serialVersionUID = 1L;
-
- public ShorterFile(final String pathname) {
- super(pathname);
- }
-
- @Override
- public long length() {
- return super.length() - 1;
- }
- }
-
private static final String UTF_8 = StandardCharsets.UTF_8.name();
/** Test data. */
@@ -168,11 +157,6 @@ public class FileUtilsTest extends AbstractTempDirTest {
*/
private static final ListDirectoryWalker LIST_WALKER = new ListDirectoryWalker();
- /**
- * Delay in milliseconds to make sure test for "last modified date" are accurate
- */
- //private static final int LAST_MODIFIED_DELAY = 600;
-
private File testFile1;
private File testFile2;
@@ -1452,7 +1436,7 @@ public class FileUtilsTest extends AbstractTempDirTest {
public void testFileUtils() throws Exception {
// Loads file from classpath
final File file1 = new File(tempDirFile, "test.txt");
- final String filename = file1.getAbsolutePath();
+ final String fileName = file1.getAbsolutePath();
//Create test file on-the-fly (used to be in CVS)
try (OutputStream out = Files.newOutputStream(file1.toPath())) {
@@ -1461,16 +1445,16 @@ public class FileUtilsTest extends AbstractTempDirTest {
final File file2 = new File(tempDirFile, "test2.txt");
- FileUtils.writeStringToFile(file2, filename, UTF_8);
+ FileUtils.writeStringToFile(file2, fileName, UTF_8);
assertTrue(file2.exists());
assertTrue(file2.length() > 0);
final String file2contents = FileUtils.readFileToString(file2, UTF_8);
- assertEquals(filename, file2contents, "Second file's contents correct");
+ assertEquals(fileName, file2contents, "Second file's contents correct");
assertTrue(file2.delete());
- final String contents = FileUtils.readFileToString(new File(filename), UTF_8);
+ final String contents = FileUtils.readFileToString(new File(fileName), UTF_8);
assertEquals("This is a test", contents, "FileUtils.fileRead()");
}
@@ -1645,8 +1629,8 @@ public class FileUtilsTest extends AbstractTempDirTest {
@Test
public void testIO575() throws IOException {
final Path sourceDir = Files.createTempDirectory("source-dir");
- final String filename = "some-file";
- final Path sourceFile = Files.createFile(sourceDir.resolve(filename));
+ final String fileName = "some-file";
+ final Path sourceFile = Files.createFile(sourceDir.resolve(fileName));
assertEquals(SystemUtils.IS_OS_WINDOWS, sourceFile.toFile().canExecute());
@@ -1658,7 +1642,7 @@ public class FileUtilsTest extends AbstractTempDirTest {
FileUtils.copyDirectory(sourceDir.toFile(), destDir.toFile());
- final Path destFile = destDir.resolve(filename);
+ final Path destFile = destDir.resolve(fileName);
assertTrue(destFile.toFile().exists());
assertTrue(destFile.toFile().canExecute());
@@ -2445,6 +2429,41 @@ public class FileUtilsTest extends AbstractTempDirTest {
}
@Test
+ public void testReadFileToByteArray_Errors() {
+ assertThrows(NullPointerException.class, () -> FileUtils.readFileToByteArray(null));
+ assertThrows(IOException.class, () -> FileUtils.readFileToByteArray(new File("non-exsistent")));
+ assertThrows(IOException.class, () -> FileUtils.readFileToByteArray(tempDirFile));
+ }
+
+ @Test
+ @EnabledIf("isPosixFilePermissionsSupported")
+ public void testReadFileToByteArray_IOExceptionOnPosixFileSystem() throws Exception {
+ final File file = TestUtils.newFile(tempDirFile, "cant-read.txt");
+ TestUtils.createFile(file, 100);
+ Files.setPosixFilePermissions(file.toPath(), PosixFilePermissions.fromString("---------"));
+
+ assertThrows(IOException.class, () -> FileUtils.readFileToByteArray(file));
+ }
+
+ @Test
+ public void testReadFileToString_Errors() {
+ assertThrows(NullPointerException.class, () -> FileUtils.readFileToString(null));
+ assertThrows(IOException.class, () -> FileUtils.readFileToString(new File("non-exsistent")));
+ assertThrows(IOException.class, () -> FileUtils.readFileToString(tempDirFile));
+ assertThrows(UnsupportedCharsetException.class, () -> FileUtils.readFileToString(tempDirFile, "unsupported-charset"));
+ }
+
+ @Test
+ @EnabledIf("isPosixFilePermissionsSupported")
+ public void testReadFileToString_IOExceptionOnPosixFileSystem() throws Exception {
+ final File file = TestUtils.newFile(tempDirFile, "cant-read.txt");
+ TestUtils.createFile(file, 100);
+ Files.setPosixFilePermissions(file.toPath(), PosixFilePermissions.fromString("---------"));
+
+ assertThrows(IOException.class, () -> FileUtils.readFileToString(file));
+ }
+
+ @Test
public void testReadFileToStringWithDefaultEncoding() throws Exception {
final File file = new File(tempDirFile, "read.obj");
final String fixture = "Hello /u1234";
@@ -2478,6 +2497,24 @@ public class FileUtilsTest extends AbstractTempDirTest {
}
@Test
+ public void testReadLines_Errors() {
+ assertThrows(NullPointerException.class, () -> FileUtils.readLines(null));
+ assertThrows(IOException.class, () -> FileUtils.readLines(new File("non-exsistent")));
+ assertThrows(IOException.class, () -> FileUtils.readLines(tempDirFile));
+ assertThrows(UnsupportedCharsetException.class, () -> FileUtils.readLines(tempDirFile, "unsupported-charset"));
+ }
+
+ @Test
+ @EnabledIf("isPosixFilePermissionsSupported")
+ public void testReadLines_IOExceptionOnPosixFileSystem() throws Exception {
+ final File file = TestUtils.newFile(tempDirFile, "cant-read.txt");
+ TestUtils.createFile(file, 100);
+ Files.setPosixFilePermissions(file.toPath(), PosixFilePermissions.fromString("---------"));
+
+ assertThrows(IOException.class, () -> FileUtils.readLines(file));
+ }
+
+ @Test
public void testSizeOf() throws Exception {
final File file = new File(tempDirFile, getName());