Files
nushell/crates/nu-command/tests/commands/debug/metadata_set.rs
Kumar Ujjawal 118857aedc fix(metadata set): return error when both --datasource-filepath and -datasource-ls are used (#16049)
# Description

This PR improves the `metadata set` command by returning a clear error
when both `--datasource-filepath` and `--datasource-ls` flags are used
together. These flags are meant to be mutually exclusive, and previously
this conflicting usage was silently ignored.

# User-Facing Changes

* Users will now see an error message if they use both
`--datasource-filepath` and `--datasource-ls` together in `metadata
set`.

# Tests + Formatting

* [x] Added test at
`crates/nu-command/tests/commands/debug/metadata_set.rs` to verify the
error behavior.
* [x] Ran `cargo fmt --all -- --check`
* [x] Ran `cargo clippy --workspace -- -D warnings -D
clippy::unwrap_used`
* [x] Ran `cargo test --workspace`


# After Submitting

N/A
2025-07-02 19:40:34 +02:00

44 lines
914 B
Rust

use nu_test_support::nu;
use nu_test_support::pipeline;
#[test]
fn errors_on_conflicting_metadata_flags() {
let actual = nu!(
cwd: ".", pipeline(
r#"
echo "foo" | metadata set --datasource-filepath foo.txt --datasource-ls
"#
));
assert!(actual.err.contains("cannot use `--datasource-filepath`"));
assert!(actual.err.contains("with `--datasource-ls`"));
}
#[test]
fn works_with_datasource_filepath() {
let actual = nu!(
cwd: ".", pipeline(
r#"
echo "foo"
| metadata set --datasource-filepath foo.txt
| metadata
"#
));
assert!(actual.out.contains("foo.txt"));
}
#[test]
fn works_with_datasource_ls() {
let actual = nu!(
cwd: ".", pipeline(
r#"
echo "foo"
| metadata set --datasource-ls
| metadata
"#
));
assert!(actual.out.contains("ls"));
}