Skip to content

Commit 87ddf5f

Browse files
eamonnmcmanusGoogle Java Core Libraries
authored andcommitted
Add a test to FilesTest about trying to delete an unreadable directory.
RELNOTES=n/a PiperOrigin-RevId: 828700505
1 parent d7c6d0b commit 87ddf5f

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

guava-tests/test/com/google/common/io/FilesTest.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package com.google.common.io;
1818

19+
import static com.google.common.io.Files.deleteDirectoryContents;
20+
import static com.google.common.io.Files.deleteRecursively;
21+
import static com.google.common.io.Files.touch;
1922
import static com.google.common.truth.Truth.assertThat;
2023
import static java.nio.charset.StandardCharsets.US_ASCII;
2124
import static java.nio.charset.StandardCharsets.UTF_16LE;
@@ -36,9 +39,13 @@
3639
import java.nio.ByteBuffer;
3740
import java.nio.MappedByteBuffer;
3841
import java.nio.channels.FileChannel.MapMode;
42+
import java.nio.file.Path;
43+
import java.nio.file.attribute.PosixFilePermission;
3944
import java.util.ArrayList;
45+
import java.util.EnumSet;
4046
import java.util.List;
4147
import java.util.Random;
48+
import java.util.Set;
4249
import junit.framework.TestSuite;
4350
import org.jspecify.annotations.NullUnmarked;
4451

@@ -407,6 +414,27 @@ public boolean delete() {
407414
private static final long serialVersionUID = 0;
408415
}
409416

417+
public void testDeleteRealUnreadableDirectory() throws Exception {
418+
File tempDir = createTempDir();
419+
File foo = file(tempDir, "foo");
420+
touch(foo);
421+
Path tempDirPath = tempDir.toPath();
422+
Set<PosixFilePermission> origPermissions =
423+
java.nio.file.Files.getPosixFilePermissions(tempDirPath);
424+
java.nio.file.Files.setPosixFilePermissions(
425+
tempDirPath, EnumSet.of(PosixFilePermission.OWNER_WRITE));
426+
427+
assertThrows(IOException.class, () -> deleteDirectoryContents(tempDir));
428+
429+
assertThrows(IOException.class, () -> deleteRecursively(tempDir));
430+
431+
java.nio.file.Files.setPosixFilePermissions(tempDirPath, origPermissions);
432+
assertTrue(foo.exists());
433+
434+
// Clean it up
435+
deleteRecursively(tempDir);
436+
}
437+
410438
public void testLineReading() throws IOException {
411439
File temp = createTempFile();
412440
assertThat(Files.readFirstLine(temp, UTF_8)).isNull();

0 commit comments

Comments
 (0)