Skip to content

Commit cc5d9b1

Browse files
committed
fix command tests (2)
1 parent 0a41891 commit cc5d9b1

File tree

1 file changed

+81
-53
lines changed

1 file changed

+81
-53
lines changed

tests/command.rs

Lines changed: 81 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use cfg_if::cfg_if;
22
use mdbook_cmdrun::CmdRun;
33

4+
// Tests might differ on windows and unix because newlines, spaces and escaping work differently
45
cfg_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);
2325
add_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);
3527
add_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\nnon", 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-
);
6861
add_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);
7468
add_test!(
7569
pipe2,
7670
"yes 42 | head -n 3",
7771
&format!("42{NL}42{NL}42{NL}"),
7872
false
7973
);
8074
add_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

97125
add_test!(
98126
mixed_inline1,

0 commit comments

Comments
 (0)