w.watches[path] = watchfd
w.paths[watchfd] = path
+
+ fi, _ := os.Stat(path)
+ w.finfo[watchfd] = fi
}
syscall.SetKevent(watchEntry, watchfd, syscall.EVFILT_VNODE, syscall.EV_ADD|syscall.EV_CLEAR)
return &os.PathError{"kevent_add_watch", path, os.Errno(int(watchEntry.Data))}
}
- fi, _ := os.Stat(path)
- w.finfo[watchfd] = fi
-
return nil
}
f.Sync()
f.Close()
+ time.Sleep(200e6) // give system time to sync write change before delete
+
os.Remove(testFile)
// We expect this event to be received almost immediately, but let's wait 500 ms to be sure
t.Fatalf("rename failed: %s", err)
}
- os.Remove(testFileRenamed)
-
// We expect this event to be received almost immediately, but let's wait 500 ms to be sure
time.Sleep(500e6) // 500 ms
if renameReceived == 0 {
case <-time.After(1e9):
t.Fatal("event stream was not closed after 1 second")
}
+
+ os.Remove(testFileRenamed)
}
func TestFsnotifyAttrib(t *testing.T) {
t.Fatalf("chmod failed: %s", err)
}
- os.Remove(testFile)
-
// We expect this event to be received almost immediately, but let's wait 500 ms to be sure
time.Sleep(500e6) // 500 ms
if attribReceived == 0 {
case <-time.After(1e9):
t.Fatal("event stream was not closed after 1 second")
}
+
+ os.Remove(testFile)
}
func TestFsnotifyClose(t *testing.T) {