summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiles Cope <gilescope@gmail.com>2020-10-13 08:30:11 +0100
committerGiles Cope <gilescope@gmail.com>2020-10-13 09:34:05 +0100
commit0c32e811577fbf2ff46a607897f9ea7b6b95b364 (patch)
tree8314fbd0cee90230053c3a6e150df4eca68e0bfa
parent4d63435aaef3bdfec37ddf957b3f6e66e771ee2c (diff)
downloadrust-0c32e811577fbf2ff46a607897f9ea7b6b95b364.tar.gz
Fixing escaping to ensure generation of welformed json.
-rw-r--r--library/test/src/formatters/json.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/library/test/src/formatters/json.rs b/library/test/src/formatters/json.rs
index 9ebc991d638..cfb06827be4 100644
--- a/library/test/src/formatters/json.rs
+++ b/library/test/src/formatters/json.rs
@@ -39,9 +39,12 @@ impl<T: Write> JsonFormatter<T> {
stdout: Option<Cow<'_, str>>,
extra: Option<&str>,
) -> io::Result<()> {
+ // A doc test's name includes a filename which must be escaped for correct json.
self.write_message(&*format!(
r#"{{ "type": "{}", "name": "{}", "event": "{}""#,
- ty, name, evt
+ ty,
+ EscapedString(name),
+ evt
))?;
if let Some(exec_time) = exec_time {
self.write_message(&*format!(r#", "exec_time": "{}""#, exec_time))?;
@@ -67,7 +70,7 @@ impl<T: Write> OutputFormatter for JsonFormatter<T> {
fn write_test_start(&mut self, desc: &TestDesc) -> io::Result<()> {
self.writeln_message(&*format!(
r#"{{ "type": "test", "event": "started", "name": "{}" }}"#,
- desc.name
+ EscapedString(desc.name.as_slice())
))
}
@@ -140,7 +143,10 @@ impl<T: Write> OutputFormatter for JsonFormatter<T> {
\"name\": \"{}\", \
\"median\": {}, \
\"deviation\": {}{} }}",
- desc.name, median, deviation, mbps
+ EscapedString(desc.name.as_slice()),
+ median,
+ deviation,
+ mbps
);
self.writeln_message(&*line)
@@ -151,7 +157,7 @@ impl<T: Write> OutputFormatter for JsonFormatter<T> {
fn write_timeout(&mut self, desc: &TestDesc) -> io::Result<()> {
self.writeln_message(&*format!(
r#"{{ "type": "test", "event": "timeout", "name": "{}" }}"#,
- desc.name
+ EscapedString(desc.name.as_slice())
))
}