dmesg: set to fixed timezone in test.
This commit is contained in:
src/uu/dmesg/src
@ -108,25 +108,11 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
|||||||
}
|
}
|
||||||
if let Some(since) = matches.get_one::<String>(options::SINCE) {
|
if let Some(since) = matches.get_one::<String>(options::SINCE) {
|
||||||
let since = remove_enclosing_quotes(since);
|
let since = remove_enclosing_quotes(since);
|
||||||
if let Ok(since) = parse_datetime::parse_datetime(since) {
|
dmesg.since_filter = Some(time_formatter::parse_datetime(since)?);
|
||||||
dmesg.since_filter = Some(since);
|
|
||||||
} else {
|
|
||||||
return Err(USimpleError::new(
|
|
||||||
1,
|
|
||||||
format!("invalid time value \"{since}\""),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if let Some(until) = matches.get_one::<String>(options::UNTIL) {
|
if let Some(until) = matches.get_one::<String>(options::UNTIL) {
|
||||||
let until = remove_enclosing_quotes(until);
|
let until = remove_enclosing_quotes(until);
|
||||||
if let Ok(until) = parse_datetime::parse_datetime(until) {
|
dmesg.until_filter = Some(time_formatter::parse_datetime(until)?);
|
||||||
dmesg.until_filter = Some(until);
|
|
||||||
} else {
|
|
||||||
return Err(USimpleError::new(
|
|
||||||
1,
|
|
||||||
format!("invalid time value \"{until}\""),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
dmesg.print()?;
|
dmesg.print()?;
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -7,6 +7,7 @@ use chrono::{DateTime, FixedOffset, TimeDelta};
|
|||||||
#[cfg(feature = "fixed-boot-time")]
|
#[cfg(feature = "fixed-boot-time")]
|
||||||
use chrono::{NaiveDate, NaiveTime};
|
use chrono::{NaiveDate, NaiveTime};
|
||||||
use std::sync::OnceLock;
|
use std::sync::OnceLock;
|
||||||
|
use uucore::error::{UResult, USimpleError};
|
||||||
|
|
||||||
pub fn raw(timestamp_us: i64) -> String {
|
pub fn raw(timestamp_us: i64) -> String {
|
||||||
let seconds = timestamp_us / 1000000;
|
let seconds = timestamp_us / 1000000;
|
||||||
@ -116,6 +117,15 @@ impl DeltaFormatter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn parse_datetime(s: &str) -> UResult<DateTime<FixedOffset>> {
|
||||||
|
#[cfg(feature = "fixed-boot-time")]
|
||||||
|
set_fixed_timezone();
|
||||||
|
match parse_datetime::parse_datetime(s) {
|
||||||
|
Ok(date_time) => Ok(date_time),
|
||||||
|
Err(_) => Err(USimpleError::new(1, format!("invalid time value \"{s}\""))),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn datetime_from_microseconds_since_boot(microseconds: i64) -> DateTime<FixedOffset> {
|
pub fn datetime_from_microseconds_since_boot(microseconds: i64) -> DateTime<FixedOffset> {
|
||||||
boot_time()
|
boot_time()
|
||||||
.checked_add_signed(TimeDelta::microseconds(microseconds))
|
.checked_add_signed(TimeDelta::microseconds(microseconds))
|
||||||
@ -174,3 +184,11 @@ fn boot_time_from_utmpx() -> Option<DateTime<FixedOffset>> {
|
|||||||
}
|
}
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "fixed-boot-time")]
|
||||||
|
static SET_TZ: OnceLock<()> = OnceLock::new();
|
||||||
|
|
||||||
|
#[cfg(feature = "fixed-boot-time")]
|
||||||
|
fn set_fixed_timezone() {
|
||||||
|
*SET_TZ.get_or_init(|| std::env::set_var("TZ", "Asia/Jakarta"))
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user