diff options
-rw-r--r-- | tests/matrix/dir_test.go | 18 | ||||
-rw-r--r-- | tests/test_helpers/helpers.go | 4 |
2 files changed, 21 insertions, 1 deletions
diff --git a/tests/matrix/dir_test.go b/tests/matrix/dir_test.go index e7a0b22..2f9f1b0 100644 --- a/tests/matrix/dir_test.go +++ b/tests/matrix/dir_test.go @@ -1,6 +1,7 @@ package matrix import ( + "fmt" "os" "syscall" "testing" @@ -30,3 +31,20 @@ func TestDirOverwrite(t *testing.T) { t.Fatal(err) } } + +// Test that we can create and remove a directory regardless of the permission it has +// https://github.com/rfjakob/gocryptfs/issues/354 +func TestRmdirPerms(t *testing.T) { + for _, perm := range []uint32{0000, 0100, 0200, 0300, 0400, 0500, 0600, 0700} { + dir := fmt.Sprintf("TestRmdir%#o", perm) + path := test_helpers.DefaultPlainDir + "/" + dir + err := syscall.Mkdir(path, perm) + if err != nil { + t.Fatalf("Mkdir %q: %v", dir, err) + } + err = syscall.Rmdir(path) + if err != nil { + t.Fatalf("Rmdir %q: %v", dir, err) + } + } +} diff --git a/tests/test_helpers/helpers.go b/tests/test_helpers/helpers.go index e735cf4..f010a56 100644 --- a/tests/test_helpers/helpers.go +++ b/tests/test_helpers/helpers.go @@ -227,7 +227,9 @@ func TestMkdirRmdir(t *testing.T, plainDir string) { } err = syscall.Unlink(dir + "/file") if err != nil { - t.Error(err) + var st syscall.Stat_t + syscall.Stat(dir, &st) + t.Errorf("err=%v mode=%0o", err, st.Mode) return } err = syscall.Rmdir(dir) |