diff --git a/backend_windows.go b/backend_windows.go index fe09be87..c4fe7243 100644 --- a/backend_windows.go +++ b/backend_windows.go @@ -294,7 +294,6 @@ func (w *Watcher) WatchList() []string { // This should all be removed at some point, and just use windows.FILE_NOTIFY_* const ( sysFSALLEVENTS = 0xfff - sysFSATTRIB = 0x4 sysFSCREATE = 0x100 sysFSDELETE = 0x200 sysFSDELETESELF = 0x400 @@ -320,9 +319,6 @@ func (w *Watcher) newEvent(name string, mask uint32) Event { if mask&sysFSMOVE == sysFSMOVE || mask&sysFSMOVESELF == sysFSMOVESELF || mask&sysFSMOVEDFROM == sysFSMOVEDFROM { e.Op |= Rename } - if mask&sysFSATTRIB == sysFSATTRIB { - e.Op |= Chmod - } return e } @@ -735,9 +731,6 @@ func (w *Watcher) toWindowsFlags(mask uint64) uint32 { if mask&sysFSMODIFY != 0 { m |= windows.FILE_NOTIFY_CHANGE_LAST_WRITE } - if mask&sysFSATTRIB != 0 { - m |= windows.FILE_NOTIFY_CHANGE_ATTRIBUTES - } if mask&(sysFSMOVE|sysFSCREATE|sysFSDELETE) != 0 { m |= windows.FILE_NOTIFY_CHANGE_FILE_NAME | windows.FILE_NOTIFY_CHANGE_DIR_NAME } diff --git a/backend_windows_test.go b/backend_windows_test.go index 213f14cb..dd593dc2 100644 --- a/backend_windows_test.go +++ b/backend_windows_test.go @@ -50,3 +50,18 @@ func TestRemoveState(t *testing.T) { } check(0) } + +func TestWindowsNoAttributeChanges(t *testing.T) { + tmp := t.TempDir() + file := filepath.Join(tmp, "TestFsnotifyEventsExisting.testfile") + + touch(t, file) // Create a file before watching directory + w := newCollector(t, tmp) + w.collect(t) + chmod(t, 0o400, file) // Make the file read-only, which is an attribute change + + have := w.stop(t) + if len(have) != 0 { + t.Fatalf("should not have received any events, received:\n%s", have) + } +} diff --git a/fsnotify_test.go b/fsnotify_test.go index 54e446dc..62a478db 100644 --- a/fsnotify_test.go +++ b/fsnotify_test.go @@ -252,20 +252,12 @@ func TestWatchCreate(t *testing.T) { symlink(t, filepath.Join(tmp, "file"), tmp, "link") }, ` create /link - - windows: - create /link - write /link `}, {"create new symlink to directory", func(t *testing.T, w *Watcher, tmp string) { addWatch(t, w, tmp) symlink(t, tmp, tmp, "link") }, ` create /link - - windows: - create /link - write /link `}, // FIFO @@ -548,10 +540,6 @@ func TestWatchSymlink(t *testing.T) { }, ` create /link - windows: - create /link - write /link - # No events at all on Dragonfly # TODO: should fix this. dragonfly: