mirror of
https://github.com/uutils/coreutils.git
synced 2026-06-10 15:48:22 -07:00
Merge pull request #7548 from lewisboon/bugfix/date-negative-offset
date: allow negative date offsets
This commit is contained in:
@@ -318,6 +318,7 @@ pub fn uu_app() -> Command {
|
||||
.short('d')
|
||||
.long(OPT_DATE)
|
||||
.value_name("STRING")
|
||||
.allow_hyphen_values(true)
|
||||
.help("display time described by STRING, not 'now'"),
|
||||
)
|
||||
.arg(
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
use chrono::{DateTime, Duration, Utc};
|
||||
// This file is part of the uutils coreutils package.
|
||||
//
|
||||
// For the full copyright and license information, please view the LICENSE
|
||||
@@ -412,6 +413,31 @@ fn test_date_string_human() {
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_negative_offset() {
|
||||
let data_formats = vec![
|
||||
("-1 hour", Duration::hours(1)),
|
||||
("-1 hours", Duration::hours(1)),
|
||||
("-1 day", Duration::days(1)),
|
||||
("-2 weeks", Duration::weeks(2)),
|
||||
];
|
||||
for (date_format, offset) in data_formats {
|
||||
new_ucmd!()
|
||||
.arg("-d")
|
||||
.arg(date_format)
|
||||
.arg("--rfc-3339=seconds")
|
||||
.succeeds()
|
||||
.stdout_str_check(|out| {
|
||||
let date = DateTime::parse_from_rfc3339(out.trim()).unwrap();
|
||||
|
||||
// Is the resulting date roughly what is expected?
|
||||
let expected_date = Utc::now() - offset;
|
||||
date > expected_date - Duration::minutes(10)
|
||||
&& date < expected_date + Duration::minutes(10)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_invalid_date_string() {
|
||||
new_ucmd!()
|
||||
|
||||
Reference in New Issue
Block a user