+++ /dev/null
-// 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.
-
-// +build linux
-
-package notify
-
-import (
- "os"
- "path/filepath"
- "testing"
-)
-
-func icreate(w *W, path string) WCase {
- cas := create(w, path)
- cas.Events = append(cas.Events,
- &Call{P: path, E: InCreate},
- )
- return cas
-}
-
-func iremove(w *W, path string) WCase {
- cas := remove(w, path)
- cas.Events = append(cas.Events,
- &Call{P: path, E: InDelete},
- )
- return cas
-}
-
-func iopen(w *W, path string) WCase {
- return WCase{
- Action: func() {
- f, err := os.OpenFile(filepath.Join(w.root, path), os.O_RDWR, 0644)
- if err != nil {
- w.Fatalf("OpenFile(%q)=%v", path, err)
- }
- if err := f.Close(); err != nil {
- w.Fatalf("Close(%q)=%v", path, err)
- }
- },
- Events: []EventInfo{
- &Call{P: path, E: InAccess},
- &Call{P: path, E: InOpen},
- &Call{P: path, E: InCloseNowrite},
- },
- }
-}
-
-func iread(w *W, path string, p []byte) WCase {
- return WCase{
- Action: func() {
- f, err := os.OpenFile(filepath.Join(w.root, path), os.O_RDWR, 0644)
- if err != nil {
- w.Fatalf("OpenFile(%q)=%v", path, err)
- }
- if _, err := f.Read(p); err != nil {
- w.Fatalf("Read(%q)=%v", path, err)
- }
- if err := f.Close(); err != nil {
- w.Fatalf("Close(%q)=%v", path, err)
- }
- },
- Events: []EventInfo{
- &Call{P: path, E: InAccess},
- &Call{P: path, E: InOpen},
- &Call{P: path, E: InModify},
- &Call{P: path, E: InCloseNowrite},
- },
- }
-}
-
-func iwrite(w *W, path string, p []byte) WCase {
- cas := write(w, path, p)
- path = cas.Events[0].Path()
- cas.Events = append(cas.Events,
- &Call{P: path, E: InAccess},
- &Call{P: path, E: InOpen},
- &Call{P: path, E: InModify},
- &Call{P: path, E: InCloseWrite},
- )
- return cas
-}
-
-func irename(w *W, path string) WCase {
- const ext = ".notify"
- return WCase{
- Action: func() {
- file := filepath.Join(w.root, path)
- if err := os.Rename(file, file+ext); err != nil {
- w.Fatalf("Rename(%q, %q)=%v", path, path+ext, err)
- }
- },
- Events: []EventInfo{
- &Call{P: path, E: InMovedFrom},
- &Call{P: path + ext, E: InMovedTo},
- &Call{P: path, E: InOpen},
- &Call{P: path, E: InAccess},
- &Call{P: path, E: InCreate},
- },
- }
-}
-
-var events = []Event{
- InAccess,
- InModify,
- InAttrib,
- InCloseWrite,
- InCloseNowrite,
- InOpen,
- InMovedFrom,
- InMovedTo,
- InCreate,
- InDelete,
- InDeleteSelf,
- InMoveSelf,
-}
-
-func TestWatcherInotify(t *testing.T) {
- w := NewWatcherTest(t, "testdata/vfs.txt", events...)
- defer w.Close()
-
- cases := [...]WCase{
- iopen(w, "src/github.com/rjeczalik/fs/fs.go"),
- iwrite(w, "src/github.com/rjeczalik/fs/fs.go", []byte("XD")),
- iread(w, "src/github.com/rjeczalik/fs/fs.go", []byte("XD")),
- iremove(w, "src/github.com/ppknap/link/README.md"),
- irename(w, "src/github.com/rjeczalik/fs/LICENSE"),
- }
-
- w.ExpectAny(cases[:])
-}