From 1a8b816ecb0256c8e47eefb89475f40399103d1c Mon Sep 17 00:00:00 2001 From: Jim Blandy Date: Tue, 21 Nov 2023 11:21:37 -0800 Subject: [PATCH] [naga]: Make snapshot tests include paths in errors. Following Rust convention, let `naga::front::wgsl::ParseError`'s methods `emit_to_stderr_with_path` and `emit_to_string_with_path` accept any `AsRef` argument as the path. Pass input paths in snapshot tests, so that failures processing shaders name the input file being processed. --- naga-cli/src/bin/naga.rs | 3 +-- naga/src/front/wgsl/error.rs | 12 ++++++++++-- naga/tests/snapshots.rs | 10 ++++++++-- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/naga-cli/src/bin/naga.rs b/naga-cli/src/bin/naga.rs index 3b0873a376..7543e02539 100644 --- a/naga-cli/src/bin/naga.rs +++ b/naga-cli/src/bin/naga.rs @@ -316,8 +316,7 @@ fn run() -> Result<(), Box> { match result { Ok(v) => (v, Some(input)), Err(ref e) => { - let path = input_path.to_string_lossy(); - e.emit_to_stderr_with_path(&input, &path); + e.emit_to_stderr_with_path(&input, input_path); return Err(CliError("Could not parse WGSL").into()); } } diff --git a/naga/src/front/wgsl/error.rs b/naga/src/front/wgsl/error.rs index e4d3e6d325..f5acbe2d65 100644 --- a/naga/src/front/wgsl/error.rs +++ b/naga/src/front/wgsl/error.rs @@ -55,7 +55,11 @@ impl ParseError { } /// Emits a summary of the error to standard error stream. - pub fn emit_to_stderr_with_path(&self, source: &str, path: &str) { + pub fn emit_to_stderr_with_path

(&self, source: &str, path: P) + where + P: AsRef, + { + let path = path.as_ref().display().to_string(); let files = SimpleFile::new(path, source); let config = codespan_reporting::term::Config::default(); let writer = StandardStream::stderr(ColorChoice::Auto); @@ -69,7 +73,11 @@ impl ParseError { } /// Emits a summary of the error to a string. - pub fn emit_to_string_with_path(&self, source: &str, path: &str) -> String { + pub fn emit_to_string_with_path

(&self, source: &str, path: P) -> String + where + P: AsRef, + { + let path = path.as_ref().display().to_string(); let files = SimpleFile::new(path, source); let config = codespan_reporting::term::Config::default(); let mut writer = NoColor::new(Vec::new()); diff --git a/naga/tests/snapshots.rs b/naga/tests/snapshots.rs index f50ba99e3c..925ddd7dfe 100644 --- a/naga/tests/snapshots.rs +++ b/naga/tests/snapshots.rs @@ -783,7 +783,10 @@ fn convert_wgsl() { let source = input.read_source(); match naga::front::wgsl::parse_str(&source) { Ok(mut module) => check_targets(&input, &mut module, targets, None), - Err(e) => panic!("{}", e.emit_to_string(&source)), + Err(e) => panic!( + "{}", + e.emit_to_string_with_path(&source, input.input_path()) + ), } } @@ -798,7 +801,10 @@ fn convert_wgsl() { let source = input.read_source(); match naga::front::wgsl::parse_str(&source) { Ok(mut module) => check_targets(&input, &mut module, targets, Some(&source)), - Err(e) => panic!("{}", e.emit_to_string(&source)), + Err(e) => panic!( + "{}", + e.emit_to_string_with_path(&source, input.input_path()) + ), } } }