From 83c42fbde51ca63113a8fcc6c64bdfcd7dabf464 Mon Sep 17 00:00:00 2001 From: Devel Date: Sun, 9 Aug 2026 19:34:01 +0300 Subject: [PATCH 1/4] mkdir: return a proper error mesage when dir is inexistent --- src/uu/mkdir/src/mkdir.rs | 9 ++++++++- tests/by-util/test_mkdir.rs | 8 ++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/uu/mkdir/src/mkdir.rs b/src/uu/mkdir/src/mkdir.rs index f8d62ad1e85..a2866ce2870 100644 --- a/src/uu/mkdir/src/mkdir.rs +++ b/src/uu/mkdir/src/mkdir.rs @@ -372,6 +372,13 @@ fn create_single_dir(path: &Path, is_parent: bool, config: &Config) -> UResult<( } Ok(()) } - Err(e) => Err(e.into()), + Err(e) => Err(USimpleError::new( + 1, + format!( + "cannot create directory '{}': {}", + path.display(), + uucore::error::strip_errno(&e) + ), + )), } } diff --git a/tests/by-util/test_mkdir.rs b/tests/by-util/test_mkdir.rs index e62c70d6ebb..4d3ca4655b0 100644 --- a/tests/by-util/test_mkdir.rs +++ b/tests/by-util/test_mkdir.rs @@ -1082,6 +1082,14 @@ fn test_mkdir_concurrent_creation() { } } +#[test] +fn test_mkdir_inside_inexistent_dir() { + new_ucmd!() + .arg("a/b") + .fails_with_code(1) + .stderr_is("mkdir: cannot create directory 'a/b': No such file or directory\n"); +} + // The mode is only parsed where a mode means something. #[cfg(unix)] mod diagnostics { From 86bb306aaa901cd32ca6a1f9c7607df6cdfd8515 Mon Sep 17 00:00:00 2001 From: Devel Date: Sun, 9 Aug 2026 19:48:32 +0300 Subject: [PATCH 2/4] mkdir: run test only on unix --- tests/by-util/test_mkdir.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/by-util/test_mkdir.rs b/tests/by-util/test_mkdir.rs index 4d3ca4655b0..fbbfabf706c 100644 --- a/tests/by-util/test_mkdir.rs +++ b/tests/by-util/test_mkdir.rs @@ -1082,6 +1082,7 @@ fn test_mkdir_concurrent_creation() { } } +#[cfg(unix)] #[test] fn test_mkdir_inside_inexistent_dir() { new_ucmd!() From 2816dba0c18f4951449f881f2166be0942ee3176 Mon Sep 17 00:00:00 2001 From: Devel Date: Sun, 9 Aug 2026 20:06:53 +0300 Subject: [PATCH 3/4] add french and english localization --- src/uu/mkdir/locales/en-US.ftl | 1 + src/uu/mkdir/locales/fr-FR.ftl | 1 + src/uu/mkdir/src/mkdir.rs | 6 +----- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/uu/mkdir/locales/en-US.ftl b/src/uu/mkdir/locales/en-US.ftl index 44fd5f5adf3..9e20145c668 100644 --- a/src/uu/mkdir/locales/en-US.ftl +++ b/src/uu/mkdir/locales/en-US.ftl @@ -14,6 +14,7 @@ mkdir-error-empty-directory-name = cannot create directory '': No such file or d mkdir-error-file-exists = { $path }: File exists mkdir-error-failed-to-create-tree = failed to create whole tree mkdir-error-cannot-set-permissions = cannot set permissions { $path } +mkdir-error-cannot-create-directory = cannot create directory '{ $path }': { $errormsg } # Verbose output mkdir-verbose-created-directory = { $util_name }: created directory { $path } diff --git a/src/uu/mkdir/locales/fr-FR.ftl b/src/uu/mkdir/locales/fr-FR.ftl index d92bed96520..8cc4f94abbd 100644 --- a/src/uu/mkdir/locales/fr-FR.ftl +++ b/src/uu/mkdir/locales/fr-FR.ftl @@ -14,6 +14,7 @@ mkdir-error-empty-directory-name = impossible de créer le répertoire '' : Aucu mkdir-error-file-exists = { $path } : Le fichier existe mkdir-error-failed-to-create-tree = échec de la création de l'arborescence complète mkdir-error-cannot-set-permissions = impossible de définir les permissions { $path } +mkdir-error-cannot-create-directory = impossible de créer le répertoire '{ $path }': { $errormsg } # Sortie détaillée mkdir-verbose-created-directory = { $util_name } : répertoire créé { $path } diff --git a/src/uu/mkdir/src/mkdir.rs b/src/uu/mkdir/src/mkdir.rs index a2866ce2870..ed8236bf290 100644 --- a/src/uu/mkdir/src/mkdir.rs +++ b/src/uu/mkdir/src/mkdir.rs @@ -374,11 +374,7 @@ fn create_single_dir(path: &Path, is_parent: bool, config: &Config) -> UResult<( } Err(e) => Err(USimpleError::new( 1, - format!( - "cannot create directory '{}': {}", - path.display(), - uucore::error::strip_errno(&e) - ), + translate!("mkdir-error-cannot-create-directory", "path" => path.display(), "errormsg" => uucore::error::strip_errno(&e)), )), } } From 243d86912e281114c9f9a5e2bf7613a9b89926e1 Mon Sep 17 00:00:00 2001 From: Devel Date: Sun, 9 Aug 2026 20:11:32 +0300 Subject: [PATCH 4/4] error instead of errormsg in locales --- src/uu/mkdir/locales/en-US.ftl | 2 +- src/uu/mkdir/locales/fr-FR.ftl | 2 +- src/uu/mkdir/src/mkdir.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/uu/mkdir/locales/en-US.ftl b/src/uu/mkdir/locales/en-US.ftl index 9e20145c668..fa2ef528d45 100644 --- a/src/uu/mkdir/locales/en-US.ftl +++ b/src/uu/mkdir/locales/en-US.ftl @@ -14,7 +14,7 @@ mkdir-error-empty-directory-name = cannot create directory '': No such file or d mkdir-error-file-exists = { $path }: File exists mkdir-error-failed-to-create-tree = failed to create whole tree mkdir-error-cannot-set-permissions = cannot set permissions { $path } -mkdir-error-cannot-create-directory = cannot create directory '{ $path }': { $errormsg } +mkdir-error-cannot-create-directory = cannot create directory '{ $path }': { $error } # Verbose output mkdir-verbose-created-directory = { $util_name }: created directory { $path } diff --git a/src/uu/mkdir/locales/fr-FR.ftl b/src/uu/mkdir/locales/fr-FR.ftl index 8cc4f94abbd..988f7c21f44 100644 --- a/src/uu/mkdir/locales/fr-FR.ftl +++ b/src/uu/mkdir/locales/fr-FR.ftl @@ -14,7 +14,7 @@ mkdir-error-empty-directory-name = impossible de créer le répertoire '' : Aucu mkdir-error-file-exists = { $path } : Le fichier existe mkdir-error-failed-to-create-tree = échec de la création de l'arborescence complète mkdir-error-cannot-set-permissions = impossible de définir les permissions { $path } -mkdir-error-cannot-create-directory = impossible de créer le répertoire '{ $path }': { $errormsg } +mkdir-error-cannot-create-directory = impossible de créer le répertoire '{ $path }': { $error } # Sortie détaillée mkdir-verbose-created-directory = { $util_name } : répertoire créé { $path } diff --git a/src/uu/mkdir/src/mkdir.rs b/src/uu/mkdir/src/mkdir.rs index ed8236bf290..7d009f4f32d 100644 --- a/src/uu/mkdir/src/mkdir.rs +++ b/src/uu/mkdir/src/mkdir.rs @@ -374,7 +374,7 @@ fn create_single_dir(path: &Path, is_parent: bool, config: &Config) -> UResult<( } Err(e) => Err(USimpleError::new( 1, - translate!("mkdir-error-cannot-create-directory", "path" => path.display(), "errormsg" => uucore::error::strip_errno(&e)), + translate!("mkdir-error-cannot-create-directory", "path" => path.display(), "error" => uucore::error::strip_errno(&e)), )), } }