From e1ee394c262bd5cdcdbff7565300cd88a26c5266 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Sat, 7 Mar 2015 14:35:29 +0100 Subject: [PATCH] Add test for osutil.InWritableDir --- internal/osutil/osutil_test.go | 63 +++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/internal/osutil/osutil_test.go b/internal/osutil/osutil_test.go index 74abd1f8d..40fcae469 100644 --- a/internal/osutil/osutil_test.go +++ b/internal/osutil/osutil_test.go @@ -15,4 +15,65 @@ package osutil_test -// Empty test file to generate 0% coverage rather than no coverage +import ( + "os" + "testing" + + "github.com/syncthing/syncthing/internal/osutil" +) + +func TestInWriteableDir(t *testing.T) { + err := os.RemoveAll("testdata") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll("testdata") + + os.Mkdir("testdata", 0700) + os.Mkdir("testdata/rw", 0700) + os.Mkdir("testdata/ro", 0500) + + create := func(name string) error { + fd, err := os.Create(name) + if err != nil { + return err + } + fd.Close() + return nil + } + + // These should succeed + + err = osutil.InWritableDir(create, "testdata/file") + if err != nil { + t.Error("testdata/file:", err) + } + err = osutil.InWritableDir(create, "testdata/rw/foo") + if err != nil { + t.Error("testdata/rw/foo:", err) + } + err = osutil.InWritableDir(os.Remove, "testdata/rw/foo") + if err != nil { + t.Error("testdata/rw/foo:", err) + } + + err = osutil.InWritableDir(create, "testdata/ro/foo") + if err != nil { + t.Error("testdata/ro/foo:", err) + } + err = osutil.InWritableDir(os.Remove, "testdata/ro/foo") + if err != nil { + t.Error("testdata/ro/foo:", err) + } + + // These should not + + err = osutil.InWritableDir(create, "testdata/nonexistent/foo") + if err == nil { + t.Error("testdata/nonexistent/foo returned nil error") + } + err = osutil.InWritableDir(create, "testdata/file/foo") + if err == nil { + t.Error("testdata/file/foo returned nil error") + } +}