From 6ca62ef13190a0cbf1bb375bfa5089ce7933701e Mon Sep 17 00:00:00 2001 From: Darren Schroeder <343840+fdncred@users.noreply.github.com> Date: Mon, 20 Feb 2023 12:50:31 -0600 Subject: [PATCH] show more informaiton when there are toml errors (#8140) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Description While debugging #8139 I noticed that there was some error information coming from the toml crate that we were not displaying. This would've helped me to understand what was going on. So, this PR shows more verbose errors when toml fails to parse. ### Before ``` cargo llvm-cov show-env | from toml Error: nu::shell::cant_convert (link) × Can't convert to structured toml data. ╭─[entry #1:1:1] 1 │ cargo llvm-cov show-env | from toml · ──┬── · ╰── can't convert string to structured toml data ╰──── ``` ### After ``` cargo llvm-cov show-env | from toml Error: nu::shell::cant_convert (link) × Can't convert to structured toml data. ╭─[entry #1:1:1] 1 │ cargo llvm-cov show-env | from toml · ──┬── · ╰── can't convert string to structured toml data ╰──── help: TOML parse error at line 2, column 24 | 2 | LLVM_PROFILE_FILE="C:\CarTar\nushell-%p-%m.profraw" | ^ invalid escape sequence expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"` ``` # User-Facing Changes _(List of all changes that impact the user experience here. This helps us keep track of breaking changes.)_ # Tests + Formatting Don't forget to add tests that cover your changes. Make sure you've run and fixed any issues with these commands: - `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect` to check that you're using the standard code style - `cargo test --workspace` to check that all tests pass # After Submitting If your PR had any user-facing changes, update [the documentation](https://github.com/nushell/nushell.github.io) after the PR is merged, if necessary. This will help us keep the docs up to date. --- crates/nu-command/src/formats/from/toml.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/crates/nu-command/src/formats/from/toml.rs b/crates/nu-command/src/formats/from/toml.rs index 4115be2d2..5395fa5d7 100644 --- a/crates/nu-command/src/formats/from/toml.rs +++ b/crates/nu-command/src/formats/from/toml.rs @@ -106,11 +106,11 @@ pub fn convert_string_to_value(string_input: String, span: Span) -> Result Ok(convert_toml_to_value(&value, span)), - Err(_x) => Err(ShellError::CantConvert( + Err(err) => Err(ShellError::CantConvert( "structured toml data".into(), "string".into(), span, - None, + Some(err.to_string()), )), } } @@ -131,7 +131,7 @@ mod tests { let input_string = String::from( r#" command.build = "go build" - + [command.deploy] script = "./deploy.sh" "#, @@ -148,8 +148,8 @@ mod tests { fn string_to_toml_value_fails() { let input_string = String::from( r#" - command.build = - + command.build = + [command.deploy] script = "./deploy.sh" "#,