@@ -39,9 +39,12 @@ impl<T: Write> JsonFormatter<T> {
39
39
stdout : Option < Cow < ' _ , str > > ,
40
40
extra : Option < & str > ,
41
41
) -> io:: Result < ( ) > {
42
+ // A doc test's name includes a filename which must be escaped for correct json.
42
43
self . write_message ( & * format ! (
43
44
r#"{{ "type": "{}", "name": "{}", "event": "{}""# ,
44
- ty, name, evt
45
+ ty,
46
+ EscapedString ( name) ,
47
+ evt
45
48
) ) ?;
46
49
if let Some ( exec_time) = exec_time {
47
50
self . write_message ( & * format ! ( r#", "exec_time": "{}""# , exec_time) ) ?;
@@ -67,7 +70,7 @@ impl<T: Write> OutputFormatter for JsonFormatter<T> {
67
70
fn write_test_start ( & mut self , desc : & TestDesc ) -> io:: Result < ( ) > {
68
71
self . writeln_message ( & * format ! (
69
72
r#"{{ "type": "test", "event": "started", "name": "{}" }}"# ,
70
- desc. name
73
+ EscapedString ( desc. name. as_slice ( ) )
71
74
) )
72
75
}
73
76
@@ -140,7 +143,10 @@ impl<T: Write> OutputFormatter for JsonFormatter<T> {
140
143
\" name\" : \" {}\" , \
141
144
\" median\" : {}, \
142
145
\" deviation\" : {}{} }}",
143
- desc. name, median, deviation, mbps
146
+ EscapedString ( desc. name. as_slice( ) ) ,
147
+ median,
148
+ deviation,
149
+ mbps
144
150
) ;
145
151
146
152
self . writeln_message ( & * line)
@@ -151,7 +157,7 @@ impl<T: Write> OutputFormatter for JsonFormatter<T> {
151
157
fn write_timeout ( & mut self , desc : & TestDesc ) -> io:: Result < ( ) > {
152
158
self . writeln_message ( & * format ! (
153
159
r#"{{ "type": "test", "event": "timeout", "name": "{}" }}"# ,
154
- desc. name
160
+ EscapedString ( desc. name. as_slice ( ) )
155
161
) )
156
162
}
157
163
0 commit comments