1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-27 19:17:43 +00:00

Merge pull request #7836 from cakebaker/id_fix_7835

id: adapt error message to match the one from GNU `id`
This commit is contained in:
Sylvestre Ledru 2025-04-24 21:50:02 +02:00 committed by GitHub
commit c8505d41dc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 36 additions and 31 deletions

View file

@ -157,7 +157,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
if (state.nflag || state.rflag) && default_format && !state.cflag {
return Err(USimpleError::new(
1,
"cannot print only names or real IDs in default format",
"printing only names or real IDs requires -u, -g, or -G",
));
}
if state.zflag && default_format && !state.cflag {

View file

@ -18,7 +18,6 @@ fn test_invalid_arg() {
}
#[test]
#[cfg(unix)]
#[allow(unused_mut)]
fn test_id_no_specified_user() {
let ts = TestScenario::new(util_name!());
@ -44,7 +43,6 @@ fn test_id_no_specified_user() {
}
#[test]
#[cfg(unix)]
fn test_id_single_user() {
let test_users = [&whoami()[..]];
@ -96,7 +94,6 @@ fn test_id_single_user() {
}
#[test]
#[cfg(unix)]
fn test_id_single_user_non_existing() {
let args = &["hopefully_non_existing_username"];
let ts = TestScenario::new(util_name!());
@ -114,7 +111,6 @@ fn test_id_single_user_non_existing() {
}
#[test]
#[cfg(unix)]
fn test_id_name() {
let ts = TestScenario::new(util_name!());
for opt in ["--user", "--group", "--groups"] {
@ -133,7 +129,6 @@ fn test_id_name() {
}
#[test]
#[cfg(unix)]
fn test_id_real() {
let ts = TestScenario::new(util_name!());
for opt in ["--user", "--group", "--groups"] {
@ -148,7 +143,7 @@ fn test_id_real() {
}
#[test]
#[cfg(all(unix, not(any(target_os = "linux", target_os = "android"))))]
#[cfg(not(any(target_os = "linux", target_os = "android")))]
fn test_id_pretty_print() {
// `-p` is BSD only and not supported on GNU's `id`
let username = whoami();
@ -157,7 +152,7 @@ fn test_id_pretty_print() {
}
#[test]
#[cfg(all(unix, not(any(target_os = "linux", target_os = "android"))))]
#[cfg(not(any(target_os = "linux", target_os = "android")))]
fn test_id_password_style() {
// `-P` is BSD only and not supported on GNU's `id`
let username = whoami();
@ -166,7 +161,6 @@ fn test_id_password_style() {
}
#[test]
#[cfg(unix)]
fn test_id_multiple_users() {
unwrap_or_return!(check_coreutil_version(
util_name!(),
@ -224,7 +218,6 @@ fn test_id_multiple_users() {
}
#[test]
#[cfg(unix)]
fn test_id_multiple_users_non_existing() {
unwrap_or_return!(check_coreutil_version(
util_name!(),
@ -292,16 +285,19 @@ fn test_id_multiple_users_non_existing() {
}
#[test]
#[cfg(unix)]
fn test_id_name_or_real_with_default_format() {
for flag in ["-n", "--name", "-r", "--real"] {
new_ucmd!()
.arg(flag)
.fails()
.stderr_only("id: printing only names or real IDs requires -u, -g, or -G\n");
}
}
#[test]
fn test_id_default_format() {
let ts = TestScenario::new(util_name!());
for opt1 in ["--name", "--real"] {
// id: cannot print only names or real IDs in default format
let args = [opt1];
ts.ucmd()
.args(&args)
.fails()
.stderr_only(unwrap_or_return!(expected_result(&ts, &args)).stderr_str());
for opt2 in ["--user", "--group", "--groups"] {
// u/g/G n/r
let args = [opt2, opt1];
@ -329,22 +325,32 @@ fn test_id_default_format() {
}
#[test]
#[cfg(unix)]
fn test_id_zero_with_default_format() {
for z_flag in ["-z", "--zero"] {
new_ucmd!()
.arg(z_flag)
.fails()
.stderr_only("id: option --zero not permitted in default format\n");
}
}
#[test]
fn test_id_zero_with_name_or_real() {
for z_flag in ["-z", "--zero"] {
for flag in ["-n", "--name", "-r", "--real"] {
new_ucmd!()
.args(&[z_flag, flag])
.fails()
.stderr_only("id: printing only names or real IDs requires -u, -g, or -G\n");
}
}
}
#[test]
fn test_id_zero() {
let ts = TestScenario::new(util_name!());
for z_flag in ["-z", "--zero"] {
// id: option --zero not permitted in default format
ts.ucmd()
.args(&[z_flag])
.fails()
.stderr_only(unwrap_or_return!(expected_result(&ts, &[z_flag])).stderr_str());
for opt1 in ["--name", "--real"] {
// id: cannot print only names or real IDs in default format
let args = [opt1, z_flag];
ts.ucmd()
.args(&args)
.fails()
.stderr_only(unwrap_or_return!(expected_result(&ts, &args)).stderr_str());
for opt2 in ["--user", "--group", "--groups"] {
// u/g/G n/r z
let args = [opt2, z_flag, opt1];
@ -429,7 +435,6 @@ fn test_id_context() {
}
#[test]
#[cfg(unix)]
fn test_id_no_specified_user_posixly() {
// gnu/tests/id/no-context.sh
@ -456,7 +461,7 @@ fn test_id_no_specified_user_posixly() {
}
#[test]
#[cfg(all(unix, not(target_os = "android")))]
#[cfg(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.