mirror of
https://github.com/nushell/nushell.git
synced 2025-02-16 18:41:44 +01:00
# Description Improve error when `str replace <pattern>` detects a problem with <pattern>. # User-Facing Changes New "Incorrect value" error: ``` 〉 'C:\Users\kubouch' | str replace 'C:\Users' 'foo' Error: nu:🐚:incorrect_value (link) × Incorrect value. ╭─[entry #1:1:1] 1 │ 'C:\Users\kubouch' | str replace 'C:\Users' 'foo' · ─────┬──── · ╰── Regex error: Parsing error at position 4: Invalid hex escape ╰──── ``` We could fruitfully replace some of the current uses of `ShellError::UnsupportedInput` with this error. 'Incorrect value' is different from 'wrong type' # Tests + Formatting Don't forget to add tests that cover your changes. * none added / changed. Make sure you've run and fixed any issues with these commands: - [x] `cargo fmt --all -- --check` to check standard code formatting (`cargo fmt --all` applies these changes) - [x] `cargo clippy --workspace -- -D warnings -D clippy::unwrap_used -A clippy::needless_collect` to check that you're using the standard code style - [x] `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.
This commit is contained in:
parent
1096e653b0
commit
2894668b3e
@ -209,12 +209,7 @@ fn action(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(e) => Value::Error {
|
Err(e) => Value::Error {
|
||||||
error: ShellError::UnsupportedInput(
|
error: ShellError::IncorrectValue(format!("Regex error: {e}"), find.span),
|
||||||
format!("{e}"),
|
|
||||||
"value originates from here".into(),
|
|
||||||
head,
|
|
||||||
find.span,
|
|
||||||
),
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -199,6 +199,26 @@ fn find_and_replaces_without_passing_field() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn regex_error_in_pattern() {
|
||||||
|
Playground::setup("str_test_8", |dirs, _sandbox| {
|
||||||
|
let actual = nu!(
|
||||||
|
cwd: dirs.test(), pipeline(
|
||||||
|
r#"
|
||||||
|
'source string'
|
||||||
|
| str replace 'source \Ufoo' "destination"
|
||||||
|
"#
|
||||||
|
));
|
||||||
|
|
||||||
|
let err = actual.err;
|
||||||
|
let expecting_str = "Incorrect value";
|
||||||
|
assert!(
|
||||||
|
err.contains(expecting_str),
|
||||||
|
"Error should contain '{expecting_str}', but was: {err}"
|
||||||
|
);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn substrings_the_input() {
|
fn substrings_the_input() {
|
||||||
Playground::setup("str_test_8", |dirs, sandbox| {
|
Playground::setup("str_test_8", |dirs, sandbox| {
|
||||||
|
@ -91,6 +91,15 @@ pub enum ShellError {
|
|||||||
span: Span,
|
span: Span,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/// A command received an argument with correct type but incorrect value.
|
||||||
|
///
|
||||||
|
/// ## Resolution
|
||||||
|
///
|
||||||
|
/// Correct the argument value before passing it in or change the command.
|
||||||
|
#[error("Incorrect value.")]
|
||||||
|
#[diagnostic(code(nu::shell::incorrect_value), url(docsrs))]
|
||||||
|
IncorrectValue(String, #[label = "{0}"] Span),
|
||||||
|
|
||||||
/// This value cannot be used with this operator.
|
/// This value cannot be used with this operator.
|
||||||
///
|
///
|
||||||
/// ## Resolution
|
/// ## Resolution
|
||||||
|
Loading…
Reference in New Issue
Block a user