From 35b5fd6a40db2037a9bf36de848ccc2dd05b6cdf Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Fri, 5 May 2023 13:44:50 +0200 Subject: [PATCH 1/2] mktemp -t foo.XXXX should create in TMPDIR --- src/uu/mktemp/src/mktemp.rs | 7 ++++++- tests/by-util/test_mktemp.rs | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/uu/mktemp/src/mktemp.rs b/src/uu/mktemp/src/mktemp.rs index 6a3f6f21b11..997c11dce30 100644 --- a/src/uu/mktemp/src/mktemp.rs +++ b/src/uu/mktemp/src/mktemp.rs @@ -191,7 +191,12 @@ impl Options { (tmpdir, template.to_string()) } Some(template) => { - let tmpdir = matches.get_one::(OPT_TMPDIR).map(String::from); + let tmpdir = if matches.get_flag(OPT_T) { + // mktemp -t foo.xxx should export in TMPDIR + Some(env::temp_dir().display().to_string()) + } else { + matches.get_one::(OPT_TMPDIR).map(String::from) + }; (tmpdir, template.to_string()) } } diff --git a/tests/by-util/test_mktemp.rs b/tests/by-util/test_mktemp.rs index 907f8cf1dea..fecbe98ceed 100644 --- a/tests/by-util/test_mktemp.rs +++ b/tests/by-util/test_mktemp.rs @@ -857,3 +857,18 @@ fn test_default_missing_value() { let scene = TestScenario::new(util_name!()); scene.ucmd().arg("-d").arg("--tmpdir").succeeds(); } + +#[test] +fn test_default_issue_4821_t_tmpdir() { + let scene = TestScenario::new(util_name!()); + let pathname = scene.fixtures.as_string(); + let result = scene + .ucmd() + .env(TMPDIR, &pathname) + .arg("-t") + .arg("foo.XXXX") + .succeeds(); + let stdout = result.stdout_str(); + println!("stdout = {stdout}"); + assert!(stdout.contains(&pathname)); +} From cd189b239189e155f8ee84fc2b51cab6ba2e7224 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 15 May 2023 21:32:35 +0200 Subject: [PATCH 2/2] Fix mktemp -t -p ~/projects/playground foo.XXXX --- src/uu/mktemp/src/mktemp.rs | 4 +++- tests/by-util/test_mktemp.rs | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/uu/mktemp/src/mktemp.rs b/src/uu/mktemp/src/mktemp.rs index 997c11dce30..20498337ae6 100644 --- a/src/uu/mktemp/src/mktemp.rs +++ b/src/uu/mktemp/src/mktemp.rs @@ -191,7 +191,9 @@ impl Options { (tmpdir, template.to_string()) } Some(template) => { - let tmpdir = if matches.get_flag(OPT_T) { + let tmpdir = if matches.contains_id(OPT_TMPDIR) { + matches.get_one::(OPT_TMPDIR).map(String::from) + } else if matches.get_flag(OPT_T) { // mktemp -t foo.xxx should export in TMPDIR Some(env::temp_dir().display().to_string()) } else { diff --git a/tests/by-util/test_mktemp.rs b/tests/by-util/test_mktemp.rs index fecbe98ceed..788f1f14a12 100644 --- a/tests/by-util/test_mktemp.rs +++ b/tests/by-util/test_mktemp.rs @@ -872,3 +872,19 @@ fn test_default_issue_4821_t_tmpdir() { println!("stdout = {stdout}"); assert!(stdout.contains(&pathname)); } + +#[test] +fn test_default_issue_4821_t_tmpdir_p() { + let scene = TestScenario::new(util_name!()); + let pathname = scene.fixtures.as_string(); + let result = scene + .ucmd() + .arg("-t") + .arg("-p") + .arg(&pathname) + .arg("foo.XXXX") + .succeeds(); + let stdout = result.stdout_str(); + println!("stdout = {stdout}"); + assert!(stdout.contains(&pathname)); +}