12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package watcher
- import (
- "bufio"
- "os"
- "testing"
- "time"
- "github.com/stretchr/testify/assert"
- )
- type mockNotifier struct {
- eventPath string
- }
- func (n *mockNotifier) WatcherItemDidChange(path string) {
- n.eventPath = path
- }
- func (n *mockNotifier) WatcherDidError(err error) {
- }
- func TestFileChanged(t *testing.T) {
- filePath := "test_file"
- f, err := os.Create(filePath)
- assert.NoError(t, err)
- defer func() {
- f.Close()
- os.Remove(filePath)
- }()
- service, err := NewFile()
- assert.NoError(t, err)
- err = service.Add(filePath)
- assert.NoError(t, err)
- n := &mockNotifier{}
- go service.Start(n)
- f.Sync()
- w := bufio.NewWriter(f)
- _, err = w.WriteString("hello Austin, do you like my file watcher?\n")
- assert.NoError(t, err)
- err = w.Flush()
- assert.NoError(t, err)
- // give it time to trigger
- time.Sleep(20 * time.Millisecond)
- service.Shutdown()
- assert.Equal(t, filePath, n.eventPath, "notifier didn't get an new file write event")
- }
|