33mod  cli { 
44    use  anyhow:: Result ; 
55    use  assert_cmd:: Command ; 
6+     use  rstest:: rstest; 
67    use  std:: io:: prelude:: * ; 
78
89    fn  sd ( )  -> Command  { 
@@ -25,36 +26,46 @@ mod cli {
2526        Ok ( ( ) ) 
2627    } 
2728
28-     #[ test ]  
29-     fn  in_place ( )  -> Result < ( ) >  { 
29+     #[ rstest ]  
30+     fn  in_place ( # [ values ( false ,   true ) ]   no_swap :   bool )  -> Result < ( ) >  { 
3031        let  mut  file = tempfile:: NamedTempFile :: new ( ) ?; 
3132        file. write_all ( b"abc123def" ) ?; 
3233        let  path = file. into_temp_path ( ) ; 
3334
34-         sd ( ) . args ( [ "abc\\ d+" ,  "" ,  path. to_str ( ) . unwrap ( ) ] ) 
35-             . assert ( ) 
36-             . success ( ) ; 
35+         let  mut  cmd = sd ( ) ; 
36+         cmd. args ( [ "abc\\ d+" ,  "" ,  path. to_str ( ) . unwrap ( ) ] ) ; 
37+         if  no_swap { 
38+             cmd. arg ( "--no-swap" ) ; 
39+         } 
40+         cmd. assert ( ) . success ( ) ; 
3741        assert_file ( & path,  "def" ) ; 
3842
3943        Ok ( ( ) ) 
4044    } 
4145
42-     #[ test]  
43-     fn  in_place_with_empty_result_file ( )  -> Result < ( ) >  { 
46+     #[ rstest]  
47+     fn  in_place_with_empty_result_file ( 
48+         #[ values( false ,  true ) ]   no_swap :  bool , 
49+     )  -> Result < ( ) >  { 
4450        let  mut  file = tempfile:: NamedTempFile :: new ( ) ?; 
4551        file. write_all ( b"a7c" ) ?; 
4652        let  path = file. into_temp_path ( ) ; 
4753
48-         sd ( ) . args ( [ "a\\ dc" ,  "" ,  path. to_str ( ) . unwrap ( ) ] ) 
49-             . assert ( ) 
50-             . success ( ) ; 
54+         let  mut  cmd = sd ( ) ; 
55+         cmd. args ( [ "a\\ dc" ,  "" ,  path. to_str ( ) . unwrap ( ) ] ) ; 
56+         if  no_swap { 
57+             cmd. arg ( "--no-swap" ) ; 
58+         } 
59+         cmd. assert ( ) . success ( ) ; 
5160        assert_file ( & path,  "" ) ; 
5261
5362        Ok ( ( ) ) 
5463    } 
5564
56-     #[ test]  
57-     fn  in_place_following_symlink ( )  -> Result < ( ) >  { 
65+     #[ rstest]  
66+     fn  in_place_following_symlink ( 
67+         #[ values( false ,  true ) ]   no_swap :  bool , 
68+     )  -> Result < ( ) >  { 
5869        let  dir = tempfile:: tempdir ( ) ?; 
5970        let  path = dir. path ( ) ; 
6071        let  file = path. join ( "file" ) ; 
@@ -63,39 +74,48 @@ mod cli {
6374        create_soft_link ( & file,  & link) ?; 
6475        std:: fs:: write ( & file,  "abc123def" ) ?; 
6576
66-         sd ( ) . args ( [ "abc\\ d+" ,  "" ,  link. to_str ( ) . unwrap ( ) ] ) 
67-             . assert ( ) 
68-             . success ( ) ; 
77+         let  mut  cmd = sd ( ) ; 
78+         cmd. args ( [ "abc\\ d+" ,  "" ,  link. to_str ( ) . unwrap ( ) ] ) ; 
79+         if  no_swap { 
80+             cmd. arg ( "--no-swap" ) ; 
81+         } 
82+         cmd. assert ( ) . success ( ) ; 
6983
7084        assert_file ( & file,  "def" ) ; 
7185        assert ! ( std:: fs:: symlink_metadata( link) ?. file_type( ) . is_symlink( ) ) ; 
7286
7387        Ok ( ( ) ) 
7488    } 
7589
76-     #[ test ]  
77-     fn  replace_into_stdout ( )  -> Result < ( ) >  { 
90+     #[ rstest ]  
91+     fn  replace_into_stdout ( # [ values ( false ,   true ) ]   no_swap :   bool )  -> Result < ( ) >  { 
7892        let  mut  file = tempfile:: NamedTempFile :: new ( ) ?; 
7993        file. write_all ( b"abc123def" ) ?; 
8094
81-         sd ( ) . args ( [ "-p" ,  "abc\\ d+" ,  "" ,  file. path ( ) . to_str ( ) . unwrap ( ) ] ) 
82-             . assert ( ) 
83-             . success ( ) 
84-             . stdout ( format ! ( 
85-                 "{}{}def\n " , 
86-                 ansi_term:: Color :: Green . prefix( ) , 
87-                 ansi_term:: Color :: Green . suffix( ) 
88-             ) ) ; 
95+         let  mut  cmd = sd ( ) ; 
96+         cmd. args ( [ "-p" ,  "abc\\ d+" ,  "" ,  file. path ( ) . to_str ( ) . unwrap ( ) ] ) ; 
97+         if  no_swap { 
98+             cmd. arg ( "--no-swap" ) ; 
99+         } 
100+         cmd. assert ( ) . success ( ) . stdout ( format ! ( 
101+             "{}{}def\n " , 
102+             ansi_term:: Color :: Green . prefix( ) , 
103+             ansi_term:: Color :: Green . suffix( ) 
104+         ) ) ; 
89105
90106        assert_file ( file. path ( ) ,  "abc123def" ) ; 
91107
92108        Ok ( ( ) ) 
93109    } 
94110
95-     #[ test]  
96-     fn  stdin ( )  -> Result < ( ) >  { 
97-         sd ( ) . args ( [ "abc\\ d+" ,  "" ] ) 
98-             . write_stdin ( "abc123def" ) 
111+     #[ rstest]  
112+     fn  stdin ( #[ values( false ,  true ) ]   no_swap :  bool )  -> Result < ( ) >  { 
113+         let  mut  cmd = sd ( ) ; 
114+         cmd. args ( [ "abc\\ d+" ,  "" ] ) ; 
115+         if  no_swap { 
116+             cmd. arg ( "--no-swap" ) ; 
117+         } 
118+         cmd. write_stdin ( "abc123def" ) 
99119            . assert ( ) 
100120            . success ( ) 
101121            . stdout ( "def" ) ; 
0 commit comments