11use cfg_if:: cfg_if;
22use mdbook_cmdrun:: CmdRun ;
33
4+ // Tests might differ on windows and unix because newlines, spaces and escaping work differently
45cfg_if ! {
56 if #[ cfg( target_family = "unix" ) ] {
67 const NL : & str = "\n " ;
@@ -20,79 +21,106 @@ macro_rules! add_test {
2021 } ;
2122}
2223
24+ add_test ! ( simple1, "echo oui" , & format!( "oui{NL}" ) , false ) ;
2325add_test ! ( simple_inline1, "echo oui" , "oui" , true ) ;
24- add_test ! ( simple_inline2, "echo oui non" , "oui non" , true ) ;
25- add_test ! ( simple_inline3, "echo oui non" , "oui non" , true ) ;
26- add_test ! (
27- simple_inline4,
28- "echo oui; echo non" ,
29- & format!( "oui{NL}non" ) ,
30- true
31- ) ;
32- add_test ! ( simple_inline5, "echo \" hello world\" " , "hello world" , true ) ;
3326
34- add_test ! ( simple1, "echo oui" , & format!( "oui{NL}" ) , false ) ;
3527add_test ! ( simple2, "echo oui non" , & format!( "oui non{NL}" ) , false ) ;
36- add_test ! (
37- simple3,
38- "echo oui non" ,
39- & format!( "oui non{NL}" ) ,
40- false
41- ) ;
42- add_test ! (
43- simple4,
44- "echo oui; echo non" ,
45- & format!( "oui{NL}non{NL}" ) ,
46- false
47- ) ;
48- add_test ! (
49- simple5,
50- "echo \" hello world\" " ,
51- & format!( "hello world{NL}" ) ,
52- false
53- ) ;
28+ add_test ! ( simple_inline2, "echo oui non" , "oui non" , true ) ;
29+
30+ cfg_if ! {
31+ if #[ cfg( target_family = "unix" ) ] {
32+ add_test!( simple3, "echo oui non" , & format!( "oui non{NL}" ) , false ) ;
33+ add_test!( simple_inline3, "echo oui non" , "oui non" , true ) ;
34+ } else if #[ cfg( target_family = "windows" ) ] {
35+ add_test!( simple3, "echo oui non" , & format!( "oui non{NL}" ) , false ) ;
36+ add_test!( simple_inline3, "echo oui non" , "oui non" , true ) ;
37+ }
38+ }
39+
40+ cfg_if ! {
41+ if #[ cfg( target_family = "unix" ) ] {
42+ add_test!( simple4, "echo oui; echo non" , & format!( "oui{NL}non{NL}" ) , false ) ;
43+ add_test!( simple_inline4, "echo oui; echo non" , "oui\n non" , true ) ;
44+ } else if #[ cfg( target_family = "windows" ) ] {
45+ // on windows, ; is not a command separator, so it will be passed to the command
46+ add_test!( simple4, "echo oui; echo non" , & format!( "oui; echo non{NL}" ) , false ) ;
47+ add_test!( simple_inline4, "echo oui; echo non" , "oui; echo non" , true ) ;
48+ }
49+ }
50+
51+ cfg_if ! {
52+ if #[ cfg( target_family = "unix" ) ] {
53+ add_test!( simple5, "echo \" hello world\" " , & format!( "hello world{NL}" ) , false ) ;
54+ add_test!( simple_inline5, "echo \" hello world\" " , "hello world" , true ) ;
55+ } else if #[ cfg( target_family = "windows" ) ] {
56+ add_test!( simple5, "echo hello world" , & format!( "hello world{NL}" ) , false ) ;
57+ add_test!( simple_inline5, "echo hello world" , "hello world" , true ) ;
58+ }
59+ }
5460
55- add_test ! ( pipe_inline1, "cat LICENSE | head -n 1" , "MIT License" , true ) ;
56- add_test ! (
57- pipe_inline2,
58- "yes 42 | head -n 3" ,
59- & format!( "42{NL}42{NL}42" ) ,
60- true
61- ) ;
62- add_test ! (
63- pipe_inline3,
64- "echo \" coucou \" | tr -d ' '" ,
65- "coucou" ,
66- true
67- ) ;
6861add_test ! (
6962 pipe1,
7063 "cat LICENSE | head -n 1" ,
7164 & format!( "MIT License{NL}" ) ,
7265 false
7366) ;
67+ add_test ! ( pipe_inline1, "cat LICENSE | head -n 1" , "MIT License" , true ) ;
7468add_test ! (
7569 pipe2,
7670 "yes 42 | head -n 3" ,
7771 & format!( "42{NL}42{NL}42{NL}" ) ,
7872 false
7973) ;
8074add_test ! (
81- pipe3 ,
82- "echo \" coucou \" | tr -d ' ' " ,
83- & format!( "coucou {NL}" ) ,
84- false
75+ pipe_inline2 ,
76+ "yes 42 | head -n 3 " ,
77+ & format!( "42 {NL}42{NL}42 " ) ,
78+ true
8579) ;
8680
87- add_test ! ( quote_inline1, "echo \" \" " , "" , true ) ;
88- add_test ! ( quote_inline2, "echo \" \\ \" \" " , "\" " , true ) ;
89- add_test ! ( quote_inline3, "echo ''" , "" , true ) ;
90- add_test ! ( quote_inline4, "echo '\\ '" , "\\ " , true ) ;
81+ cfg_if ! {
82+ if #[ cfg( target_family = "unix" ) ] {
83+ add_test!(
84+ pipe3,
85+ "echo \" coucou \" | tr -d ' '" ,
86+ & format!( "coucou{NL}" ) ,
87+ false
88+ ) ;
89+ add_test!(
90+ pipe_inline3,
91+ "echo \" coucou \" | tr -d ' '" ,
92+ "coucou" ,
93+ true
94+ ) ;
95+ } else if #[ cfg( target_family = "windows" ) ] {
96+ add_test!(
97+ pipe3,
98+ "echo coucou | tr -d ' '" ,
99+ & format!( "coucou{NL}" ) ,
100+ false
101+ ) ;
102+ add_test!(
103+ pipe_inline3,
104+ "echo coucou | tr -d ' '" ,
105+ "coucou" ,
106+ true
107+ ) ;
108+ }
109+ }
110+
111+ cfg_if ! (
112+ if #[ cfg( target_family = "unix" ) ] {
113+ add_test!( quote_inline1, "echo \" \" " , "" , true ) ;
114+ add_test!( quote_inline2, "echo \" \\ \" \" " , "\" " , true ) ;
115+ add_test!( quote_inline3, "echo ''" , "" , true ) ;
116+ add_test!( quote_inline4, "echo '\\ '" , "\\ " , true ) ;
91117
92- add_test ! ( quote1, "echo \" \" " , & format!( "{NL}" ) , false ) ;
93- add_test ! ( quote2, "echo \" \\ \" \" " , & format!( "\" {NL}" ) , false ) ;
94- add_test ! ( quote3, "echo ''" , & format!( "{NL}" ) , false ) ;
95- add_test ! ( quote4, "echo '\\ '" , & format!( "\\ {NL}" ) , false ) ;
118+ add_test!( quote1, "echo \" \" " , & format!( "{NL}" ) , false ) ;
119+ add_test!( quote2, "echo \" \\ \" \" " , & format!( "\" {NL}" ) , false ) ;
120+ add_test!( quote3, "echo ''" , & format!( "{NL}" ) , false ) ;
121+ add_test!( quote4, "echo '\\ '" , & format!( "\\ {NL}" ) , false ) ;
122+ }
123+ ) ;
96124
97125add_test ! (
98126 mixed_inline1,
0 commit comments