@@ -39,9 +39,12 @@ impl<T: Write> JsonFormatter<T> {
3939 stdout : Option < Cow < ' _ , str > > ,
4040 extra : Option < & str > ,
4141 ) -> io:: Result < ( ) > {
42+ // A doc test's name includes a filename which must be escaped for correct json.
4243 self . write_message ( & * format ! (
4344 r#"{{ "type": "{}", "name": "{}", "event": "{}""# ,
44- ty, name, evt
45+ ty,
46+ EscapedString ( name) ,
47+ evt
4548 ) ) ?;
4649 if let Some ( exec_time) = exec_time {
4750 self . write_message ( & * format ! ( r#", "exec_time": "{}""# , exec_time) ) ?;
@@ -67,7 +70,7 @@ impl<T: Write> OutputFormatter for JsonFormatter<T> {
6770 fn write_test_start ( & mut self , desc : & TestDesc ) -> io:: Result < ( ) > {
6871 self . writeln_message ( & * format ! (
6972 r#"{{ "type": "test", "event": "started", "name": "{}" }}"# ,
70- desc. name
73+ EscapedString ( desc. name. as_slice ( ) )
7174 ) )
7275 }
7376
@@ -140,7 +143,10 @@ impl<T: Write> OutputFormatter for JsonFormatter<T> {
140143 \" name\" : \" {}\" , \
141144 \" median\" : {}, \
142145 \" deviation\" : {}{} }}",
143- desc. name, median, deviation, mbps
146+ EscapedString ( desc. name. as_slice( ) ) ,
147+ median,
148+ deviation,
149+ mbps
144150 ) ;
145151
146152 self . writeln_message ( & * line)
@@ -151,7 +157,7 @@ impl<T: Write> OutputFormatter for JsonFormatter<T> {
151157 fn write_timeout ( & mut self , desc : & TestDesc ) -> io:: Result < ( ) > {
152158 self . writeln_message ( & * format ! (
153159 r#"{{ "type": "test", "event": "timeout", "name": "{}" }}"# ,
154- desc. name
160+ EscapedString ( desc. name. as_slice ( ) )
155161 ) )
156162 }
157163
0 commit comments