summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Hofstetter <daniel.hofstetter@42dh.com>2024-04-29 10:42:15 +0200
committerGitHub <noreply@github.com>2024-04-29 10:42:15 +0200
commit5fbc588b85ba4645e9cbe5bece165ad5818358b2 (patch)
treed9f80dfab2f7c1543e76a8643a160f96c5ccc028
parent174c842337e617b1a9434504a6a609e742f5f1f7 (diff)
parent4f5a3b47161df72546c7cf8d5e0f5ef60bfdb294 (diff)
Merge pull request #6288 from BenWiederhake/dev-id-flag-repeat
id: Handle repeated flags, recognize conflict between pretty-print and passwd file-entry
-rw-r--r--src/uu/id/src/id.rs2
-rw-r--r--tests/by-util/test_id.rs18
2 files changed, 20 insertions, 0 deletions
diff --git a/src/uu/id/src/id.rs b/src/uu/id/src/id.rs
index b8fb51d79..e803708bd 100644
--- a/src/uu/id/src/id.rs
+++ b/src/uu/id/src/id.rs
@@ -324,6 +324,7 @@ pub fn uu_app() -> Command {
.about(ABOUT)
.override_usage(format_usage(USAGE))
.infer_long_args(true)
+ .args_override_self(true)
.arg(
Arg::new(options::OPT_AUDIT)
.short('A')
@@ -396,6 +397,7 @@ pub fn uu_app() -> Command {
Arg::new(options::OPT_PASSWORD)
.short('P')
.help("Display the id as a password file entry.")
+ .conflicts_with(options::OPT_HUMAN_READABLE)
.action(ArgAction::SetTrue),
)
.arg(
diff --git a/tests/by-util/test_id.rs b/tests/by-util/test_id.rs
index 5c2a67199..070ed011e 100644
--- a/tests/by-util/test_id.rs
+++ b/tests/by-util/test_id.rs
@@ -327,6 +327,11 @@ fn test_id_default_format() {
.args(&args)
.succeeds()
.stdout_only(unwrap_or_return!(expected_result(&ts, &args)).stdout_str());
+ let args = [opt2, opt2];
+ ts.ucmd()
+ .args(&args)
+ .succeeds()
+ .stdout_only(unwrap_or_return!(expected_result(&ts, &args)).stdout_str());
}
}
@@ -456,3 +461,16 @@ fn test_id_no_specified_user_posixly() {
}
}
}
+
+#[test]
+#[cfg(all(unix, not(target_os = "android")))]
+fn test_id_pretty_print_password_record() {
+ // `-p` is BSD only and not supported on GNU's `id`.
+ // `-P` is our own extension, and not supported by either GNU nor BSD.
+ // These must conflict, because they both set the output format.
+ new_ucmd!()
+ .arg("-p")
+ .arg("-P")
+ .fails()
+ .stderr_contains("the argument '-p' cannot be used with '-P'");
+}