From 6bedec53add8571f7757f89195004abe46dd14ab Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Thu, 16 Jan 2025 09:05:27 +0100 Subject: [PATCH 1/3] Bump chrono-tz from 0.8.6 to 0.10.0 --- Cargo.lock | 9 ++++----- Cargo.toml | 4 ++-- fuzz/Cargo.lock | 9 ++++----- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7a17afd7c..ed2da1859 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -304,9 +304,9 @@ dependencies = [ [[package]] name = "chrono-tz" -version = "0.8.6" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59ae0466b83e838b81a54256c39d5d7c20b9d7daa10510a242d9b75abd5936e" +checksum = "cd6dd8046d00723a59a2f8c5f295c515b9bb9a331ee4f8f3d4dd49e428acd3b6" dependencies = [ "chrono", "chrono-tz-build", @@ -315,12 +315,11 @@ dependencies = [ [[package]] name = "chrono-tz-build" -version = "0.2.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433e39f13c9a060046954e0592a8d0a4bcb1040125cbf91cb8ee58964cfb350f" +checksum = "e94fea34d77a245229e7746bd2beb786cd2a896f306ff491fb8cecb3074b10a7" dependencies = [ "parse-zoneinfo", - "phf", "phf_codegen", ] diff --git a/Cargo.toml b/Cargo.toml index 2fb991d57..ea87ccea7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -278,10 +278,9 @@ chrono = { version = "0.4.38", default-features = false, features = [ "alloc", "clock", ] } +chrono-tz = "0.10.0" clap = { version = "4.5", features = ["wrap_help", "cargo"] } clap_complete = "4.4" -chrono-tz = "0.8.3" -iana-time-zone = "0.1.57" clap_mangen = "0.2" compare = "0.1.0" coz = { version = "0.1.3" } @@ -299,6 +298,7 @@ gcd = "2.3" glob = "0.3.1" half = "2.4.1" hostname = "0.4" +iana-time-zone = "0.1.57" indicatif = "0.17.8" itertools = "0.14.0" libc = "0.2.153" diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index 128738512..db31d3884 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -232,9 +232,9 @@ dependencies = [ [[package]] name = "chrono-tz" -version = "0.8.6" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59ae0466b83e838b81a54256c39d5d7c20b9d7daa10510a242d9b75abd5936e" +checksum = "cd6dd8046d00723a59a2f8c5f295c515b9bb9a331ee4f8f3d4dd49e428acd3b6" dependencies = [ "chrono", "chrono-tz-build", @@ -243,12 +243,11 @@ dependencies = [ [[package]] name = "chrono-tz-build" -version = "0.2.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433e39f13c9a060046954e0592a8d0a4bcb1040125cbf91cb8ee58964cfb350f" +checksum = "e94fea34d77a245229e7746bd2beb786cd2a896f306ff491fb8cecb3074b10a7" dependencies = [ "parse-zoneinfo", - "phf", "phf_codegen", ] From ada18863a7fcaf2534f23499615b03b7dee1fe07 Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Thu, 16 Jan 2025 09:37:51 +0100 Subject: [PATCH 2/3] date: adapt to API change in chrono-tz --- src/uu/date/src/date.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/uu/date/src/date.rs b/src/uu/date/src/date.rs index d91f8f82c..24aaf6967 100644 --- a/src/uu/date/src/date.rs +++ b/src/uu/date/src/date.rs @@ -288,7 +288,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { // GNU `date` uses `%N` for nano seconds, however crate::chrono uses `%f` let format_string = &format_string .replace("%N", "%f") - .replace("%Z", tz_abbreviation); + .replace("%Z", tz_abbreviation.unwrap_or("UTC")); // Refuse to pass this string to chrono as it is crashing in this crate if format_string.contains("%#z") { return Err(USimpleError::new( From 7edd045206b89f0a22b88ed0ae9336e361947eb0 Mon Sep 17 00:00:00 2001 From: Daniel Hofstetter Date: Thu, 16 Jan 2025 09:41:04 +0100 Subject: [PATCH 3/3] date: use UTC if TZ is empty --- src/uu/date/src/date.rs | 2 +- tests/by-util/test_date.rs | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/uu/date/src/date.rs b/src/uu/date/src/date.rs index 24aaf6967..f4d420c3f 100644 --- a/src/uu/date/src/date.rs +++ b/src/uu/date/src/date.rs @@ -277,7 +277,7 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> { // TODO - Revisit when chrono 0.5 is released. https://github.com/chronotope/chrono/issues/970 let tz = match std::env::var("TZ") { // TODO Support other time zones... - Ok(s) if s == "UTC0" => Tz::Etc__UTC, + Ok(s) if s == "UTC0" || s.is_empty() => Tz::Etc__UTC, _ => match get_timezone() { Ok(tz_str) => tz_str.parse().unwrap(), Err(_) => Tz::Etc__UTC, diff --git a/tests/by-util/test_date.rs b/tests/by-util/test_date.rs index d0a9c09a2..ac16fe831 100644 --- a/tests/by-util/test_date.rs +++ b/tests/by-util/test_date.rs @@ -482,3 +482,12 @@ fn test_date_from_stdin() { Sat Apr 15 18:30:00 UTC 2023\n", ); } + +#[test] +fn test_date_empty_tz() { + new_ucmd!() + .env("TZ", "") + .arg("+%Z") + .succeeds() + .stdout_only("UTC\n"); +}