diff options
Diffstat (limited to 'watch_test.go')
| -rw-r--r-- | watch_test.go | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/watch_test.go b/watch_test.go new file mode 100644 index 0000000..a1cd054 --- /dev/null +++ b/watch_test.go @@ -0,0 +1,72 @@ +package flyscrape_test + +import ( + "errors" + "os" + "testing" + "time" + + "flyscrape" + + "github.com/stretchr/testify/require" +) + +func TestWatch(t *testing.T) { + f := tmpfile(t) + defer os.Remove(f.Name()) + write(f, "test 1") + + calls := 0 + done := make(chan struct{}) + + go func() { + err := flyscrape.Watch(f.Name(), func(s string) error { + calls++ + if calls == 1 { + require.Equal(t, "test 1", s) + return nil + } + if calls == 2 { + require.Equal(t, "test 2", s) + return flyscrape.StopWatch + } + return nil + }) + require.NoError(t, err) + close(done) + }() + + write(f, "test 2") + <-done +} + +func TestWatchError(t *testing.T) { + f := tmpfile(t) + defer os.Remove(f.Name()) + + done := make(chan struct{}) + go func() { + err := flyscrape.Watch(f.Name(), func(s string) error { + return errors.New("test") + }) + require.Error(t, err) + close(done) + }() + + write(f, "test 2") + <-done +} + +func tmpfile(t *testing.T) *os.File { + f, err := os.CreateTemp("", "scrape.js") + require.NoError(t, err) + return f +} + +func write(f *os.File, s string) { + time.Sleep(10 * time.Millisecond) + f.Seek(0, 0) + f.Truncate(0) + f.WriteString(s) + f.Sync() +} |