@@ -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
}
@@ -52,6 +65,10 @@ fn main() {
52
65
mk_file ( "bbb" , true ) ;
53
66
mk_file ( "bbb/specials" , true ) ;
54
67
mk_file ( "bbb/specials/!" , false ) ;
68
+ // a valid symlink
69
+ mk_symlink_file ( "aaa/apple" , "aaa/green_apple" ) ;
70
+ // a broken symlink
71
+ mk_symlink_file ( "aaa/setsuna" , "aaa/kazusa" ) ;
55
72
56
73
// windows does not allow `*` or `?` characters to exist in filenames
57
74
if env:: consts:: FAMILY != "windows" {
@@ -246,15 +263,19 @@ fn main() {
246
263
glob_vec( "aaa/*" ) ,
247
264
vec!(
248
265
PathBuf :: from( "aaa/apple" ) ,
266
+ PathBuf :: from( "aaa/green_apple" ) ,
267
+ PathBuf :: from( "aaa/kazusa" ) ,
249
268
PathBuf :: from( "aaa/orange" ) ,
250
- PathBuf :: from( "aaa/tomato" )
269
+ PathBuf :: from( "aaa/tomato" ) ,
251
270
)
252
271
) ;
253
272
254
273
assert_eq ! (
255
274
glob_vec( "aaa/*a*" ) ,
256
275
vec!(
257
276
PathBuf :: from( "aaa/apple" ) ,
277
+ PathBuf :: from( "aaa/green_apple" ) ,
278
+ PathBuf :: from( "aaa/kazusa" ) ,
258
279
PathBuf :: from( "aaa/orange" ) ,
259
280
PathBuf :: from( "aaa/tomato" )
260
281
)
@@ -285,6 +306,9 @@ fn main() {
285
306
286
307
assert_eq ! ( glob_vec( "aaa/tomato/tomato.txt/" ) , Vec :: <PathBuf >:: new( ) ) ;
287
308
309
+ // Ensure to find a broken symlink.
310
+ assert_eq ! ( glob_vec( "aaa/kazusa" ) , vec!( PathBuf :: from( "aaa/kazusa" ) ) ) ;
311
+
288
312
assert_eq ! ( glob_vec( "aa[a]" ) , vec!( PathBuf :: from( "aaa" ) ) ) ;
289
313
assert_eq ! ( glob_vec( "aa[abc]" ) , vec!( PathBuf :: from( "aaa" ) ) ) ;
290
314
assert_eq ! ( glob_vec( "a[bca]a" ) , vec!( PathBuf :: from( "aaa" ) ) ) ;
0 commit comments