gaper/watcher_test.go

86 lines
2.6 KiB
Go
Raw Normal View History

package gaper
2018-06-20 20:40:09 -05:00
import (
"os"
"path/filepath"
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestWatcherDefaultValues(t *testing.T) {
pollInterval := 0
watchItems := []string{filepath.Join("testdata", "server")}
var ignoreItems []string
var extensions []string
w, err := NewWatcher(pollInterval, watchItems, ignoreItems, extensions)
assert.Nil(t, err, "wacher error")
assert.Equal(t, 500, w.PollInterval)
2018-06-22 19:44:26 -05:00
assert.Equal(t, map[string]bool{"testdata/server": true}, w.WatchItems)
2018-06-20 20:40:09 -05:00
assert.Len(t, w.IgnoreItems, 0)
assert.Equal(t, map[string]bool{".go": true}, w.AllowedExtensions)
}
func TestWatcherGlobPath(t *testing.T) {
pollInterval := 0
watchItems := []string{filepath.Join("testdata", "server")}
ignoreItems := []string{"./testdata/**/*_test.go"}
var extensions []string
w, err := NewWatcher(pollInterval, watchItems, ignoreItems, extensions)
assert.Nil(t, err, "wacher error")
2018-06-22 19:44:26 -05:00
assert.Equal(t, map[string]bool{"testdata/server/main_test.go": true}, w.IgnoreItems)
}
func TestWatcherRemoveOverlapdPaths(t *testing.T) {
pollInterval := 0
watchItems := []string{filepath.Join("testdata", "server")}
ignoreItems := []string{"./testdata/**/*", "./testdata/server"}
var extensions []string
w, err := NewWatcher(pollInterval, watchItems, ignoreItems, extensions)
assert.Nil(t, err, "wacher error")
assert.Equal(t, map[string]bool{"./testdata/server": true}, w.IgnoreItems)
2018-06-20 20:40:09 -05:00
}
func TestWatcherWatchChange(t *testing.T) {
srvdir := filepath.Join("testdata", "server")
hiddendir := filepath.Join("testdata", "hidden-test")
hiddenfile1 := filepath.Join("testdata", ".hidden-file")
hiddenfile2 := filepath.Join("testdata", ".hidden-folder", ".gitkeep")
mainfile := filepath.Join("testdata", "server", "main.go")
testfile := filepath.Join("testdata", "server", "main_test.go")
pollInterval := 0
watchItems := []string{srvdir, hiddendir}
ignoreItems := []string{testfile}
extensions := []string{"go"}
w, err := NewWatcher(pollInterval, watchItems, ignoreItems, extensions)
assert.Nil(t, err, "wacher error")
go w.Watch()
time.Sleep(time.Millisecond * 500)
// update hidden files and dirs to check builtin hidden ignore is working
os.Chtimes(hiddenfile1, time.Now(), time.Now())
os.Chtimes(hiddenfile2, time.Now(), time.Now())
// update testfile first to check ignore is working
os.Chtimes(testfile, time.Now(), time.Now())
time.Sleep(time.Millisecond * 500)
os.Chtimes(mainfile, time.Now(), time.Now())
select {
case event := <-w.Events:
assert.Equal(t, mainfile, event)
case err := <-w.Errors:
assert.Nil(t, err, "wacher event error")
}
}