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) | 
