hanayo/vendor/github.com/rjeczalik/notify/tree_recursive_test.go
2019-02-23 13:29:15 +00:00

525 lines
9.4 KiB
Go

// Copyright (c) 2014-2015 The Notify Authors. All rights reserved.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
package notify
import "testing"
func TestRecursiveTree(t *testing.T) {
n := NewRecursiveTreeTest(t, "testdata/vfs.txt")
defer n.Close()
ch := NewChans(5)
watches := [...]RCase{
// i=0
{
Call: Call{
F: FuncWatch,
P: "src/github.com/rjeczalik/fs/fs.go",
C: ch[0],
E: Create,
},
Record: []Call{
{
F: FuncWatch,
P: "src/github.com/rjeczalik/fs/fs.go",
E: Create,
},
},
},
// i=1
{
Call: Call{
F: FuncWatch,
P: "src/github.com/rjeczalik/fs/cmd/...",
C: ch[1],
E: Remove,
},
Record: []Call{
{
F: FuncRecursiveWatch,
P: "src/github.com/rjeczalik/fs/cmd",
E: Remove,
},
},
},
// i=2
{
Call: Call{
F: FuncWatch,
P: "src/github.com/rjeczalik/fs",
C: ch[2],
E: Rename,
},
Record: []Call{
{
F: FuncRecursiveWatch,
P: "src/github.com/rjeczalik/fs",
E: Create | Remove | Rename,
},
{
F: FuncRecursiveUnwatch,
P: "src/github.com/rjeczalik/fs/cmd",
},
{
F: FuncUnwatch,
P: "src/github.com/rjeczalik/fs/fs.go",
},
},
},
// i=3
{
Call: Call{
F: FuncWatch,
P: "src/github.com/ppknap/link/README.md",
C: ch[0],
E: Create,
},
Record: []Call{
{
F: FuncWatch,
P: "src/github.com/ppknap/link/README.md",
E: Create,
},
},
},
// i=4
{
Call: Call{
F: FuncWatch,
P: "src/github.com/ppknap/link/include/...",
C: ch[3],
E: Remove,
},
Record: []Call{
{
F: FuncRecursiveWatch,
P: "src/github.com/ppknap/link/include",
E: Remove,
},
},
},
// i=5
{
Call: Call{
F: FuncWatch,
P: "src/github.com/ppknap/link/include",
C: ch[0],
E: Write,
},
Record: []Call{
{
F: FuncRecursiveRewatch,
P: "src/github.com/ppknap/link/include",
NP: "src/github.com/ppknap/link/include",
E: Remove,
NE: Remove | Write,
},
},
},
// i=6
{
Call: Call{
F: FuncWatch,
P: "src/github.com/ppknap/link/test/Jamfile.jam",
C: ch[0],
E: Rename,
},
Record: []Call{
{
F: FuncWatch,
P: "src/github.com/ppknap/link/test/Jamfile.jam",
E: Rename,
},
},
},
// i=7
{
Call: Call{
F: FuncWatch,
P: "src/github.com/ppknap/link/test/Jamfile.jam",
C: ch[0],
E: Create,
},
Record: []Call{
{
F: FuncRewatch,
P: "src/github.com/ppknap/link/test/Jamfile.jam",
E: Rename,
NE: Rename | Create,
},
},
},
// i=8
{
Call: Call{
F: FuncWatch,
P: "src/github.com/ppknap/...",
C: ch[0],
E: Create,
},
Record: []Call{
{
F: FuncRecursiveWatch,
P: "src/github.com/ppknap",
E: Create | Remove | Write | Rename,
},
{
F: FuncUnwatch,
P: "src/github.com/ppknap/link/README.md",
},
{
F: FuncRecursiveUnwatch,
P: "src/github.com/ppknap/link/include",
},
{
F: FuncUnwatch,
P: "src/github.com/ppknap/link/test/Jamfile.jam",
},
},
},
// i=9
{
Call: Call{
F: FuncWatch,
P: "src/github.com/rjeczalik/fs/README.md",
C: ch[0],
E: Rename,
},
Record: nil,
},
// i=10
{
Call: Call{
F: FuncWatch,
P: "src/github.com/rjeczalik/fs/cmd/gotree",
C: ch[2],
E: Create | Remove,
},
Record: nil,
},
// i=11
{
Call: Call{
F: FuncWatch,
P: "src/github.com/pblaszczyk/qttu/src/main.cc",
C: ch[0],
E: Create,
},
Record: []Call{
{
F: FuncWatch,
P: "src/github.com/pblaszczyk/qttu/src/main.cc",
E: Create,
},
},
},
// i=12
{
Call: Call{
F: FuncWatch,
P: "src/github.com/pblaszczyk/qttu/src/main.cc",
C: ch[0],
E: Remove,
},
Record: []Call{
{
F: FuncRewatch,
P: "src/github.com/pblaszczyk/qttu/src/main.cc",
E: Create,
NE: Create | Remove,
},
},
},
// i=13
{
Call: Call{
F: FuncWatch,
P: "src/github.com/pblaszczyk/qttu/src/main.cc",
C: ch[0],
E: Create | Remove,
},
Record: nil,
},
// i=14
{
Call: Call{
F: FuncWatch,
P: "src/github.com/pblaszczyk/qttu/src",
C: ch[0],
E: Create,
},
Record: []Call{
{
F: FuncRecursiveRewatch,
P: "src/github.com/pblaszczyk/qttu/src/main.cc",
NP: "src/github.com/pblaszczyk/qttu/src",
E: Create | Remove,
NE: Create | Remove,
},
},
},
// i=15
{
Call: Call{
F: FuncWatch,
P: "src/github.com/pblaszczyk/qttu",
C: ch[4],
E: Write,
},
Record: []Call{
{
F: FuncRecursiveRewatch,
P: "src/github.com/pblaszczyk/qttu/src",
NP: "src/github.com/pblaszczyk/qttu",
E: Create | Remove,
NE: Create | Remove | Write,
},
},
},
// i=16
{
Call: Call{
F: FuncWatch,
P: "src/github.com/rjeczalik/fs/fs.go",
C: ch[3],
E: Rename,
},
Record: nil,
},
}
n.ExpectRecordedCalls(watches[:])
events := [...]TCase{
// i=0
{
Event: Call{P: "src/github.com/rjeczalik/fs/fs.go", E: Rename},
Receiver: Chans{ch[2], ch[3]},
},
// i=1
{
Event: Call{P: "src/github.com/rjeczalik/fs/fs.go", E: Create},
Receiver: Chans{ch[0]},
},
// i=2
{
Event: Call{P: "src/github.com/rjeczalik/fs/fs.go/file", E: Create},
Receiver: Chans{ch[0]},
},
// i=3
{
Event: Call{P: "src/github.com/rjeczalik/fs", E: Rename},
Receiver: Chans{ch[2]},
},
// i=4
{
Event: Call{P: "src/github.com/rjeczalik/fs/fs_test.go", E: Rename},
Receiver: Chans{ch[2]},
},
// i=5
{
Event: Call{P: "src/github.com/rjeczalik/fs/cmd/mktree/main.go", E: Remove},
Receiver: Chans{ch[1]},
},
// i=6
{
Event: Call{P: "src/github.com/rjeczalik/fs/cmd/gotree", E: Remove},
Receiver: Chans{ch[1], ch[2]},
},
// i=7
{
Event: Call{P: "src/github.com/rjeczalik/fs/cmd", E: Remove},
Receiver: Chans{ch[1]},
},
// i=8
{
Event: Call{P: "src/github.com/rjeczalik/fs/fs.go/file", E: Write},
Receiver: nil,
},
// i=9
{
Event: Call{P: "src/github.com/rjeczalik/fs/fs.go/file", E: Write},
Receiver: nil,
},
// i=10
{
Event: Call{P: "src/github.com/rjeczalik/fs", E: Remove},
Receiver: nil,
},
// i=11
{
Event: Call{P: "src/github.com/rjeczalik/fs/cmd", E: Rename},
Receiver: Chans{ch[2]},
},
// i=12
{
Event: Call{P: "src/github.com/rjeczalik/fs/cmd/mktree/main.go", E: Write},
Receiver: nil,
},
// i=13
{
Event: Call{P: "src/github.com/rjeczalik/fs/cmd/gotree", E: Rename},
Receiver: nil,
},
// i=14
{
Event: Call{P: "src/github.com/rjeczalik/fs/cmd/file", E: Rename},
Receiver: nil,
},
// i=15
{
Event: Call{P: "src/github.com/rjeczalik/fs/fs.go", E: Rename},
Receiver: Chans{ch[2], ch[3]},
},
}
n.ExpectTreeEvents(events[:], ch)
stops := [...]RCase{
// i=0
{
Call: Call{
F: FuncStop,
C: ch[1],
},
Record: nil,
},
{
Call: Call{
F: FuncStop,
C: ch[4],
},
Record: []Call{
{
F: FuncRecursiveRewatch,
P: "src/github.com/pblaszczyk/qttu",
NP: "src/github.com/pblaszczyk/qttu",
E: Create | Remove | Write,
NE: Create | Remove,
},
},
},
}
n.ExpectRecordedCalls(stops[:])
}
func TestRecursiveTreeWatchInactiveMerge(t *testing.T) {
n := NewRecursiveTreeTest(t, "testdata/vfs.txt")
defer n.Close()
ch := NewChans(1)
watches := [...]RCase{
// i=0
{
Call: Call{
F: FuncWatch,
P: "src/github.com/rjeczalik/fs",
C: ch[0],
E: Create,
},
Record: []Call{
{
F: FuncWatch,
P: "src/github.com/rjeczalik/fs",
E: Create,
},
},
},
// i=1
{
Call: Call{
F: FuncWatch,
P: "src/github.com/rjeczalik/fs/cmd/gotree/...",
C: ch[0],
E: Remove,
},
Record: []Call{
{
F: FuncRecursiveRewatch,
P: "src/github.com/rjeczalik/fs",
NP: "src/github.com/rjeczalik/fs",
E: Create,
NE: Create | Remove,
},
},
},
}
n.ExpectRecordedCalls(watches[:])
events := [...]TCase{
// i=0
{
Event: Call{P: "src/github.com/rjeczalik/fs/.fs.go.swp", E: Create},
Receiver: Chans{ch[0]},
},
// i=1
{
Event: Call{P: "src/github.com/rjeczalik/fs/.fs.go.swp", E: Remove},
Receiver: nil,
},
// i=2
{
Event: Call{P: "src/github.com/rjeczalik/fs", E: Remove},
Receiver: nil,
},
// i=3
{
Event: Call{P: "src/github.com/rjeczalik/fs/cmd/gotree/main.go", E: Remove},
Receiver: Chans{ch[0]},
},
}
n.ExpectTreeEvents(events[:], ch)
}
func TestRecursiveTree_Windows(t *testing.T) {
n := NewRecursiveTreeTest(t, "testdata/vfs.txt")
defer n.Close()
const ChangeFileName = Event(0x1)
ch := NewChans(1)
watches := [...]RCase{
// i=0
{
Call: Call{
F: FuncWatch,
P: "src/github.com/rjeczalik/fs",
C: ch[0],
E: ChangeFileName,
},
Record: []Call{
{
F: FuncWatch,
P: "src/github.com/rjeczalik/fs",
E: ChangeFileName,
},
},
},
}
n.ExpectRecordedCalls(watches[:])
events := [...]TCase{
// i=0
{
Event: Call{P: "src/github.com/rjeczalik/fs", E: ChangeFileName},
Receiver: Chans{ch[0]},
},
// i=1
{
Event: Call{P: "src/github.com/rjeczalik/fs/fs.go", E: ChangeFileName},
Receiver: Chans{ch[0]},
},
}
n.ExpectTreeEvents(events[:], ch)
}