diff --git a/src/uu/ls/locales/en-US.ftl b/src/uu/ls/locales/en-US.ftl index 7de4a17ce2e..0aae2862567 100644 --- a/src/uu/ls/locales/en-US.ftl +++ b/src/uu/ls/locales/en-US.ftl @@ -23,6 +23,7 @@ ls-error-unknown-io-error = unknown io error: {$path}, '{$error}' ls-error-invalid-block-size = invalid --block-size argument {$size} ls-error-dired-and-zero-incompatible = --dired and --zero are incompatible ls-error-not-listing-already-listed = {$path}: not listing already-listed directory +ls-error-not-directory = {$path}: A path component was not a directory ls-error-invalid-time-style = invalid --time-style argument {$style} Possible values are: - [posix-]full-iso diff --git a/src/uu/ls/src/ls.rs b/src/uu/ls/src/ls.rs index 6ce28cd7cea..ba5f777a249 100644 --- a/src/uu/ls/src/ls.rs +++ b/src/uu/ls/src/ls.rs @@ -186,6 +186,7 @@ enum LsError { #[error("{}", match .1.kind() { ErrorKind::NotFound => translate!("ls-error-cannot-access-no-such-file", "path" => .0.quote()), + ErrorKind::NotADirectory => translate!("ls-error-not-directory", "path" => .0.quote()), ErrorKind::PermissionDenied => match .1.raw_os_error().unwrap_or(1) { 1 => translate!("ls-error-cannot-access-operation-not-permitted", "path" => .0.quote()), _ => if .0.is_dir() { diff --git a/tests/by-util/test_ls.rs b/tests/by-util/test_ls.rs index 11365392ae1..9bed74d6f4d 100644 --- a/tests/by-util/test_ls.rs +++ b/tests/by-util/test_ls.rs @@ -2548,6 +2548,18 @@ fn test_ls_non_existing() { new_ucmd!().arg("doesntexist").fails(); } +#[test] +#[cfg(unix)] +fn test_ls_not_a_directory_errors() { + let scene = TestScenario::new(util_name!()); + scene + .ucmd() + .arg("/etc/hosts/test") + .fails() + .code_is(2) + .stderr_contains("not a directory"); +} + #[test] fn test_ls_files_dirs() { let scene = TestScenario::new(util_name!());