summaryrefslogtreecommitdiff
path: root/watch_test.go
diff options
context:
space:
mode:
authorPhilipp Tanlak <philipp.tanlak@gmail.com>2023-08-11 18:31:20 +0200
committerPhilipp Tanlak <philipp.tanlak@gmail.com>2023-08-11 18:31:20 +0200
commit062b36fe5725d1267c66db2e506b4131d78ce772 (patch)
tree998e5260feb1babac8dae512b56d67d8f20f7266 /watch_test.go
parent7e4cf39a0ba6ccbd5cc036700a8b1ff9358ecc3d (diff)
simplify project structure
Diffstat (limited to 'watch_test.go')
-rw-r--r--watch_test.go72
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()
+}