Skip to content
This repository was archived by the owner on Aug 12, 2021. It is now read-only.

Commit f93240e

Browse files
garyttierneygnzlbg
authored andcommitted
Escape test names in events emitted by the JSON formatter
Converts test names to escaped strings before formatting the message to be emitted. This prevents invalid JSON being generated when the test name contains text that needs escaped (e.g.: the backslash in a Windows path from a doctest).
1 parent e2a4b62 commit f93240e

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

libtest/formatters/json.rs

+8-3
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,17 @@ impl<T: Write> JsonFormatter<T> {
2626
if let Some(extras) = extra {
2727
self.write_message(&*format!(
2828
r#"{{ "type": "{}", "name": "{}", "event": "{}", {} }}"#,
29-
ty, name, evt, extras
29+
ty,
30+
EscapedString(name),
31+
evt,
32+
extras
3033
))
3134
} else {
3235
self.write_message(&*format!(
3336
r#"{{ "type": "{}", "name": "{}", "event": "{}" }}"#,
34-
ty, name, evt
37+
ty,
38+
EscapedString(name),
39+
evt
3540
))
3641
}
3742
}
@@ -48,7 +53,7 @@ impl<T: Write> OutputFormatter for JsonFormatter<T> {
4853
fn write_test_start(&mut self, desc: &TestDesc) -> io::Result<()> {
4954
self.write_message(&*format!(
5055
r#"{{ "type": "test", "event": "started", "name": "{}" }}"#,
51-
desc.name
56+
EscapedString(desc.name.as_slice())
5257
))
5358
}
5459

0 commit comments

Comments
 (0)