gopkg.in/essentialkaos/ek.v5@v5.7.1/fsutil/fs_test.go (about) 1 package fsutil 2 3 // ////////////////////////////////////////////////////////////////////////////////// // 4 // // 5 // Copyright (c) 2009-2016 Essential Kaos // 6 // Essential Kaos Open Source License <http://essentialkaos.com/ekol?en> // 7 // // 8 // ////////////////////////////////////////////////////////////////////////////////// // 9 10 import ( 11 "os" 12 "sort" 13 "testing" 14 15 check "pkg.re/check.v1" 16 ) 17 18 // ////////////////////////////////////////////////////////////////////////////////// // 19 20 type FSSuite struct{} 21 22 // ////////////////////////////////////////////////////////////////////////////////// // 23 24 func Test(t *testing.T) { check.TestingT(t) } 25 26 // ////////////////////////////////////////////////////////////////////////////////// // 27 28 var _ = check.Suite(&FSSuite{}) 29 30 // ////////////////////////////////////////////////////////////////////////////////// // 31 32 func (s *FSSuite) TestList(c *check.C) { 33 tmpDir := c.MkDir() 34 35 os.Mkdir(tmpDir+"/.dir0", 0755) 36 37 os.Create(tmpDir + "/.file0") 38 os.Create(tmpDir + "/file1.mp3") 39 os.Create(tmpDir + "/file2.jpg") 40 41 os.Mkdir(tmpDir+"/dir1", 0755) 42 os.Mkdir(tmpDir+"/dir2", 0755) 43 44 os.Create(tmpDir + "/dir1/file3.mp3") 45 os.Create(tmpDir + "/dir2/file4.wav") 46 47 os.Mkdir(tmpDir+"/dir1/dir3", 0755) 48 49 listing1 := List(tmpDir, false) 50 listing2 := List(tmpDir, true) 51 listing3 := ListAll(tmpDir, false) 52 listing4 := ListAll(tmpDir, true) 53 listing5 := ListAllDirs(tmpDir, false) 54 listing6 := ListAllDirs(tmpDir, true) 55 listing7 := ListAllFiles(tmpDir, false) 56 listing8 := ListAllFiles(tmpDir, true) 57 listing9 := ListAllFiles(tmpDir, true, &ListingFilter{MatchPatterns: []string{"*.mp3", "*.wav"}}) 58 listing10 := ListAllFiles(tmpDir, true, &ListingFilter{NotMatchPatterns: []string{"*.mp3"}}) 59 listing11 := List(tmpDir, true, &ListingFilter{Perms: "DR"}) 60 listing12 := List(tmpDir, true, &ListingFilter{NotPerms: "DR"}) 61 62 sort.Strings(listing1) 63 sort.Strings(listing2) 64 sort.Strings(listing3) 65 sort.Strings(listing4) 66 sort.Strings(listing5) 67 sort.Strings(listing6) 68 sort.Strings(listing7) 69 sort.Strings(listing8) 70 sort.Strings(listing9) 71 sort.Strings(listing10) 72 sort.Strings(listing11) 73 sort.Strings(listing12) 74 75 c.Assert( 76 listing1, 77 check.DeepEquals, 78 []string{".dir0", ".file0", "dir1", "dir2", "file1.mp3", "file2.jpg"}, 79 ) 80 81 c.Assert( 82 listing2, 83 check.DeepEquals, 84 []string{"dir1", "dir2", "file1.mp3", "file2.jpg"}, 85 ) 86 87 c.Assert( 88 listing3, 89 check.DeepEquals, 90 []string{".dir0", ".file0", "dir1", "dir1/dir3", "dir1/file3.mp3", "dir2", "dir2/file4.wav", "file1.mp3", "file2.jpg"}, 91 ) 92 93 c.Assert( 94 listing4, 95 check.DeepEquals, 96 []string{"dir1", "dir1/dir3", "dir1/file3.mp3", "dir2", "dir2/file4.wav", "file1.mp3", "file2.jpg"}, 97 ) 98 99 c.Assert( 100 listing5, 101 check.DeepEquals, 102 []string{".dir0", "dir1", "dir1/dir3", "dir2"}, 103 ) 104 105 c.Assert( 106 listing6, 107 check.DeepEquals, 108 []string{"dir1", "dir1/dir3", "dir2"}, 109 ) 110 111 c.Assert( 112 listing7, 113 check.DeepEquals, 114 []string{".file0", "dir1/file3.mp3", "dir2/file4.wav", "file1.mp3", "file2.jpg"}, 115 ) 116 117 c.Assert( 118 listing8, 119 check.DeepEquals, 120 []string{"dir1/file3.mp3", "dir2/file4.wav", "file1.mp3", "file2.jpg"}, 121 ) 122 123 c.Assert( 124 listing9, 125 check.DeepEquals, 126 []string{"dir1/file3.mp3", "dir2/file4.wav", "file1.mp3"}, 127 ) 128 129 c.Assert( 130 listing10, 131 check.DeepEquals, 132 []string{"dir2/file4.wav", "file2.jpg"}, 133 ) 134 135 c.Assert( 136 listing11, 137 check.DeepEquals, 138 []string{"dir1", "dir2"}, 139 ) 140 141 c.Assert( 142 listing12, 143 check.DeepEquals, 144 []string{"file1.mp3", "file2.jpg"}, 145 ) 146 } 147 148 func (s *FSSuite) TestProperPath(c *check.C) { 149 tmpFile := c.MkDir() + "/test.txt" 150 151 os.OpenFile(tmpFile, os.O_CREATE, 0644) 152 153 paths := []string{"/etc/sudoers", "/etc/passwd", tmpFile} 154 155 c.Assert(ProperPath("DR", paths), check.Equals, "") 156 c.Assert(ProperPath("FR", paths), check.Equals, "/etc/passwd") 157 c.Assert(ProperPath("FRW", paths), check.Equals, tmpFile) 158 c.Assert(ProperPath("FRWS", paths), check.Equals, "") 159 c.Assert(ProperPath("F", paths), check.Equals, "/etc/sudoers") 160 161 os.Remove(tmpFile) 162 } 163 164 func (s *FSSuite) TestWalker(c *check.C) { 165 tmpDir := c.MkDir() 166 167 os.Chdir(tmpDir) 168 169 tmpDir, _ = os.Getwd() 170 171 os.MkdirAll(tmpDir+"/dir1/dir2/dir3/dir4", 0755) 172 os.Chdir(tmpDir) 173 174 c.Assert(Current(), check.Equals, tmpDir) 175 c.Assert(Pop(), check.Equals, tmpDir) 176 177 dirStack = nil 178 179 c.Assert(Push("dir1"), check.Equals, tmpDir+"/dir1") 180 c.Assert(Push("dir9"), check.Equals, "") 181 c.Assert(Push("dir2/dir3"), check.Equals, tmpDir+"/dir1/dir2/dir3") 182 c.Assert(Push("dir4"), check.Equals, tmpDir+"/dir1/dir2/dir3/dir4") 183 c.Assert(Push("dir9"), check.Equals, "") 184 c.Assert(Pop(), check.Equals, tmpDir+"/dir1/dir2/dir3") 185 c.Assert(Pop(), check.Equals, tmpDir+"/dir1") 186 c.Assert(Pop(), check.Equals, tmpDir) 187 c.Assert(Pop(), check.Equals, tmpDir) 188 }