From fbafae1e5d9077f017ad5cbf13a1d6e08b92512b Mon Sep 17 00:00:00 2001 From: Basavesh Shivakumar Date: Sun, 21 Mar 2021 13:55:23 +0100 Subject: [PATCH 1/2] Canonicalize path when displaying a --- compiler/rustc_span/src/lib.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/compiler/rustc_span/src/lib.rs b/compiler/rustc_span/src/lib.rs index d2790335b5abc..a4b151cde12f3 100644 --- a/compiler/rustc_span/src/lib.rs +++ b/compiler/rustc_span/src/lib.rs @@ -215,7 +215,11 @@ impl std::fmt::Display for FileName { impl From for FileName { fn from(p: PathBuf) -> Self { assert!(!p.to_string_lossy().ends_with('>')); - FileName::Real(RealFileName::Named(p)) + if cfg!(not(windows)) { + FileName::Real(RealFileName::Named(p.canonicalize().unwrap_or(p))) + } else { + FileName::Real(RealFileName::Named(p)) + } } } From b8737b479d84f0fb3f9239f3712d8c24f8d25048 Mon Sep 17 00:00:00 2001 From: Basavesh Shivakumar Date: Sun, 21 Mar 2021 23:52:26 +0100 Subject: [PATCH 2/2] make changes to testing strategy --- src/test/run-make-fulldeps/libtest-json/Makefile | 10 ++++++++-- .../libtest-json/canonicalize_path.py | 14 ++++++++++++++ .../libtest-json/output-default.json | 2 +- .../libtest-json/output-stdout-success.json | 2 +- 4 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 src/test/run-make-fulldeps/libtest-json/canonicalize_path.py diff --git a/src/test/run-make-fulldeps/libtest-json/Makefile b/src/test/run-make-fulldeps/libtest-json/Makefile index f61a1aa84100f..0914dba9b2b81 100644 --- a/src/test/run-make-fulldeps/libtest-json/Makefile +++ b/src/test/run-make-fulldeps/libtest-json/Makefile @@ -5,6 +5,9 @@ OUTPUT_FILE_DEFAULT := $(TMPDIR)/libtest-json-output-default.json OUTPUT_FILE_STDOUT_SUCCESS := $(TMPDIR)/libtest-json-output-stdout-success.json +CANONIZED_FILE_DEFAULT := $(TMPDIR)/libtest-json-output-default-canonized.json +CANONIZED_FILE_STDOUT_SUCCESS := $(TMPDIR)/libtest-json-output-stdout-success-canonized.json + all: $(RUSTC) --test f.rs RUST_BACKTRACE=0 $(call RUN,f) -Z unstable-options --test-threads=1 --format=json > $(OUTPUT_FILE_DEFAULT) || true @@ -13,6 +16,9 @@ all: cat $(OUTPUT_FILE_DEFAULT) | "$(PYTHON)" validate_json.py cat $(OUTPUT_FILE_STDOUT_SUCCESS) | "$(PYTHON)" validate_json.py + cat output-default.json | "$(PYTHON)" canonicalize_path.py > $(CANONIZED_FILE_DEFAULT) || true + cat output-stdout-success.json | "$(PYTHON)" canonicalize_path.py > $(CANONIZED_FILE_STDOUT_SUCCESS) || true + # Normalize the actual output and compare to expected output file - cat $(OUTPUT_FILE_DEFAULT) | sed 's/"exec_time": [0-9.]*/"exec_time": $$TIME/' | diff output-default.json - - cat $(OUTPUT_FILE_STDOUT_SUCCESS) | sed 's/"exec_time": [0-9.]*/"exec_time": $$TIME/' | diff output-stdout-success.json - + cat $(OUTPUT_FILE_DEFAULT) | sed 's/"exec_time": [0-9.]*/"exec_time": $/"IGNORED"/' | diff $(CANONIZED_FILE_DEFAULT) - + cat $(OUTPUT_FILE_STDOUT_SUCCESS) | sed 's/"exec_time": [0-9.]*/"exec_time": $/"IGNORED"/' | diff $(CANONIZED_FILE_STDOUT_SUCCESS) - diff --git a/src/test/run-make-fulldeps/libtest-json/canonicalize_path.py b/src/test/run-make-fulldeps/libtest-json/canonicalize_path.py new file mode 100644 index 0000000000000..afd53de54a8bf --- /dev/null +++ b/src/test/run-make-fulldeps/libtest-json/canonicalize_path.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python + +import sys +import json +import os.path + +for line in sys.stdin: + json_data = json.loads(line) + if "stdout" in json_data and "f.rs" in json_data["stdout"]: + normalized_path = os.path.join(os.getcwd(), "f.rs") + json_data["stdout"] = json_data["stdout"].replace("f.rs", normalized_path) + result = json.dumps(json_data).replace("{", "{ ") + result = result.replace("}", " }") + print(result) diff --git a/src/test/run-make-fulldeps/libtest-json/output-default.json b/src/test/run-make-fulldeps/libtest-json/output-default.json index 099b65a23cad6..ff32965a72462 100644 --- a/src/test/run-make-fulldeps/libtest-json/output-default.json +++ b/src/test/run-make-fulldeps/libtest-json/output-default.json @@ -7,4 +7,4 @@ { "type": "test", "name": "c", "event": "ok" } { "type": "test", "event": "started", "name": "d" } { "type": "test", "name": "d", "event": "ignored" } -{ "type": "suite", "event": "failed", "passed": 2, "failed": 1, "allowed_fail": 0, "ignored": 1, "measured": 0, "filtered_out": 0, "exec_time": $TIME } +{ "type": "suite", "event": "failed", "passed": 2, "failed": 1, "allowed_fail": 0, "ignored": 1, "measured": 0, "filtered_out": 0, "exec_time": "IGNORED" } diff --git a/src/test/run-make-fulldeps/libtest-json/output-stdout-success.json b/src/test/run-make-fulldeps/libtest-json/output-stdout-success.json index fd676799a7664..81643f9d4fa7b 100644 --- a/src/test/run-make-fulldeps/libtest-json/output-stdout-success.json +++ b/src/test/run-make-fulldeps/libtest-json/output-stdout-success.json @@ -7,4 +7,4 @@ { "type": "test", "name": "c", "event": "ok", "stdout": "thread 'main' panicked at 'assertion failed: false', f.rs:15:5\n" } { "type": "test", "event": "started", "name": "d" } { "type": "test", "name": "d", "event": "ignored" } -{ "type": "suite", "event": "failed", "passed": 2, "failed": 1, "allowed_fail": 0, "ignored": 1, "measured": 0, "filtered_out": 0, "exec_time": $TIME } +{ "type": "suite", "event": "failed", "passed": 2, "failed": 1, "allowed_fail": 0, "ignored": 1, "measured": 0, "filtered_out": 0, "exec_time": "IGNORED" }