github.com/aarzilli/tools@v0.0.0-20151123112009-0d27094f75e0/os/fsi/tests/canonical-paths_test.go (about) 1 // +build pathing 2 // go test -tags=pathing 3 4 package tests 5 6 import ( 7 "fmt" 8 "log" 9 "path" 10 "testing" 11 12 "github.com/pbberlin/tools/os/fsi/common" 13 "github.com/pbberlin/tools/os/fsi/memfs" 14 ) 15 16 func splitIsWhatWeWant() { 17 18 s := "rt/" 19 20 dir1, f1 := path.Split(s) 21 22 dir2 := path.Dir(s) 23 f2 := path.Base(s) 24 25 fmt.Printf("%q %q \n", dir1, f1) // "rt/" "" - good 26 fmt.Printf("%q %q \n", dir2, f2) // "rt" "rt" - bad 27 28 } 29 30 func TestPathCleanage(t *testing.T) { 31 32 log.SetFlags(0) 33 34 _, c := initFileSystems() 35 defer c.Close() 36 37 cases := [][]string{ 38 []string{"", "mntX/", ""}, 39 []string{"/", "mntX/", ""}, 40 []string{".", "mntX/", ""}, 41 []string{"./", "mntX/", ""}, 42 []string{"mntX", "mntX/", ""}, 43 []string{"mntX/", "mntX/", ""}, 44 // 5... 45 []string{"file", "mntX/", "file"}, 46 []string{"dir/", "mntX/", "dir/"}, 47 []string{"./dir1/", "mntX/", "dir1/"}, 48 []string{"mntX/dir1", "mntX/", "dir1"}, 49 []string{"mntX/dir1/file2", "mntX/dir1/", "file2"}, 50 // 10 51 []string{"mntY/dir1/file2", "mntX/mntY/dir1/", "file2"}, 52 []string{"///mntX/dir1/dir2///dir3/", "mntX/dir1/dir2/", "dir3/"}, 53 []string{"mntX/dir1/dir2///file3", "mntX/dir1/dir2/", "file3"}, 54 []string{"/dir1/dir2///file3", "mntX/dir1/dir2/", "file3"}, 55 []string{"dir1/dir2///dir3/", "mntX/dir1/dir2/", "dir3/"}, 56 // 15 57 []string{"c:\\dir1\\dir2", "mntX/c:/dir1/", "dir2"}, 58 } 59 60 fs := memfs.New( 61 memfs.Ident("mntX"), 62 ) 63 for i, v := range cases { 64 inpt := v[0] 65 _ = inpt 66 wnt1 := v[1] 67 wnt2 := v[2] 68 dir, bname := common.UnixPather(v[0], fs.RootDir()) 69 fullpath := dir + bname 70 71 log.Printf("#%2v %-30q %-24q => %-16q %-12q ", i, inpt, dir, bname, fullpath) 72 73 if wnt1 != dir { 74 t.Errorf("dir #%2v got %-24v - wnt %-16v\n", i, dir, wnt1) 75 } 76 if wnt2 != bname { 77 t.Errorf("bname #%2v got %-24v - wnt %-16v\n", i, bname, wnt2) 78 } 79 if wnt1+wnt2 != fullpath { 80 t.Errorf("fullp #%2v got %-24v - wnt %-16v\n", i, fullpath, wnt1+wnt2) 81 } 82 } 83 84 }