github.com/andy2046/gopie@v0.7.0/pkg/fileutil/fileutil_test.go (about) 1 package fileutil_test 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "os" 7 "path/filepath" 8 "reflect" 9 "strings" 10 "testing" 11 "time" 12 13 . "github.com/andy2046/gopie/pkg/fileutil" 14 ) 15 16 func TestIsDirWriteable(t *testing.T) { 17 tmpdir, err := ioutil.TempDir("", "foo") 18 if err != nil { 19 t.Fatalf("ioutil.TempDir error %v", err) 20 } 21 defer os.RemoveAll(tmpdir) 22 if err = IsDirWriteable(tmpdir); err != nil { 23 t.Fatalf("IsDirWriteable error %v", err) 24 } 25 } 26 27 func TestCreateDirAll(t *testing.T) { 28 tmpdir, err := ioutil.TempDir(os.TempDir(), "foo") 29 if err != nil { 30 t.Fatal(err) 31 } 32 defer os.RemoveAll(tmpdir) 33 34 tmpdir2 := filepath.Join(tmpdir, "bar") 35 if err = CreateDirAll(tmpdir2); err != nil { 36 t.Fatal(err) 37 } 38 39 if err = ioutil.WriteFile(filepath.Join(tmpdir2, "test.txt"), 40 []byte("test"), PrivateFileMode); err != nil { 41 t.Fatal(err) 42 } 43 44 if err = CreateDirAll(tmpdir2); err == nil || !strings.Contains(err.Error(), "to be empty, got") { 45 t.Fatalf("CreateDirAll error %v", err) 46 } 47 } 48 49 func TestExist(t *testing.T) { 50 fdir := filepath.Join(os.TempDir(), fmt.Sprint(time.Now().UnixNano())) 51 os.RemoveAll(fdir) 52 if err := os.Mkdir(fdir, 0666); err != nil { 53 t.Skip(err) 54 } 55 defer os.RemoveAll(fdir) 56 if !Exist(fdir) { 57 t.Fatal("Exist expected to be true") 58 } 59 60 f, err := ioutil.TempFile(os.TempDir(), "fileutil") 61 if err != nil { 62 t.Skip(err) 63 } 64 f.Close() 65 66 if !Exist(f.Name()) { 67 t.Error("Exist expected to be true") 68 } 69 70 os.Remove(f.Name()) 71 if Exist(f.Name()) { 72 t.Error("Exist expected to be false") 73 } 74 } 75 76 func TestReadDir(t *testing.T) { 77 tmpdir, err := ioutil.TempDir("", "") 78 defer os.RemoveAll(tmpdir) 79 if err != nil { 80 t.Fatalf("ioutil.TempDir error %v", err) 81 } 82 83 files := []string{"def", "abc", "xyz", "ghi"} 84 for _, f := range files { 85 fh, err := os.Create(filepath.Join(tmpdir, f)) 86 if err != nil { 87 t.Skip(err) 88 } 89 if err = fh.Close(); err != nil { 90 t.Skip(err) 91 } 92 } 93 fs, err := ReadDir(tmpdir) 94 if err != nil { 95 t.Fatalf("ReadDir error %v", err) 96 } 97 wfs := []string{"abc", "def", "ghi", "xyz"} 98 if !reflect.DeepEqual(fs, wfs) { 99 t.Fatalf("ReadDir error got %v, want %v", fs, wfs) 100 } 101 102 files = []string{"def.wal", "abc.wal", "xyz.wal", "ghi.wal"} 103 for _, f := range files { 104 fh, err := os.Create(filepath.Join(tmpdir, f)) 105 if err != nil { 106 t.Skip(err) 107 } 108 if err = fh.Close(); err != nil { 109 t.Skip(err) 110 } 111 } 112 fs, err = ReadDir(tmpdir, WithExt(".wal")) 113 if err != nil { 114 t.Fatalf("ReadDir error %v", err) 115 } 116 wfs = []string{"abc.wal", "def.wal", "ghi.wal", "xyz.wal"} 117 if !reflect.DeepEqual(fs, wfs) { 118 t.Fatalf("ReadDir error got %v, want %v", fs, wfs) 119 } 120 }