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  }