@@ -207,6 +207,7 @@ impl ZipStreamFileMetadata {
207
207
mod test {
208
208
use super :: * ;
209
209
use std:: collections:: BTreeSet ;
210
+ use std:: fs:: remove_dir;
210
211
use std:: io:: Cursor ;
211
212
use crate :: write:: SimpleFileOptions ;
212
213
use crate :: ZipWriter ;
@@ -394,12 +395,23 @@ mod test {
394
395
writer. add_symlink ( "a/" , "b/x/" , SimpleFileOptions :: default ( ) ) ?;
395
396
writer. add_symlink ( "b/" , "a/x/" , SimpleFileOptions :: default ( ) ) ?;
396
397
let zipfile = writer. finish ( ) ?. into_inner ( ) ;
397
- let temp_dir = temp_dir ( ) ;
398
+ let temp_dir = temp_dir ( ) . join ( "stream_symlink_loop" ) ;
399
+ create_dir ( & temp_dir) ?;
398
400
let reader = ZipStreamReader :: new ( Cursor :: new ( & zipfile) ) ;
399
401
assert ! ( reader. extract( & temp_dir) . is_err( ) ) ;
402
+ let _ = remove_dir ( temp_dir. join ( "a" ) ) ;
403
+ let _ = remove_dir ( temp_dir. join ( "b" ) ) ;
400
404
create_dir ( temp_dir. join ( "a" ) ) ?;
401
405
let reader = ZipStreamReader :: new ( Cursor :: new ( & zipfile) ) ;
402
406
assert ! ( reader. extract( & temp_dir) . is_err( ) ) ;
407
+ let _ = remove_dir ( temp_dir. join ( "a" ) ) ;
408
+ let _ = remove_dir ( temp_dir. join ( "b" ) ) ;
409
+ create_dir ( temp_dir. join ( "b" ) ) ?;
410
+ let reader = ZipStreamReader :: new ( Cursor :: new ( & zipfile) ) ;
411
+ assert ! ( reader. extract( & temp_dir) . is_err( ) ) ;
412
+ let _ = remove_dir ( temp_dir. join ( "a" ) ) ;
413
+ let _ = remove_dir ( temp_dir. join ( "b" ) ) ;
414
+ create_dir ( temp_dir. join ( "a" ) ) ?;
403
415
create_dir ( temp_dir. join ( "b" ) ) ?;
404
416
let reader = ZipStreamReader :: new ( Cursor :: new ( & zipfile) ) ;
405
417
assert ! ( reader. extract( & temp_dir) . is_err( ) ) ;
0 commit comments