Skip to content

Commit

Permalink
Merge pull request #8 from zeripath/replace-fsnotify-455
Browse files Browse the repository at this point in the history
Use common error when removing an unwatched file
  • Loading branch information
shogo82148 committed Jul 17, 2022
2 parents 0b2c705 + 5e51ada commit 4388b7a
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 9 deletions.
3 changes: 2 additions & 1 deletion fsnotify.go
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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

0 comments on commit 4388b7a

Please sign in to comment.