aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2018-07-26 14:43:03 +0200
committerMartin Polden <mpolden@mpolden.no>2018-07-26 14:43:03 +0200
commit28f2c625a69cf15c7c32964a65ce05a76819d130 (patch)
tree13fe102983d3564d41714d0a0a674a2d47449007
parent616d23ab13699ffe2386af828b33852545ec82e5 (diff)
Fix rescanning
-rw-r--r--watcher/watcher.go13
-rw-r--r--watcher/watcher_test.go17
2 files changed, 23 insertions, 7 deletions
diff --git a/watcher/watcher.go b/watcher/watcher.go
index 973b0a1..fb5ef2a 100644
--- a/watcher/watcher.go
+++ b/watcher/watcher.go
@@ -74,12 +74,21 @@ func (w *watcher) reload() {
func (w *watcher) rescan() {
for _, p := range w.config.Paths {
- filepath.Walk(p.Name, func(path string, info os.FileInfo, err error) error {
+ err := filepath.Walk(p.Name, func(path string, info os.FileInfo, err error) error {
+ if err != nil {
+ return err
+ }
if info == nil || !info.Mode().IsRegular() {
return nil
}
- return w.handle(path)
+ if err := w.handle(path); err != nil {
+ w.log.Printf("Skipping event: %s", err)
+ }
+ return nil
})
+ if err != nil {
+ w.log.Printf("Rescanning %s failed: %s", p.Name, err)
+ }
}
}
diff --git a/watcher/watcher_test.go b/watcher/watcher_test.go
index 3051ad9..399eba8 100644
--- a/watcher/watcher_test.go
+++ b/watcher/watcher_test.go
@@ -74,16 +74,23 @@ func TestRescanning(t *testing.T) {
dir := tempDir()
defer os.RemoveAll(dir)
+ f1 := filepath.Join(dir, "foo")
+ f2 := filepath.Join(dir, "bar")
var files []string
w := testWatcher(dir, func(name, postCommand string, remove bool) error {
+ if name != f1 {
+ return fmt.Errorf("unhandled file: %s", name)
+ }
files = append(files, name)
return nil
})
defer w.Stop()
- // File is written before watcher is started
- f := filepath.Join(dir, "foo")
- if err := ioutil.WriteFile(f, []byte{0}, 0644); err != nil {
+ // Files are written before watcher is started
+ if err := ioutil.WriteFile(f1, []byte{0}, 0644); err != nil {
+ t.Fatal(err)
+ }
+ if err := ioutil.WriteFile(f2, []byte{0}, 0644); err != nil {
t.Fatal(err)
}
@@ -97,12 +104,12 @@ func TestRescanning(t *testing.T) {
// USR1 triggers rescan
w.signal <- syscall.SIGUSR1
- ok, err := awaitFile(&files, f)
+ ok, err := awaitFile(&files, f1)
if err != nil {
t.Fatal(err)
}
if !ok {
- t.Errorf("want %s, got %s", f, files[0])
+ t.Errorf("want %s, got %s", f1, files[0])
}
}