|
86 | 86 | @test relpath(S(joinpath("foo","bar")), S("foo")) == "bar"
|
87 | 87 |
|
88 | 88 | @testset "splitpath" begin
|
89 |
| - @test splitpath(joinpath("a","b","c")) == ["a", "b", "c"] |
| 89 | + @test splitpath(S(joinpath("a","b","c"))) == ["a", "b", "c"] |
90 | 90 | @test splitpath("") == [""]
|
91 | 91 |
|
92 |
| - @test splitpath(joinpath("cats are", "gr8t")) == ["cats are", "gr8t"] |
93 |
| - @test splitpath(joinpath(" ", " ")) == [" ", " "] |
| 92 | + @test splitpath(S(joinpath("cats are", "gr8t"))) == ["cats are", "gr8t"] |
| 93 | + @test splitpath(S(joinpath(" ", " "))) == [" ", " "] |
94 | 94 |
|
95 | 95 | # Unix-style paths are understood by all systems.
|
96 |
| - @test splitpath("/a/b") == ["/", "a", "b"] |
97 |
| - @test splitpath("/") == ["/"] |
98 |
| - @test splitpath("a/") == ["a"] |
99 |
| - @test splitpath("a/b/") == ["a", "b"] |
100 |
| - @test splitpath("a.dir/b.txt") == ["a.dir", "b.txt"] |
101 |
| - @test splitpath("///") == ["/"] |
102 |
| - @test splitpath("///a///b///") == ["/", "a", "b"] |
| 96 | + @test splitpath(S("/a/b")) == ["/", "a", "b"] |
| 97 | + @test splitpath(S("/")) == ["/"] |
| 98 | + @test splitpath(S("a/")) == ["a"] |
| 99 | + @test splitpath(S("a/b/")) == ["a", "b"] |
| 100 | + @test splitpath(S("a.dir/b.txt")) == ["a.dir", "b.txt"] |
| 101 | + @test splitpath(S("///")) == ["/"] |
| 102 | + @test splitpath(S("///a///b///")) == ["/", "a", "b"] |
103 | 103 |
|
104 | 104 | if Sys.iswindows()
|
105 |
| - @test splitpath("C:\\\\a\\b\\c") == ["C:\\", "a", "b", "c"] |
106 |
| - @test splitpath("C:\\\\") == ["C:\\"] |
107 |
| - @test splitpath("J:\\") == ["J:\\"] |
108 |
| - @test splitpath("C:") == ["C:"] |
109 |
| - @test splitpath("C:a") == ["C:a"] |
110 |
| - @test splitpath("C:a\\b") == ["C:a", "b"] |
| 105 | + @test splitpath(S("C:\\\\a\\b\\c")) == ["C:\\", "a", "b", "c"] |
| 106 | + @test splitpath(S("C:\\\\")) == ["C:\\"] |
| 107 | + @test splitpath(S("J:\\")) == ["J:\\"] |
| 108 | + @test splitpath(S("C:")) == ["C:"] |
| 109 | + @test splitpath(S("C:a")) == ["C:a"] |
| 110 | + @test splitpath(S("C:a\\b")) == ["C:a", "b"] |
111 | 111 |
|
112 |
| - @test splitpath("a\\") == ["a"] |
113 |
| - @test splitpath("a\\\\b\\\\") == ["a","b"] |
114 |
| - @test splitpath("a.dir\\b.txt") == ["a.dir", "b.txt"] |
115 |
| - @test splitpath("\\a\\b\\") == ["\\", "a","b"] |
116 |
| - @test splitpath("\\\\a\\b") == ["\\\\a\\b"] # This is actually a valid drive name in windows. |
| 112 | + @test splitpath(S("a\\")) == ["a"] |
| 113 | + @test splitpath(S("a\\\\b\\\\")) == ["a","b"] |
| 114 | + @test splitpath(S("a.dir\\b.txt")) == ["a.dir", "b.txt"] |
| 115 | + @test splitpath(S("\\a\\b\\")) == ["\\", "a","b"] |
| 116 | + @test splitpath(S("\\\\a\\b")) == ["\\\\a\\b"] # This is actually a valid drive name in windows. |
117 | 117 |
|
118 |
| - @test splitpath("/a/b\\c/d\\\\e") == ["/", "a", "b", "c", "d", "e"] |
119 |
| - @test splitpath("/\\/\\") == ["/"] |
120 |
| - @test splitpath("\\/\\a/\\//b") == ["\\","a","b"] |
| 118 | + @test splitpath(S("/a/b\\c/d\\\\e")) == ["/", "a", "b", "c", "d", "e"] |
| 119 | + @test splitpath(S("/\\/\\")) == ["/"] |
| 120 | + @test splitpath(S("\\/\\a/\\//b")) == ["\\","a","b"] |
121 | 121 | end
|
122 | 122 | end
|
123 | 123 |
|
124 |
| - @testset "splitting" begin |
| 124 | + @testset "splitdir, splitdrive" begin |
125 | 125 | @test joinpath(splitdir(S(homedir()))...) == homedir()
|
126 | 126 | @test string(splitdrive(S(homedir()))...) == homedir()
|
127 | 127 | @test splitdrive("a\nb") == ("", "a\nb")
|
|
150 | 150 | @test_broken splitext(S(".foo...")) == (".foo", "...")
|
151 | 151 | @test splitext(S(".foo.bar")) == (".foo", ".bar")
|
152 | 152 | end
|
153 |
| -end |
154 | 153 |
|
155 |
| -@testset "isabspath" begin |
156 |
| - @test isabspath("~") == false |
157 |
| - @test isabspath("/") == true # on windows, this is relatively absolute |
158 |
| - @test isabspath("A:/") == Sys.iswindows() |
159 |
| - @test isabspath("B:\\") == Sys.iswindows() |
160 |
| - @test isabspath("./") == false |
161 |
| - @test isabspath("C:") == false |
162 |
| - @test isabspath("C:.") == false |
163 |
| - @test isabspath("α:/") == false |
164 |
| - @test isabspath(".:/") == false |
165 |
| - #@test isabspath("_:/") == false # FIXME? |
166 |
| - #@test isabspath("AB:/") == false # FIXME? |
167 |
| - @test isabspath("\\\\") == Sys.iswindows() |
168 |
| - if Sys.isunix() |
169 |
| - @test isabspath(expanduser("~")) == true |
170 |
| - @test startswith(expanduser("~"), homedir()) |
171 |
| - else |
172 |
| - @test expanduser("~") == "~" |
| 154 | + @testset "isabspath" begin |
| 155 | + @test isabspath(S("~")) == false |
| 156 | + @test isabspath(S("/")) == true # on windows, this is relatively absolute |
| 157 | + @test isabspath(S("A:/")) == Sys.iswindows() |
| 158 | + @test isabspath(S("B:\\")) == Sys.iswindows() |
| 159 | + @test isabspath(S("./")) == false |
| 160 | + @test isabspath(S("C:")) == false |
| 161 | + @test isabspath(S("C:.")) == false |
| 162 | + @test isabspath(S("α:/")) == false |
| 163 | + @test isabspath(S(".:/")) == false |
| 164 | + #@test isabspath(S("_:/")) == false # FIXME? |
| 165 | + #@test isabspath(S("AB:/")) == false # FIXME? |
| 166 | + @test isabspath(S("\\\\")) == Sys.iswindows() |
| 167 | + if Sys.isunix() |
| 168 | + @test isabspath(S(expanduser("~"))) == true |
| 169 | + @test startswith(expanduser(S("~")), homedir()) |
| 170 | + else |
| 171 | + @test expanduser(S("~")) == "~" |
| 172 | + end |
173 | 173 | end
|
174 |
| -end |
175 | 174 |
|
176 |
| -@testset "relpath" begin |
177 |
| - function test_relpath() |
178 |
| - sep = Base.Filesystem.path_separator |
179 |
| - filepaths = [ |
180 |
| - "$(sep)home$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)Test1.md", |
181 |
| - "$(sep)home$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)lib$(sep)file1.md", |
182 |
| - "$(sep)home$(sep)user$(sep).julia$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
183 |
| - "$(sep)home$(sep)user$(sep)dir_withendsep$(sep)", |
184 |
| - "$(sep)home$(sep)dir2_withendsep$(sep)", |
185 |
| - "$(sep)home$(sep)test.md", |
186 |
| - "$(sep)home", |
187 |
| - # Special cases |
188 |
| - "$(sep)", |
189 |
| - "$(sep)home$(sep)$(sep)$(sep)" |
190 |
| - ] |
191 |
| - startpaths = [ |
192 |
| - "$(sep)home$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)genindex.md", |
193 |
| - "$(sep)multi_docs$(sep)genindex.md", |
194 |
| - "$(sep)home$(sep)user$(sep)dir_withendsep$(sep)", |
195 |
| - "$(sep)home$(sep)dir2_withendsep$(sep)", |
196 |
| - "$(sep)home$(sep)test.md", |
197 |
| - "$(sep)home", |
198 |
| - # Special cases |
199 |
| - "$(sep)", |
200 |
| - "$(sep)home$(sep)$(sep)$(sep)" |
201 |
| - ] |
202 |
| - relpath_expected_results = [ |
203 |
| - "..$(sep)Test1.md", |
204 |
| - "..$(sep)..$(sep)home$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)Test1.md", |
205 |
| - "..$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)Test1.md", |
206 |
| - "..$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)Test1.md", |
207 |
| - "..$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)Test1.md", |
208 |
| - "user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)Test1.md", |
209 |
| - "home$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)Test1.md", |
210 |
| - "user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)Test1.md", |
211 |
| - "..$(sep)lib$(sep)file1.md", |
212 |
| - "..$(sep)..$(sep)home$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)lib$(sep)file1.md", |
213 |
| - "..$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)lib$(sep)file1.md", |
214 |
| - "..$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)lib$(sep)file1.md", |
215 |
| - "..$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)lib$(sep)file1.md", |
216 |
| - "user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)lib$(sep)file1.md", |
217 |
| - "home$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)lib$(sep)file1.md", |
218 |
| - "user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)lib$(sep)file1.md", |
219 |
| - "..$(sep)..$(sep)..$(sep)..$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
220 |
| - "..$(sep)..$(sep)home$(sep)user$(sep).julia$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
221 |
| - "..$(sep).julia$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
222 |
| - "..$(sep)user$(sep).julia$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
223 |
| - "..$(sep)user$(sep).julia$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
224 |
| - "user$(sep).julia$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
225 |
| - "home$(sep)user$(sep).julia$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
226 |
| - "user$(sep).julia$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
227 |
| - "..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)dir_withendsep", |
228 |
| - "..$(sep)..$(sep)home$(sep)user$(sep)dir_withendsep",".","..$(sep)user$(sep)dir_withendsep", |
229 |
| - "..$(sep)user$(sep)dir_withendsep","user$(sep)dir_withendsep", |
230 |
| - "home$(sep)user$(sep)dir_withendsep","user$(sep)dir_withendsep", |
231 |
| - "..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)dir2_withendsep", |
232 |
| - "..$(sep)..$(sep)home$(sep)dir2_withendsep","..$(sep)..$(sep)dir2_withendsep",".", |
233 |
| - "..$(sep)dir2_withendsep","dir2_withendsep","home$(sep)dir2_withendsep","dir2_withendsep", |
234 |
| - "..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)test.md","..$(sep)..$(sep)home$(sep)test.md", |
235 |
| - "..$(sep)..$(sep)test.md","..$(sep)test.md",".","test.md","home$(sep)test.md","test.md", |
236 |
| - "..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)..","..$(sep)..$(sep)home","..$(sep)..", |
237 |
| - "..","..",".","home",".","..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)..","..$(sep)..", |
238 |
| - "..$(sep)..$(sep)..","..$(sep)..","..$(sep)..","..",".","..", |
239 |
| - "..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)..","..$(sep)..$(sep)home","..$(sep)..", |
240 |
| - "..","..",".","home","." |
241 |
| - ] |
242 |
| - idx = 0 |
243 |
| - for filep in filepaths |
244 |
| - for startp in startpaths |
245 |
| - res = relpath(filep, startp) |
246 |
| - idx += 1 |
247 |
| - @test res == relpath_expected_results[idx] |
| 175 | + @testset "relpath" begin |
| 176 | + function test_relpath() |
| 177 | + sep = Base.Filesystem.path_separator |
| 178 | + filepaths = [ |
| 179 | + "$(sep)home$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)Test1.md", |
| 180 | + "$(sep)home$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)lib$(sep)file1.md", |
| 181 | + "$(sep)home$(sep)user$(sep).julia$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
| 182 | + "$(sep)home$(sep)user$(sep)dir_withendsep$(sep)", |
| 183 | + "$(sep)home$(sep)dir2_withendsep$(sep)", |
| 184 | + "$(sep)home$(sep)test.md", |
| 185 | + "$(sep)home", |
| 186 | + # Special cases |
| 187 | + "$(sep)", |
| 188 | + "$(sep)home$(sep)$(sep)$(sep)" |
| 189 | + ] |
| 190 | + startpaths = [ |
| 191 | + "$(sep)home$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)genindex.md", |
| 192 | + "$(sep)multi_docs$(sep)genindex.md", |
| 193 | + "$(sep)home$(sep)user$(sep)dir_withendsep$(sep)", |
| 194 | + "$(sep)home$(sep)dir2_withendsep$(sep)", |
| 195 | + "$(sep)home$(sep)test.md", |
| 196 | + "$(sep)home", |
| 197 | + # Special cases |
| 198 | + "$(sep)", |
| 199 | + "$(sep)home$(sep)$(sep)$(sep)" |
| 200 | + ] |
| 201 | + relpath_expected_results = [ |
| 202 | + "..$(sep)Test1.md", |
| 203 | + "..$(sep)..$(sep)home$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)Test1.md", |
| 204 | + "..$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)Test1.md", |
| 205 | + "..$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)Test1.md", |
| 206 | + "..$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)Test1.md", |
| 207 | + "user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)Test1.md", |
| 208 | + "home$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)Test1.md", |
| 209 | + "user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)Test1.md", |
| 210 | + "..$(sep)lib$(sep)file1.md", |
| 211 | + "..$(sep)..$(sep)home$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)lib$(sep)file1.md", |
| 212 | + "..$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)lib$(sep)file1.md", |
| 213 | + "..$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)lib$(sep)file1.md", |
| 214 | + "..$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)lib$(sep)file1.md", |
| 215 | + "user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)lib$(sep)file1.md", |
| 216 | + "home$(sep)user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)lib$(sep)file1.md", |
| 217 | + "user$(sep).julia$(sep)Test1$(sep)docs$(sep)api$(sep)lib$(sep)file1.md", |
| 218 | + "..$(sep)..$(sep)..$(sep)..$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
| 219 | + "..$(sep)..$(sep)home$(sep)user$(sep).julia$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
| 220 | + "..$(sep).julia$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
| 221 | + "..$(sep)user$(sep).julia$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
| 222 | + "..$(sep)user$(sep).julia$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
| 223 | + "user$(sep).julia$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
| 224 | + "home$(sep)user$(sep).julia$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
| 225 | + "user$(sep).julia$(sep)测试2$(sep)docs$(sep)api$(sep)测试2.md", |
| 226 | + "..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)dir_withendsep", |
| 227 | + "..$(sep)..$(sep)home$(sep)user$(sep)dir_withendsep",".","..$(sep)user$(sep)dir_withendsep", |
| 228 | + "..$(sep)user$(sep)dir_withendsep","user$(sep)dir_withendsep", |
| 229 | + "home$(sep)user$(sep)dir_withendsep","user$(sep)dir_withendsep", |
| 230 | + "..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)dir2_withendsep", |
| 231 | + "..$(sep)..$(sep)home$(sep)dir2_withendsep","..$(sep)..$(sep)dir2_withendsep",".", |
| 232 | + "..$(sep)dir2_withendsep","dir2_withendsep","home$(sep)dir2_withendsep","dir2_withendsep", |
| 233 | + "..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)test.md","..$(sep)..$(sep)home$(sep)test.md", |
| 234 | + "..$(sep)..$(sep)test.md","..$(sep)test.md",".","test.md","home$(sep)test.md","test.md", |
| 235 | + "..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)..","..$(sep)..$(sep)home","..$(sep)..", |
| 236 | + "..","..",".","home",".","..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)..","..$(sep)..", |
| 237 | + "..$(sep)..$(sep)..","..$(sep)..","..$(sep)..","..",".","..", |
| 238 | + "..$(sep)..$(sep)..$(sep)..$(sep)..$(sep)..","..$(sep)..$(sep)home","..$(sep)..", |
| 239 | + "..","..",".","home","." |
| 240 | + ] |
| 241 | + idx = 0 |
| 242 | + for filep in filepaths |
| 243 | + for startp in startpaths |
| 244 | + res = relpath(filep, startp) |
| 245 | + idx += 1 |
| 246 | + @test res == relpath_expected_results[idx] |
| 247 | + end |
248 | 248 | end
|
| 249 | + # Additional cases |
| 250 | + @test_throws ArgumentError relpath(S("$(sep)home$(sep)user$(sep)dir_withendsep$(sep)"), "") |
| 251 | + @test_throws ArgumentError relpath(S(""), S("$(sep)home$(sep)user$(sep)dir_withendsep$(sep)")) |
249 | 252 | end
|
250 |
| - # Additional cases |
251 |
| - @test_throws ArgumentError relpath("$(sep)home$(sep)user$(sep)dir_withendsep$(sep)", "") |
252 |
| - @test_throws ArgumentError relpath("", "$(sep)home$(sep)user$(sep)dir_withendsep$(sep)") |
| 253 | + test_relpath() |
| 254 | + end |
| 255 | + |
| 256 | + @testset "type stability" begin |
| 257 | + @test isa(joinpath(S("a"), S("b")), String) |
| 258 | + @test isa(joinpath(S(abspath("a")), S("b")), String) |
253 | 259 | end
|
254 |
| - test_relpath() |
255 |
| -end |
256 |
| -@testset "type stability" begin |
257 |
| - @test isa(joinpath("a", "b"), String) |
258 |
| - @test isa(joinpath(abspath("a"), "b"), String) |
259 | 260 | end
|
| 261 | + |
260 | 262 | @testset "homedir" begin
|
261 | 263 | var = Sys.iswindows() ? "USERPROFILE" : "HOME"
|
262 | 264 | AVG_PATH = Base.Filesystem.AVG_PATH - 1 # null-termination character
|
|
0 commit comments