Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use common error when removing an unwatched file #460

Merged
merged 1 commit into from Jul 21, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 2 additions & 1 deletion fsnotify.go
Expand Up @@ -65,5 +65,6 @@ func (e Event) String() string {

// Common errors that can be reported by a watcher
var (
ErrEventOverflow = errors.New("fsnotify queue overflow")
ErrNonExistentWatch = errors.New("can't remove non-existent watcher")
ErrEventOverflow = errors.New("fsnotify queue overflow")
)
2 changes: 1 addition & 1 deletion inotify.go
Expand Up @@ -134,7 +134,7 @@ func (w *Watcher) Remove(name string) error {

// Remove it from inotify.
if !ok {
return fmt.Errorf("can't remove non-existent inotify watch for: %s", name)
return fmt.Errorf("%w: %s", ErrNonExistentWatch, name)
}

// We successfully removed the watch if InotifyRmWatch doesn't return an
Expand Down
5 changes: 4 additions & 1 deletion inotify_test.go
Expand Up @@ -8,6 +8,7 @@
package fsnotify

import (
"errors"
"fmt"
"os"
"path/filepath"
Expand Down Expand Up @@ -303,6 +304,8 @@ func TestInotifyRemoveTwice(t *testing.T) {
err = w.Remove(testFile)
if err == nil {
t.Fatalf("no error on removing invalid file")
} else if !errors.Is(err, ErrNonExistentWatch) {
t.Fatalf("unexpected error %v on removing invalid file", err)
}

w.mu.Lock()
Expand Down Expand Up @@ -384,7 +387,7 @@ func TestInotifyOverflow(t *testing.T) {
for dn := 0; dn < numDirs; dn++ {
testSubdir := fmt.Sprintf("%s/%d", testDir, dn)

err := os.Mkdir(testSubdir, 0777)
err := os.Mkdir(testSubdir, 0o777)
if err != nil {
t.Fatalf("Cannot create subdir: %v", err)
}
Expand Down
5 changes: 2 additions & 3 deletions kqueue.go
Expand Up @@ -74,7 +74,7 @@ func (w *Watcher) Close() error {
w.isClosed = true

// copy paths to remove while locked
var pathsToRemove = make([]string, 0, len(w.watches))
pathsToRemove := make([]string, 0, len(w.watches))
for name := range w.watches {
pathsToRemove = append(pathsToRemove, name)
}
Expand Down Expand Up @@ -107,7 +107,7 @@ func (w *Watcher) Remove(name string) error {
watchfd, ok := w.watches[name]
w.mu.Unlock()
if !ok {
return fmt.Errorf("can't remove non-existent kevent watch for: %s", name)
return fmt.Errorf("%w: %s", ErrNonExistentWatch, name)
}

const registerRemove = unix.EV_DELETE
Expand Down Expand Up @@ -442,7 +442,6 @@ func (w *Watcher) sendDirectoryChangeEvents(dirPath string) {
for _, fileInfo := range files {
filePath := filepath.Join(dirPath, fileInfo.Name())
err := w.sendFileCreatedEventIfNew(filePath, fileInfo)

if err != nil {
return
}
Expand Down
8 changes: 5 additions & 3 deletions windows.go
Expand Up @@ -188,8 +188,10 @@ type watch struct {
buf [4096]byte
}

type indexMap map[uint64]*watch
type watchMap map[uint32]indexMap
type (
indexMap map[uint64]*watch
watchMap map[uint32]indexMap
)

func (w *Watcher) wakeupReader() error {
e := syscall.PostQueuedCompletionStatus(w.port, 0, 0, nil)
Expand Down Expand Up @@ -316,7 +318,7 @@ func (w *Watcher) remWatch(pathname string) error {
watch := w.watches.get(ino)
w.mu.Unlock()
if watch == nil {
return fmt.Errorf("can't remove non-existent watch for: %s", pathname)
return fmt.Errorf("%w: %s", ErrNonExistentWatch, pathname)
}
if pathname == dir {
w.sendEvent(watch.path, watch.mask&sysFSIGNORED)
Expand Down