github.com/spetr/go-zglob@v0.0.2/fastwalk/fastwalk_test.go (about) 1 package fastwalk 2 3 import ( 4 "io/ioutil" 5 "os" 6 "path/filepath" 7 "testing" 8 ) 9 10 func TestFastWalk(t *testing.T) { 11 var tmpdir string 12 var err error 13 14 if tmpdir, err = ioutil.TempDir("", "zglob"); err != nil { 15 t.Fatal(err) 16 } 17 defer os.RemoveAll(tmpdir) 18 19 if err = os.Chdir(tmpdir); err != nil { 20 t.Fatal(err) 21 } 22 23 os.MkdirAll(filepath.Join(tmpdir, "foo/bar/baz"), 0755) 24 ioutil.WriteFile(filepath.Join(tmpdir, "foo/bar/baz.txt"), []byte{}, 0644) 25 ioutil.WriteFile(filepath.Join(tmpdir, "foo/bar/baz/noo.txt"), []byte{}, 0644) 26 27 cases := []struct { 28 path string 29 dir bool 30 triggered bool 31 }{ 32 {path: "foo/bar", dir: true, triggered: false}, 33 {path: "foo/bar/baz", dir: true, triggered: false}, 34 {path: "foo/bar/baz.txt", dir: false, triggered: false}, 35 {path: "foo/bar/baz/noo.txt", dir: false, triggered: false}, 36 } 37 38 for i, tt := range cases { 39 err = FastWalk(tt.path, func(path string, mode os.FileMode) error { 40 if path != tt.path { 41 return nil 42 } 43 44 if tt.dir != mode.IsDir() { 45 t.Errorf("expected path %q to be: dir:%v, but got dir:%v", tt.path, tt.dir, mode.IsDir()) 46 } 47 cases[i].triggered = true 48 return nil 49 }) 50 if err != nil { 51 t.Errorf("error running FastWalk on %q: %v", tt.path, err) 52 continue 53 } 54 55 if !cases[i].triggered { 56 t.Errorf("expected %q to be triggered, but got %v", tt.path, cases[i].triggered) 57 } 58 } 59 }