github.com/NeowayLabs/nash@v0.2.2-0.20200127205349-a227041ffd50/stdbin/mkdir/mkdir_test.go (about) 1 package main 2 3 import ( 4 "testing" 5 "path" 6 "path/filepath" 7 "io/ioutil" 8 "os" 9 ) 10 11 type testcase struct { 12 dirs []string 13 } 14 15 func testMkdir(t *testing.T, tc testcase) { 16 tmpDir, err := ioutil.TempDir("", "nash-mkdir") 17 if err != nil { 18 t.Fatal(err) 19 } 20 21 defer os.RemoveAll(tmpDir) 22 var dirs []string 23 for _, p := range tc.dirs { 24 dirs = append(dirs, filepath.FromSlash(path.Join(tmpDir, p))) 25 } 26 27 err = mkdirs(dirs) 28 if err != nil { 29 t.Fatal(err) 30 } 31 32 for _, d := range dirs { 33 if s, err := os.Stat(d); err != nil { 34 t.Fatal(err) 35 } else if s.Mode()&os.ModeDir != os.ModeDir { 36 t.Fatalf("Invalid directory mode: %v", s.Mode()) 37 } 38 } 39 } 40 41 func TestMkdir(t *testing.T) { 42 for _, tc := range []testcase{ 43 { 44 dirs: []string{}, 45 }, 46 { 47 dirs: []string{ 48 "1", "2", "3", "4", "5", 49 "some", "thing", "_random_", 50 "_", 51 }, 52 }, 53 { 54 dirs: []string{"a", "a"}, // directory already exists, silently works 55 }, 56 } { 57 tc := tc 58 testMkdir(t, tc) 59 } 60 }