github.com/checksum/notify@v0.0.0-20190119234841-59aa2d88664f/watcher_fen_test.go (about) 1 // Copyright (c) 2014-2015 The Notify Authors. All rights reserved. 2 // Use of this source code is governed by the MIT license that can be 3 // found in the LICENSE file. 4 5 // +build solaris 6 7 package notify 8 9 import ( 10 "os" 11 "path/filepath" 12 "testing" 13 ) 14 15 func fremove(w *W, path string, files []string) WCase { 16 cas := remove(w, path) 17 cas.Events[0] = &Call{P: path, E: FileDelete} 18 for _, f := range files { 19 cas.Events = append(cas.Events, &Call{P: f, E: FileDelete}) 20 } 21 return cas 22 } 23 24 func fwrite(w *W, path string, p []byte) WCase { 25 cas := write(w, path, p) 26 path = cas.Events[0].Path() 27 cas.Events[0] = &Call{P: path, E: FileModified} 28 return cas 29 } 30 31 func frename(w *W, path string, files []string) WCase { 32 const ext = ".notify" 33 cas := WCase{ 34 Action: func() { 35 file := filepath.Join(w.root, path) 36 if err := os.Rename(file, file+ext); err != nil { 37 w.Fatalf("Rename(%q, %q)=%v", path, path+ext, err) 38 } 39 }, 40 Events: []EventInfo{ 41 &Call{P: path + ext, E: osSpecificCreate}, 42 &Call{P: path, E: FileRenameFrom}, 43 }, 44 } 45 for _, f := range files { 46 cas.Events = append(cas.Events, &Call{P: f, E: FileRenameFrom}) 47 } 48 return cas 49 } 50 51 var events = []Event{ 52 FileModified, 53 FileAttrib, 54 FileRenameFrom, 55 osSpecificCreate, 56 FileDelete, 57 } 58 59 func TestWatcherFen(t *testing.T) { 60 w := NewWatcherTest(t, "testdata/vfs.txt", events...) 61 defer w.Close() 62 63 cases := [...]WCase{ 64 fremove(w, "src/github.com/ppknap/link/include/coost/link", []string{ 65 "src/github.com/ppknap/link/include/coost/link/definitions.hpp", 66 "src/github.com/ppknap/link/include/coost/link/detail/bundle.hpp", 67 "src/github.com/ppknap/link/include/coost/link/detail/container_invoker.hpp", 68 "src/github.com/ppknap/link/include/coost/link/detail/container_value_trait.hpp", 69 "src/github.com/ppknap/link/include/coost/link/detail/dummy_type.hpp", 70 "src/github.com/ppknap/link/include/coost/link/detail/function_trait.hpp", 71 "src/github.com/ppknap/link/include/coost/link/detail/immediate_invoker.hpp", 72 "src/github.com/ppknap/link/include/coost/link/detail/stdhelpers/always_same.hpp", 73 "src/github.com/ppknap/link/include/coost/link/detail/stdhelpers/make_unique.hpp", 74 "src/github.com/ppknap/link/include/coost/link/detail/stdhelpers", 75 "src/github.com/ppknap/link/include/coost/link/detail/vertex.hpp", 76 "src/github.com/ppknap/link/include/coost/link/detail/wire.hpp", 77 "src/github.com/ppknap/link/include/coost/link/detail", 78 "src/github.com/ppknap/link/include/coost/link/link.hpp", 79 }, 80 ), 81 fwrite(w, "src/github.com/rjeczalik/fs/fs.go", []byte("XD")), 82 fremove(w, "src/github.com/ppknap/link/README.md", nil), 83 frename(w, "src/github.com/rjeczalik/fs/fs.go", nil), 84 frename(w, "src/github.com/rjeczalik/fs/cmd/gotree", []string{ 85 "src/github.com/rjeczalik/fs/cmd/gotree/go.go", 86 "src/github.com/rjeczalik/fs/cmd/gotree/main.go", 87 }, 88 ), 89 } 90 91 w.ExpectAll(cases[:]) 92 }