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  }