diff options
| author | Bernhard Guillon <Bernhard.Guillon@begu.org> | 2026-07-06 21:26:29 +0200 |
|---|---|---|
| committer | Bernhard Guillon <Bernhard.Guillon@begu.org> | 2026-07-06 21:26:29 +0200 |
| commit | 8b22a36d1c068f9baee68799b0c1f51ecb999e9d (patch) | |
| tree | f460fd80e8c1578db2bd365b52caf1734d473b73 /watcher.go | |
| parent | 7512c95fa3f4b4e4ccdf452024f314a9a3c3b60f (diff) | |
| download | sourcewatch-8b22a36d1c068f9baee68799b0c1f51ecb999e9d.tar.gz sourcewatch-8b22a36d1c068f9baee68799b0c1f51ecb999e9d.zip | |
Add watcher tests, refactor watch() to accept context
- Added watcher_test.go: 10 tests covering create, write, remove,
rename, ignored files, debouncing, directory creation/removal,
and manifest updates
- Refactored watch() to accept context.Context for clean cancellation
- Added signal handling (SIGINT/SIGTERM) for graceful shutdown in main.go
- Fixed test expectations (version two = 11 bytes, not 10)
Diffstat (limited to 'watcher.go')
| -rw-r--r-- | watcher.go | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -1,6 +1,7 @@ package main import ( + "context" "log" "os" "path/filepath" @@ -12,7 +13,7 @@ import ( ignore "github.com/sabhiram/go-gitignore" ) -func watch(hostDir, dataDir string, manifest *Manifest, rules *ignore.GitIgnore, dryRun, verbose bool) error { +func watch(ctx context.Context, hostDir, dataDir string, manifest *Manifest, rules *ignore.GitIgnore, dryRun, verbose bool) error { watcher, err := fsnotify.NewWatcher() if err != nil { return err @@ -28,6 +29,9 @@ func watch(hostDir, dataDir string, manifest *Manifest, rules *ignore.GitIgnore, for { select { + case <-ctx.Done(): + return nil + case event, ok := <-watcher.Events: if !ok { return nil |
