diff options
| author | Philipp Tanlak <philipp.tanlak@gmail.com> | 2023-08-11 18:31:20 +0200 |
|---|---|---|
| committer | Philipp Tanlak <philipp.tanlak@gmail.com> | 2023-08-11 18:31:20 +0200 |
| commit | 062b36fe5725d1267c66db2e506b4131d78ce772 (patch) | |
| tree | 998e5260feb1babac8dae512b56d67d8f20f7266 /watch_test.go | |
| parent | 7e4cf39a0ba6ccbd5cc036700a8b1ff9358ecc3d (diff) | |
simplify project structure
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() +} |