@@ -31,6 +31,19 @@ fn main() {
31
31
}
32
32
}
33
33
34
+ fn mk_symlink_file ( original : & str , link : & str ) {
35
+ #[ cfg( unix) ]
36
+ {
37
+ use std:: os:: unix:: fs:: symlink;
38
+ symlink ( original, link) . unwrap ( ) ;
39
+ }
40
+ #[ cfg( windows) ]
41
+ {
42
+ use std:: os:: windows:: fs:: symlink_file;
43
+ symlink_file ( original, link) . unwrap ( ) ;
44
+ }
45
+ }
46
+
34
47
fn glob_vec ( pattern : & str ) -> Vec < PathBuf > {
35
48
glob ( pattern) . unwrap ( ) . map ( |r| r. unwrap ( ) ) . collect ( )
36
49
}
@@ -48,6 +61,10 @@ fn main() {
48
61
mk_file ( "bbb" , true ) ;
49
62
mk_file ( "bbb/specials" , true ) ;
50
63
mk_file ( "bbb/specials/!" , false ) ;
64
+ // a valid symlink
65
+ mk_symlink_file ( "aaa/apple" , "aaa/green_apple" ) ;
66
+ // a broken symlink
67
+ mk_symlink_file ( "aaa/setsuna" , "aaa/kazusa" ) ;
51
68
52
69
// windows does not allow `*` or `?` characters to exist in filenames
53
70
if env:: consts:: FAMILY != "windows" {
@@ -223,15 +240,19 @@ fn main() {
223
240
glob_vec( "aaa/*" ) ,
224
241
vec!(
225
242
PathBuf :: from( "aaa/apple" ) ,
243
+ PathBuf :: from( "aaa/green_apple" ) ,
244
+ PathBuf :: from( "aaa/kazusa" ) ,
226
245
PathBuf :: from( "aaa/orange" ) ,
227
- PathBuf :: from( "aaa/tomato" )
246
+ PathBuf :: from( "aaa/tomato" ) ,
228
247
)
229
248
) ;
230
249
231
250
assert_eq ! (
232
251
glob_vec( "aaa/*a*" ) ,
233
252
vec!(
234
253
PathBuf :: from( "aaa/apple" ) ,
254
+ PathBuf :: from( "aaa/green_apple" ) ,
255
+ PathBuf :: from( "aaa/kazusa" ) ,
235
256
PathBuf :: from( "aaa/orange" ) ,
236
257
PathBuf :: from( "aaa/tomato" )
237
258
)
@@ -262,6 +283,9 @@ fn main() {
262
283
263
284
assert_eq ! ( glob_vec( "aaa/tomato/tomato.txt/" ) , Vec :: <PathBuf >:: new( ) ) ;
264
285
286
+ // Ensure to find a broken symlink.
287
+ assert_eq ! ( glob_vec( "aaa/kazusa" ) , vec!( PathBuf :: from( "aaa/kazusa" ) ) ) ;
288
+
265
289
assert_eq ! ( glob_vec( "aa[a]" ) , vec!( PathBuf :: from( "aaa" ) ) ) ;
266
290
assert_eq ! ( glob_vec( "aa[abc]" ) , vec!( PathBuf :: from( "aaa" ) ) ) ;
267
291
assert_eq ! ( glob_vec( "a[bca]a" ) , vec!( PathBuf :: from( "aaa" ) ) ) ;
0 commit comments