github.com/PaulioRandall/go-cookies@v0.1.1/cookies/files_test.go (about) 1 package cookies 2 3 import ( 4 "io/ioutil" 5 "log" 6 "os" 7 "path/filepath" 8 "testing" 9 10 "github.com/stretchr/testify/require" 11 ) 12 13 func startFileTest() (home, temp string) { 14 var e error 15 if home, e = os.Getwd(); e != nil { 16 panic(e) 17 } 18 if temp, e = filepath.Abs("."); e != nil { 19 panic(e) 20 } 21 if temp, e = ioutil.TempDir(temp, "*"); e != nil { 22 panic(e) 23 } 24 if e = os.Chdir(temp); e != nil { 25 panic(e) 26 } 27 return home, temp 28 } 29 30 func endFileTest(home, temp string) { 31 if e := os.Chdir(home); e != nil { 32 panic(e) 33 } 34 if e := os.RemoveAll(temp); e != nil { 35 panic(e) 36 } 37 } 38 39 func requireFile(t *testing.T, f string, exp string) { 40 require.FileExists(t, f) 41 bytes, e := ioutil.ReadFile(f) 42 require.Nil(t, e, "%+v", e) 43 require.Equal(t, exp, string(bytes)) 44 } 45 46 func requireNotExists(t *testing.T, f string) { 47 _, e := os.Stat(f) 48 require.NotNil(t, e, "File still exists: %s", f) 49 require.True(t, os.IsNotExist(e), "File still exists: %s", f) 50 } 51 52 func TestPushd_AND_Popd(t *testing.T) { 53 home, temp := startFileTest() 54 defer endFileTest(home, temp) 55 56 tempDir := func(dir string) string { 57 r, e := ioutil.TempDir(temp, dir) 58 if e != nil { 59 panic(e) 60 } 61 return r 62 } 63 64 requireHistory := func(exps ...string) { 65 require.Equal(t, len(exps), len(WorkDirHistory)) 66 for i, exp := range exps { 67 require.Equal(t, exp, WorkDirHistory[i]) 68 } 69 } 70 71 a := tempDir("a") 72 require.Nil(t, Pushd(a)) 73 requireHistory(temp) 74 75 b := tempDir("b") 76 require.Nil(t, Pushd(b)) 77 requireHistory(temp, a) 78 79 c := tempDir("c") 80 require.Nil(t, Pushd(c)) 81 requireHistory(temp, a, b) 82 83 require.Nil(t, Popd()) 84 requireHistory(temp, a) 85 86 require.Nil(t, Popd()) 87 requireHistory(temp) 88 89 require.Nil(t, Popd()) 90 requireHistory() 91 } 92 93 func TestFileToQuote(t *testing.T) { 94 home, temp := startFileTest() 95 defer endFileTest(home, temp) 96 97 f, e := ioutil.TempFile(temp, "*") 98 if e != nil { 99 log.Fatal(e) 100 } 101 102 data := []byte("What you see is all there is.") 103 if _, e = f.Write(data); e != nil { 104 log.Fatal(e) 105 } 106 107 a, e := FileToQuote(f.Name()) 108 require.Nil(t, e) 109 110 exp := []byte("\"What you see is all there is.\"") 111 act := []byte(a) 112 require.Equal(t, exp, act) 113 } 114 115 func TestCreateFiles(t *testing.T) { 116 home, temp := startFileTest() 117 defer endFileTest(home, temp) 118 119 e := CreateFiles(temp, os.ModePerm, map[string][]byte{ 120 "abc.txt": []byte("Weatherwax"), 121 "xyz.txt": []byte("Ogg"), 122 "nested/abc.txt": []byte("Garlick"), 123 "empty/": nil, 124 }) 125 require.Nil(t, e) 126 127 requireFile(t, temp+"/abc.txt", "Weatherwax") 128 requireFile(t, temp+"/xyz.txt", "Ogg") 129 require.DirExists(t, temp+"/nested") 130 requireFile(t, temp+"/nested/abc.txt", "Garlick") 131 require.DirExists(t, temp+"/empty") 132 }