111 lines
2.8 KiB
Rust
111 lines
2.8 KiB
Rust
// This file is part of the uutils util-linux package.
|
|
//
|
|
// For the full copyright and license information, please view the LICENSE
|
|
// file that was distributed with this source code.
|
|
// spell-checker:ignore (words) symdir somefakedir
|
|
|
|
#[cfg(unix)]
|
|
use crate::common::util::TestScenario;
|
|
|
|
#[cfg(unix)]
|
|
use regex::Regex;
|
|
|
|
#[test]
|
|
#[cfg(unix)]
|
|
fn test_invalid_arg() {
|
|
new_ucmd!().arg("--definitely-invalid").fails().code_is(1);
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(unix)]
|
|
fn test_last() {
|
|
let regex = Regex::new("still running|still logged in").unwrap();
|
|
TestScenario::new(util_name!())
|
|
.ucmd()
|
|
.succeeds()
|
|
.stdout_matches(®ex);
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(unix)]
|
|
fn test_limit_arg() {
|
|
let line_check = |input: &str| input.lines().count() == 3;
|
|
new_ucmd!()
|
|
.arg("--limit=1")
|
|
.succeeds()
|
|
.stdout_str_check(line_check);
|
|
}
|
|
|
|
#[test]
|
|
// The -x flag generally adds two rows "shutdown" and "runlevel"
|
|
// "shutdown" cannot be checked for since not every machine will have shutdown
|
|
// "runlevel" only makes sense for Linux systems, so only Linux is included for
|
|
// this test.
|
|
#[cfg(target_os = "linux")]
|
|
#[ignore = "fails on Arch Linux"]
|
|
fn test_system_arg() {
|
|
new_ucmd!().arg("-x").succeeds().stdout_contains("runlevel");
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(unix)]
|
|
fn test_timestamp_format_no_time() {
|
|
let regex = Regex::new(" [0-9][0-9]:[0-9][0-9] ").unwrap();
|
|
new_ucmd!()
|
|
.arg("--time-format=notime")
|
|
.succeeds()
|
|
.stdout_does_not_match(®ex);
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(unix)]
|
|
fn test_timestamp_format_short() {
|
|
let regex = Regex::new(" [0-9][0-9]:[0-9][0-9] ").unwrap();
|
|
new_ucmd!()
|
|
.arg("--time-format=short")
|
|
.succeeds()
|
|
.stdout_matches(®ex);
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(unix)]
|
|
fn test_timestamp_format_full() {
|
|
let regex = Regex::new(" [0-9][0-9]:[0-9][0-9]:[0-9][0-9] ").unwrap();
|
|
new_ucmd!()
|
|
.arg("--time-format=full")
|
|
.succeeds()
|
|
.stdout_matches(®ex);
|
|
}
|
|
|
|
// 2024-07-11T19:30:44+08:00
|
|
#[test]
|
|
#[cfg(unix)]
|
|
fn test_timestamp_format_iso() {
|
|
let regex =
|
|
Regex::new(" [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]")
|
|
.unwrap();
|
|
new_ucmd!()
|
|
.arg("--time-format=iso")
|
|
.succeeds()
|
|
.stdout_matches(®ex);
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(unix)]
|
|
fn test_short_invalid_utmp_file() {
|
|
let (at, mut ucmd) = at_and_ucmd!();
|
|
let file = "testfile";
|
|
// Random bytes
|
|
let data = [
|
|
4, 5, 6, 16, 8, 13, 2, 12, 5, 3, 11, 5, 1, 13, 1, 1, 0, 9, 5, 5, 2, 8, 4,
|
|
];
|
|
at.write_bytes(file, &data);
|
|
|
|
let regex = Regex::new(r"\n\S*\sbegins\s*(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s*(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s*[0-9][0-9]?\s*[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\s*[0-9]*")
|
|
.unwrap();
|
|
|
|
ucmd.arg(format!("--file={file}"))
|
|
.succeeds()
|
|
.stdout_matches(®ex);
|
|
}
|