diff options
author | Ellie Huxtable <ellie@elliehuxtable.com> | 2024-02-06 17:47:00 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-06 17:47:00 +0000 |
commit | 199365310248eecedf8fbad579fc0cdc2e47bbe7 (patch) | |
tree | 0380b351a55291df39dcb8c7af324e4bc5786365 | |
parent | 318bdd895590c97dd53f8d3661d76fa1c0cd67a0 (diff) |
fix(tests): add Settings::utc() for utc settings (#1677)
Means we don't try and load timezones in tests, as this fails due to
multiple threads.
Also allow specifying '0' or 'utc' as a timezone
-rw-r--r-- | atuin-client/src/history.rs | 4 | ||||
-rw-r--r-- | atuin-client/src/settings.rs | 16 | ||||
-rw-r--r-- | atuin/src/command/client/stats.rs | 8 |
3 files changed, 22 insertions, 6 deletions
diff --git a/atuin-client/src/history.rs b/atuin-client/src/history.rs index 0147e25b..3dfa5c52 100644 --- a/atuin-client/src/history.rs +++ b/atuin-client/src/history.rs @@ -362,7 +362,7 @@ mod tests { let settings = Settings { cwd_filter: RegexSet::new(["^/supasecret"]).unwrap(), history_filter: RegexSet::new(["^psql"]).unwrap(), - ..Settings::default() + ..Settings::utc() }; let normal_command: History = History::capture() @@ -411,7 +411,7 @@ mod tests { fn disable_secrets() { let settings = Settings { secrets_filter: false, - ..Settings::default() + ..Settings::utc() }; let stripe_key: History = History::capture() diff --git a/atuin-client/src/settings.rs b/atuin-client/src/settings.rs index 7abacd0d..f4c47c64 100644 --- a/atuin-client/src/settings.rs +++ b/atuin-client/src/settings.rs @@ -155,6 +155,11 @@ impl FromStr for Timezone { return Ok(Self(offset)); } + if matches!(s.to_lowercase().as_str(), "0" | "utc") { + let offset = UtcOffset::UTC; + return Ok(Self(offset)); + } + // offset from UTC if let Ok(offset) = UtcOffset::parse(s, OFFSET_FMT) { return Ok(Self(offset)); @@ -355,6 +360,17 @@ pub struct Settings { } impl Settings { + pub fn utc() -> Self { + Self::builder() + .expect("Could not build default") + .set_override("timezone", "0") + .expect("failed to override timezone with UTC") + .build() + .expect("Could not build config") + .try_deserialize() + .expect("Could not deserialize config") + } + fn save_to_data_dir(filename: &str, value: &str) -> Result<()> { let data_dir = atuin_common::utils::data_dir(); let data_dir = data_dir.as_path(); diff --git a/atuin/src/command/client/stats.rs b/atuin/src/command/client/stats.rs index 359f0d46..f73b8bbb 100644 --- a/atuin/src/command/client/stats.rs +++ b/atuin/src/command/client/stats.rs @@ -182,7 +182,7 @@ mod tests { #[test] fn interesting_commands() { - let settings = Settings::default(); + let settings = Settings::utc(); assert_eq!(interesting_command(&settings, "cargo"), "cargo"); assert_eq!( @@ -199,7 +199,7 @@ mod tests { // Test with spaces in the common_prefix #[test] fn interesting_commands_spaces() { - let mut settings = Settings::default(); + let mut settings = Settings::utc(); settings.stats.common_prefix.push("sudo test".to_string()); assert_eq!(interesting_command(&settings, "sudo test"), "sudo test"); @@ -224,7 +224,7 @@ mod tests { // Test with spaces in the common_subcommand #[test] fn interesting_commands_spaces_subcommand() { - let mut settings = Settings::default(); + let mut settings = Settings::utc(); settings .stats .common_subcommands @@ -254,7 +254,7 @@ mod tests { // Test with spaces in the common_prefix and common_subcommand #[test] fn interesting_commands_spaces_both() { - let mut settings = Settings::default(); + let mut settings = Settings::utc(); settings.stats.common_prefix.push("sudo test".to_string()); settings .stats |