@@ -207,6 +207,7 @@ impl ZipStreamFileMetadata {
207207mod test {
208208 use super :: * ;
209209 use std:: collections:: BTreeSet ;
210+ use std:: fs:: remove_dir;
210211 use std:: io:: Cursor ;
211212 use crate :: write:: SimpleFileOptions ;
212213 use crate :: ZipWriter ;
@@ -394,12 +395,23 @@ mod test {
394395 writer. add_symlink ( "a/" , "b/x/" , SimpleFileOptions :: default ( ) ) ?;
395396 writer. add_symlink ( "b/" , "a/x/" , SimpleFileOptions :: default ( ) ) ?;
396397 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) ?;
398400 let reader = ZipStreamReader :: new ( Cursor :: new ( & zipfile) ) ;
399401 assert ! ( reader. extract( & temp_dir) . is_err( ) ) ;
402+ let _ = remove_dir ( temp_dir. join ( "a" ) ) ;
403+ let _ = remove_dir ( temp_dir. join ( "b" ) ) ;
400404 create_dir ( temp_dir. join ( "a" ) ) ?;
401405 let reader = ZipStreamReader :: new ( Cursor :: new ( & zipfile) ) ;
402406 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" ) ) ?;
403415 create_dir ( temp_dir. join ( "b" ) ) ?;
404416 let reader = ZipStreamReader :: new ( Cursor :: new ( & zipfile) ) ;
405417 assert ! ( reader. extract( & temp_dir) . is_err( ) ) ;
0 commit comments