mirror of https://github.com/docker/compose.git
watch: fix a bug when a file and its ancestor both have direct watches (#863)
This commit is contained in:
parent
1fd7ca5440
commit
9e261c18b3
|
@ -290,6 +290,25 @@ func TestMoveAndReplace(t *testing.T) {
|
||||||
f.assertEvents(file)
|
f.assertEvents(file)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestWatchBothDirAndFile(t *testing.T) {
|
||||||
|
f := newNotifyFixture(t)
|
||||||
|
defer f.tearDown()
|
||||||
|
|
||||||
|
dir := f.JoinPath("foo")
|
||||||
|
fileA := f.JoinPath("foo", "a")
|
||||||
|
fileB := f.JoinPath("foo", "b")
|
||||||
|
f.WriteFile(fileA, "a")
|
||||||
|
f.WriteFile(fileB, "b")
|
||||||
|
|
||||||
|
f.watch(fileA)
|
||||||
|
f.watch(dir)
|
||||||
|
f.fsync()
|
||||||
|
f.events = nil
|
||||||
|
|
||||||
|
f.WriteFile(fileB, "b-new")
|
||||||
|
f.assertEvents(fileB)
|
||||||
|
}
|
||||||
|
|
||||||
type notifyFixture struct {
|
type notifyFixture struct {
|
||||||
*tempdir.TempDirFixture
|
*tempdir.TempDirFixture
|
||||||
notify Notify
|
notify Notify
|
||||||
|
@ -318,6 +337,13 @@ func newNotifyFixture(t *testing.T) *notifyFixture {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *notifyFixture) watch(path string) {
|
||||||
|
err := f.notify.Add(path)
|
||||||
|
if err != nil {
|
||||||
|
f.T().Fatalf("notify.Add: %s", path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (f *notifyFixture) assertEvents(expected ...string) {
|
func (f *notifyFixture) assertEvents(expected ...string) {
|
||||||
f.fsync()
|
f.fsync()
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,8 @@
|
||||||
package watch
|
package watch
|
||||||
|
|
||||||
import (
|
import "github.com/windmilleng/tilt/internal/ospath"
|
||||||
"os"
|
|
||||||
"path/filepath"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
func pathIsChildOf(path string, parent string) bool {
|
func pathIsChildOf(path string, parent string) bool {
|
||||||
relPath, err := filepath.Rel(parent, path)
|
_, isChild := ospath.Child(parent, path)
|
||||||
if err != nil {
|
return isChild
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
if relPath == "." {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
if filepath.IsAbs(relPath) || strings.HasPrefix(relPath, ".."+string(os.PathSeparator)) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue