github.com/IBM/fsgo@v0.0.0-20220920202152-e16fd2119d49/path_test.go (about) 1 // Copyright 2022 IBM Inc. All rights reserved 2 // Copyright © 2014 Steve Francia <spf@spf13.com> 3 // 4 // SPDX-License-Identifier: Apache2.0 5 package fsgo 6 7 import ( 8 "fmt" 9 "os" 10 "testing" 11 ) 12 13 func TestWalk(t *testing.T) { 14 defer removeAllTestFiles(t) 15 var testDir string 16 for i, fs := range Fss { 17 if i == 0 { 18 testDir = setupTestDirRoot(t, fs) 19 } else { 20 setupTestDirReusePath(t, fs, testDir) 21 } 22 } 23 24 outputs := make([]string, len(Fss)) 25 for i, fs := range Fss { 26 walkFn := func(path string, info os.FileInfo, err error) error { 27 if err != nil { 28 t.Error("walkFn err:", err) 29 } 30 var size int64 31 if !info.IsDir() { 32 size = info.Size() 33 } 34 outputs[i] += fmt.Sprintln(path, info.Name(), size, info.IsDir(), err) 35 return nil 36 } 37 err := Walk(fs, testDir, walkFn) 38 if err != nil { 39 t.Error(err) 40 } 41 } 42 fail := false 43 for i, o := range outputs { 44 if i == 0 { 45 continue 46 } 47 if o != outputs[i-1] { 48 fail = true 49 break 50 } 51 } 52 if fail { 53 t.Log("Walk outputs not equal!") 54 for i, o := range outputs { 55 t.Log(Fss[i].Name() + "\n" + o) 56 } 57 t.Fail() 58 } 59 }