github.com/bobyang007/helper@v1.1.3/ioh/ioutilh/dir_test.go (about) 1 package ioutilh 2 3 import ( 4 "io/ioutil" 5 "os" 6 "reflect" 7 "testing" 8 ) 9 10 func TestReadDirNames(t *testing.T) { 11 12 //check dir is empty 13 nameDir, errTempDir := ioutil.TempDir("", "temp") 14 if errTempDir != nil { 15 t.Errorf("got error while creating temp dir: %v", errTempDir) 16 } 17 s, err := ReadDirNames(nameDir, true) 18 if err != nil { 19 t.Errorf("got error: %v", err) 20 } 21 if len(s) != 0 { 22 t.Errorf("slice should be empty but len(s): %v", s) 23 } 24 25 //check dir contains dirs 26 errChdir := os.Chdir(nameDir) 27 if errChdir != nil { 28 t.Errorf("got error while changing dir: %v", errChdir) 29 } 30 dirs := []string{"bla", "bla1", "bla2", "bla3"} 31 for i, v := range dirs { 32 errMkdir := os.Mkdir(v, 0777) 33 if errMkdir != nil { 34 t.Errorf("got error while making dir #%v: %v", i, errMkdir) 35 } 36 } 37 s, err = ReadDirNames(nameDir, true) 38 if err != nil { 39 t.Errorf("got error: %v", err) 40 } 41 if !reflect.DeepEqual(s, dirs) { 42 t.Errorf("wrong dir names: expect %v, got %v", dirs, s) 43 } 44 45 //check dir with files 46 nameFile := "bla_file" 47 _, errFile := os.Create(nameFile) 48 if errFile != nil { 49 t.Errorf("got error while creating file: %v", errFile) 50 } 51 entries := append(dirs, nameFile) 52 s, err = ReadDirNames(nameDir, true) 53 if err != nil { 54 t.Errorf("got error: %v", err) 55 } 56 if !reflect.DeepEqual(s, entries) { 57 t.Errorf("wrong dir/file's names: expect %v, got %v", entries, s) 58 } 59 60 //func (f *File) Chmod(mode FileMode) error 61 nameFile = "bla_file1" 62 F, errFile1 := os.Create(nameFile) 63 if errFile1 != nil { 64 t.Errorf("got error while creating file: %v", errFile1) 65 } 66 errChmod := F.Chmod(0000) 67 if errChmod != nil { 68 t.Errorf("got error: %v", errChmod) 69 } 70 entries = append(entries, nameFile) 71 s, err = ReadDirNames(nameDir, true) 72 if err != nil { 73 t.Errorf("got error: %v", err) 74 } 75 if !reflect.DeepEqual(s, entries) { 76 t.Errorf("wrong dir/file's names: expect %v, got %v", entries, s) 77 } 78 errChmod = F.Chmod(0777) 79 if errChmod != nil { 80 t.Errorf("got error: %v", errChmod) 81 } 82 _, err = ReadDirNames(F.Name(), true) 83 if err == nil { 84 t.Error("expect error, no error got") 85 } 86 s, err = ReadDirNames(nameDir, true) 87 if err != nil { 88 t.Errorf("got error: %v", err) 89 } 90 if !reflect.DeepEqual(s, entries) { 91 t.Errorf("wrong dir/file's names: expect %v, got %v", entries, s) 92 } 93 errChmod = F.Chmod(0333) 94 if errChmod != nil { 95 t.Errorf("got error: %v", errChmod) 96 } 97 s, err = ReadDirNames(nameDir, true) 98 if err != nil { 99 t.Errorf("got error: %v", err) 100 } 101 if !reflect.DeepEqual(s, entries) { 102 t.Errorf("wrong dir/file's names: expect %v, got %v", entries, s) 103 } 104 s, err = ReadDirNames(".", true) 105 if err != nil { 106 t.Errorf("got error: %v", err) 107 } 108 if !reflect.DeepEqual(s, entries) { 109 t.Errorf("wrong dir/file's names: expect %v, got %v", entries, s) 110 } 111 112 errChdir1 := os.Chdir("bla1") 113 if errChdir1 != nil { 114 t.Errorf("got error while change dir: %v", errChdir1) 115 } 116 s, err = ReadDirNames("..", true) 117 if err != nil { 118 t.Errorf("got error: %v", err) 119 } 120 if !reflect.DeepEqual(s, entries) { 121 t.Errorf("wrong dir/file's names: expect %v, got %v", entries, s) 122 } 123 124 // remove dir 125 errRemove := os.RemoveAll(nameDir) 126 if errRemove != nil { 127 t.Errorf("got error while removing dir: %v", errRemove) 128 } 129 130 //check nonexistent dir 131 _, errN := ReadDirNames(nameDir, true) 132 if errN == nil { 133 t.Error("error expected but got nil") 134 } 135 } 136 137 func TestIsEmpty(t *testing.T) { 138 //check empty dir 139 nameDir, errTempDir := ioutil.TempDir("", "temp") 140 if errTempDir != nil { 141 t.Errorf("error while creating temp dir: %v", errTempDir) 142 } 143 b, err := IsDirEmpty(nameDir) 144 if err != nil { 145 t.Errorf("error expected: %v, got: %v", nil, err) 146 } else if !b { 147 t.Error("error: expected empty dir") 148 } 149 //check not empty dir 150 _, errTempFile := ioutil.TempFile(nameDir, "temp") 151 if errTempFile != nil { 152 t.Errorf("got error while creating temp file: %v", errTempFile) 153 } 154 155 b1, err1 := IsDirEmpty(nameDir) 156 if err1 != nil { 157 t.Errorf("error expected: %v, got: %v", nil, err1) 158 } else if b1 { 159 t.Error("error: expected empty dir") 160 } 161 //check nonexistent dir 162 _, err2 := IsDirEmpty("") 163 if err2 == nil { 164 t.Error("error expected, got: nil") 165 } 166 }