diff options
author | Giles Cope <gilescope@gmail.com> | 2020-10-13 08:30:11 +0100 |
---|---|---|
committer | Giles Cope <gilescope@gmail.com> | 2020-10-13 09:34:05 +0100 |
commit | 0c32e811577fbf2ff46a607897f9ea7b6b95b364 (patch) | |
tree | 8314fbd0cee90230053c3a6e150df4eca68e0bfa | |
parent | 4d63435aaef3bdfec37ddf957b3f6e66e771ee2c (diff) | |
download | rust-0c32e811577fbf2ff46a607897f9ea7b6b95b364.tar.gz |
Fixing escaping to ensure generation of welformed json.
-rw-r--r-- | library/test/src/formatters/json.rs | 14 |
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()) )) } |