summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJakob Unterwurzacher2016-06-08 00:17:18 +0200
committerJakob Unterwurzacher2016-06-08 00:32:44 +0200
commit5da292828c3a58254560bb47d700186ff8c3ca9c (patch)
tree9a128cbefb86fe3f80fc0bfcf4bc6d8b4163a00e /tests
parentf58a8d8740364467ee9e3cf20cec8d47c4e59ad8 (diff)
fusefrontend: fix chown on dangling symlinks
We (actually, go-fuse) used to call Chown() instead of Lchown() which meant that the operation would fail on dangling symlinks. Fix this by calling os.Lchown() ourself. Also add a test case for this.
Diffstat (limited to 'tests')
-rw-r--r--tests/integration_tests/main_test.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/tests/integration_tests/main_test.go b/tests/integration_tests/main_test.go
index b6cb8ca..17f9d9d 100644
--- a/tests/integration_tests/main_test.go
+++ b/tests/integration_tests/main_test.go
@@ -437,3 +437,19 @@ func TestLongNames(t *testing.T) {
t.Errorf("Leftover files, cnt1=%d cnt2=%d", cnt1, cnt2)
}
}
+
+func TestLchown(t *testing.T) {
+ name := test_helpers.DefaultPlainDir + "symlink"
+ err := os.Symlink("/target/does/not/exist", name)
+ if err != nil {
+ t.Fatal(err)
+ }
+ err = os.Chown(name, os.Getuid(), os.Getgid())
+ if err == nil {
+ t.Error("Chown on dangling symlink should fail")
+ }
+ err = os.Lchown(name, os.Getuid(), os.Getgid())
+ if err != nil {
+ t.Error(err)
+ }
+}