From 75083b6e6f3c923355d2fb7fdaa14eff5dc1dd9b Mon Sep 17 00:00:00 2001 From: Anthony RAYMOND Date: Sun, 15 Dec 2019 04:56:50 +0100 Subject: [PATCH] Fix a bug on windows when isHiddenFile returns an error --- ishidden_windows.go | 15 +++++++++++++++ ishidden_windows_test.go | 19 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 ishidden_windows_test.go diff --git a/ishidden_windows.go b/ishidden_windows.go index 306c6b7..7f68408 100644 --- a/ishidden_windows.go +++ b/ishidden_windows.go @@ -3,17 +3,32 @@ package watcher import ( + "os" "syscall" ) func isHiddenFile(path string) (bool, error) { pointer, err := syscall.UTF16PtrFromString(path) if err != nil { + if os.IsNotExist(err) { + err = &os.PathError{ + Op: "isHidden", + Path: path, + Err: err, + } + } return false, err } attributes, err := syscall.GetFileAttributes(pointer) if err != nil { + if os.IsNotExist(err) { + err = &os.PathError{ + Op: "isHidden", + Path: path, + Err: err, + } + } return false, err } diff --git a/ishidden_windows_test.go b/ishidden_windows_test.go new file mode 100644 index 0000000..29938a5 --- /dev/null +++ b/ishidden_windows_test.go @@ -0,0 +1,19 @@ +// +build windows + +package watcher + +import ( + "os" + "testing" +) + +func TestIsHiddenFileReturnsPathError(t *testing.T) { + _, err := isHiddenFile("./qqdkqdsdmlqdsd.nop") + if err == nil { + t.Fatal("isHidden should have returned an error") + } + + if _, ok := err.(*os.PathError); !ok { + t.Fatal("Error is not a PathError") + } +} \ No newline at end of file