@@ -119,76 +119,59 @@ fn differences_brief() -> Result<(), Box<dyn std::error::Error>> {
119119}
120120
121121#[ test]
122- fn short_option_clusters_match_split_options ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
122+ fn short_option_clusters ( ) -> Result < ( ) , Box < dyn std:: error:: Error > > {
123123 let mut left = NamedTempFile :: new ( ) ?;
124- left. write_all ( b"a \t b \n " ) ?;
124+ left. write_all ( b"one \t two \n " ) ?;
125125 let mut right = NamedTempFile :: new ( ) ?;
126- right. write_all ( b"a b\n " ) ?;
127-
128- let equivalent = |cluster : & [ & str ] ,
129- split : & [ & str ] ,
130- other : & std:: path:: Path |
131- -> Result < std:: process:: Output , Box < dyn std:: error:: Error > > {
132- let run = |options : & [ & str ] | {
133- cargo_bin_cmd ! ( "diffutils" )
134- . arg ( "diff" )
135- . args ( options)
136- . arg ( left. path ( ) )
137- . arg ( other)
138- . output ( )
139- } ;
140- let clustered = run ( cluster) ?;
141- let separate = run ( split) ?;
142- assert_eq ! (
143- clustered. status. code( ) ,
144- separate. status. code( ) ,
145- "{cluster:?}"
146- ) ;
147- assert_eq ! ( clustered. stdout, separate. stdout, "{cluster:?}" ) ;
148- assert_eq ! ( clustered. stderr, separate. stderr, "{cluster:?}" ) ;
149- Ok ( clustered)
150- } ;
151-
152- for ( cluster, split, expected_code) in [
153- ( & [ "-cc" ] [ ..] , & [ "-c" , "-c" ] [ ..] , Some ( 1 ) ) ,
154- ( & [ "-ee" ] , & [ "-e" , "-e" ] , Some ( 1 ) ) ,
155- ( & [ "-qq" ] , & [ "-q" , "-q" ] , Some ( 1 ) ) ,
156- ( & [ "-ss" ] , & [ "-s" , "-s" ] , Some ( 1 ) ) ,
157- ( & [ "-tt" ] , & [ "-t" , "-t" ] , Some ( 1 ) ) ,
158- ( & [ "-uu" ] , & [ "-u" , "-u" ] , Some ( 1 ) ) ,
159- ( & [ "-cqt" ] , & [ "-c" , "-q" , "-t" ] , Some ( 1 ) ) ,
160- ( & [ "-eqs" ] , & [ "-e" , "-q" , "-s" ] , Some ( 1 ) ) ,
161- ( & [ "-qst" ] , & [ "-q" , "-s" , "-t" ] , Some ( 1 ) ) ,
162- ( & [ "-uqt" ] , & [ "-u" , "-q" , "-t" ] , Some ( 1 ) ) ,
163- ( & [ "-cu" ] , & [ "-c" , "-u" ] , Some ( 2 ) ) ,
164- ( & [ "-uc" ] , & [ "-u" , "-c" ] , Some ( 2 ) ) ,
165- ( & [ "-eu" ] , & [ "-e" , "-u" ] , Some ( 2 ) ) ,
166- ( & [ "-c" , "-ut" ] , & [ "-c" , "-u" , "-t" ] , Some ( 2 ) ) ,
167- ( & [ "-ut" , "-c" ] , & [ "-u" , "-t" , "-c" ] , Some ( 2 ) ) ,
168- ] {
169- let clustered = equivalent ( cluster, split, right. path ( ) ) ?;
170- assert_eq ! ( clustered. status. code( ) , expected_code, "{cluster:?}" ) ;
171- }
172-
126+ right. write_all ( b"one two\n " ) ?;
173127 let mut same = NamedTempFile :: new ( ) ?;
174- same. write_all ( b"a\t b\n " ) ?;
175- let identical = format ! (
128+ same. write_all ( b"one\t two\n " ) ?;
129+
130+ let mut cmd = cargo_bin_cmd ! ( "diffutils" ) ;
131+ cmd. arg ( "diff" )
132+ . arg ( "-qs" )
133+ . arg ( left. path ( ) )
134+ . arg ( right. path ( ) ) ;
135+ cmd. assert ( ) . code ( predicate:: eq ( 1 ) ) . stdout ( format ! (
136+ "Files {} and {} differ\n " ,
137+ left. path( ) . to_string_lossy( ) ,
138+ right. path( ) . to_string_lossy( )
139+ ) ) ;
140+
141+ let mut cmd = cargo_bin_cmd ! ( "diffutils" ) ;
142+ cmd. arg ( "diff" ) . arg ( "-sq" ) . arg ( left. path ( ) ) . arg ( same. path ( ) ) ;
143+ cmd. assert ( ) . code ( predicate:: eq ( 0 ) ) . stdout ( format ! (
176144 "Files {} and {} are identical\n " ,
177145 left. path( ) . to_string_lossy( ) ,
178146 same. path( ) . to_string_lossy( )
179- ) ;
180- for ( cluster, split) in [
181- ( & [ "-ss" ] [ ..] , & [ "-s" , "-s" ] [ ..] ) ,
182- ( & [ "-qs" ] , & [ "-q" , "-s" ] ) ,
183- ( & [ "-ys" ] , & [ "-y" , "-s" ] ) ,
184- ] {
185- let clustered = equivalent ( cluster, split, same. path ( ) ) ?;
186- assert_eq ! ( clustered. status. code( ) , Some ( 0 ) , "{cluster:?}" ) ;
187- assert ! (
188- clustered. stdout. ends_with( identical. as_bytes( ) ) ,
189- "{cluster:?}"
190- ) ;
191- }
147+ ) ) ;
148+
149+ let mut cmd = cargo_bin_cmd ! ( "diffutils" ) ;
150+ cmd. arg ( "diff" )
151+ . arg ( "-te" )
152+ . arg ( right. path ( ) )
153+ . arg ( left. path ( ) ) ;
154+ cmd. assert ( )
155+ . code ( predicate:: eq ( 1 ) )
156+ . stdout ( "1c\n one two\n .\n " ) ;
157+
158+ let mut cmd = cargo_bin_cmd ! ( "diffutils" ) ;
159+ cmd. arg ( "diff" )
160+ . arg ( "-ue" )
161+ . arg ( left. path ( ) )
162+ . arg ( right. path ( ) ) ;
163+ cmd. assert ( )
164+ . code ( predicate:: eq ( 2 ) )
165+ . stderr ( predicate:: str:: contains ( "Conflicting output style options" ) ) ;
166+
167+ let mut cmd = cargo_bin_cmd ! ( "diffutils" ) ;
168+ cmd. arg ( "diff" )
169+ . arg ( "-qz" )
170+ . arg ( left. path ( ) )
171+ . arg ( right. path ( ) ) ;
172+ cmd. assert ( )
173+ . code ( predicate:: eq ( 2 ) )
174+ . stderr ( predicate:: str:: contains ( "unrecognized option '-qz'" ) ) ;
192175 Ok ( ( ) )
193176}
194177
0 commit comments