tests/dmesg: add facility and level filter tests.

This commit is contained in:
Fuad Ismail 2024-12-07 15:28:29 +00:00
parent 6adabf4e7d
commit db9b3433bc

@ -81,3 +81,68 @@ fn test_invalid_time_format() {
.code_is(1)
.stderr_only("dmesg: unknown time format: definitely-invalid\n");
}
#[test]
fn test_filter_facility() {
let facilities = [
"kern", "user", "mail", "daemon", "auth", "syslog", "lpr", "news", "uucp", "cron",
"authpriv", "ftp", "local0", "local1", "local2", "local3", "local4", "local5", "local6",
"local7",
];
for facility in facilities {
let facility_filter_arg = format!("--facility={facility}");
let mut cmd = new_ucmd!();
let result = cmd
.arg("--kmsg-file")
.arg("kmsg.input")
.arg(facility_filter_arg)
.succeeds();
let stdout = result.no_stderr().stdout_str();
assert_eq!(stdout.lines().count(), 8);
let expected = format!("LOG_{}", facility.to_uppercase());
stdout
.lines()
.for_each(|line| assert!(line.contains(&expected)));
}
}
#[test]
fn test_filter_levels() {
let levels = [
"emerg", "alert", "crit", "err", "warn", "notice", "info", "debug",
];
for level in levels {
let level_filter_arg = format!("--level={level}");
let mut cmd = new_ucmd!();
let result = cmd
.arg("--kmsg-file")
.arg("kmsg.input")
.arg(level_filter_arg)
.succeeds();
let stdout = result.no_stderr().stdout_str();
assert_eq!(stdout.lines().count(), 20);
let expected = format!("LOG_{}", level.to_uppercase());
stdout
.lines()
.for_each(|line| assert!(line.contains(&expected)));
}
}
#[test]
fn test_filter_multiple() {
let mut cmd = new_ucmd!();
let result = cmd
.arg("--kmsg-file")
.arg("kmsg.input")
.arg("--facility=kern,user")
.arg("--level=emerg,alert")
.succeeds();
let stdout = result.no_stderr().stdout_str();
assert_eq!(stdout.lines().count(), 4);
stdout.lines().for_each(|line| {
assert!(
(line.contains("LOG_KERN") || line.contains("LOG_USER"))
&& (line.contains("LOG_EMERG") || line.contains("LOG_ALERT"))
)
});
}