From 78e269ee0b8050bf91ed35b08b93b922c334d21f Mon Sep 17 00:00:00 2001 From: Oliver Schneider Date: Fri, 17 Nov 2017 08:55:22 +0100 Subject: Include rendered diagnostic in json --- src/tools/compiletest/src/runtest.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/tools') diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index b5a8a15b1a8..b74867aba2d 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -2400,15 +2400,21 @@ actual:\n\ fn normalize_output(&self, output: &str, custom_rules: &[(String, String)]) -> String { let parent_dir = self.testpaths.file.parent().unwrap(); let cflags = self.props.compile_flags.join(" "); - let parent_dir_str = if cflags.contains("--error-format json") - || cflags.contains("--error-format pretty-json") { + let json = cflags.contains("--error-format json") || + cflags.contains("--error-format pretty-json"); + let parent_dir_str = if json { parent_dir.display().to_string().replace("\\", "\\\\") } else { parent_dir.display().to_string() }; - let mut normalized = output.replace(&parent_dir_str, "$DIR") - .replace("\\\\", "\\") // denormalize for paths on windows + let mut normalized = output.replace(&parent_dir_str, "$DIR"); + + if json { + normalized = normalized.replace("\\n", "\n"); // verbatim newline in json strings + } + + normalized = normalized.replace("\\\\", "\\") // denormalize for paths on windows .replace("\\", "/") // normalize for paths on windows .replace("\r\n", "\n") // normalize for linebreaks on windows .replace("\t", "\\t"); // makes tabs visible -- cgit 1.4.1-3-g733a5 From 3864d8943b99138d46751aadda58e27a1f4e06e8 Mon Sep 17 00:00:00 2001 From: Oliver Schneider Date: Mon, 20 Nov 2017 09:40:55 +0100 Subject: Address PR comments --- src/libsyntax/json.rs | 2 +- src/tools/compiletest/src/runtest.rs | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'src/tools') diff --git a/src/libsyntax/json.rs b/src/libsyntax/json.rs index d3f69a66557..80ac0cb4faf 100644 --- a/src/libsyntax/json.rs +++ b/src/libsyntax/json.rs @@ -200,7 +200,7 @@ impl Diagnostic { children: db.children.iter().map(|c| { Diagnostic::from_sub_diagnostic(c, je) }).chain(sugg).collect(), - rendered: Some(output.to_owned()), + rendered: Some(output), } } diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index b74867aba2d..633f349ba50 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -2411,7 +2411,11 @@ actual:\n\ let mut normalized = output.replace(&parent_dir_str, "$DIR"); if json { - normalized = normalized.replace("\\n", "\n"); // verbatim newline in json strings + // escaped newlines in json strings should be readable + // in the stderr files. There's no point int being correct, + // since only humans process the stderr files. + // Thus we just turn escaped newlines back into newlines. + normalized = normalized.replace("\\n", "\n"); } normalized = normalized.replace("\\\\", "\\") // denormalize for paths on windows -- cgit 1.4.1-3-g733a5