mirror of
https://github.com/uutils/coreutils.git
synced 2025-07-07 21:45:01 +00:00
295 lines
7.1 KiB
Rust
295 lines
7.1 KiB
Rust
// This file is part of the uutils coreutils package.
|
|
//
|
|
// For the full copyright and license information, please view the LICENSE
|
|
// file that was distributed with this source code.
|
|
// spell-checker:ignore parenb parmrk ixany iuclc onlcr ofdel icanon noflsh econl igpar ispeed ospeed
|
|
|
|
use uutests::new_ucmd;
|
|
|
|
#[test]
|
|
fn test_invalid_arg() {
|
|
new_ucmd!().arg("--definitely-invalid").fails_with_code(1);
|
|
}
|
|
|
|
#[test]
|
|
#[ignore = "Fails because cargo test does not run in a tty"]
|
|
fn runs() {
|
|
new_ucmd!().succeeds();
|
|
}
|
|
|
|
#[test]
|
|
#[ignore = "Fails because cargo test does not run in a tty"]
|
|
fn print_all() {
|
|
let res = new_ucmd!().args(&["--all"]).succeeds();
|
|
|
|
// Random selection of flags to check for
|
|
for flag in [
|
|
"parenb", "parmrk", "ixany", "onlcr", "ofdel", "icanon", "noflsh",
|
|
] {
|
|
res.stdout_contains(flag);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn save_and_setting() {
|
|
new_ucmd!()
|
|
.args(&["--save", "nl0"])
|
|
.fails()
|
|
.stderr_contains("when specifying an output style, modes may not be set");
|
|
}
|
|
|
|
#[test]
|
|
fn all_and_setting() {
|
|
new_ucmd!()
|
|
.args(&["--all", "nl0"])
|
|
.fails()
|
|
.stderr_contains("when specifying an output style, modes may not be set");
|
|
}
|
|
|
|
#[test]
|
|
fn all_and_print_setting() {
|
|
new_ucmd!()
|
|
.args(&["--all", "size"])
|
|
.fails()
|
|
.stderr_contains("when specifying an output style, modes may not be set");
|
|
}
|
|
|
|
#[test]
|
|
fn save_and_all() {
|
|
new_ucmd!()
|
|
.args(&["--save", "--all"])
|
|
.fails()
|
|
.stderr_contains(
|
|
"the options for verbose and stty-readable output styles are mutually exclusive",
|
|
);
|
|
|
|
new_ucmd!()
|
|
.args(&["--all", "--save"])
|
|
.fails()
|
|
.stderr_contains(
|
|
"the options for verbose and stty-readable output styles are mutually exclusive",
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn no_mapping() {
|
|
new_ucmd!()
|
|
.args(&["intr"])
|
|
.fails()
|
|
.stderr_contains("missing argument to 'intr'");
|
|
}
|
|
|
|
#[test]
|
|
fn invalid_mapping() {
|
|
new_ucmd!()
|
|
.args(&["intr", "cc"])
|
|
.fails()
|
|
.stderr_contains("invalid integer argument: 'cc'");
|
|
|
|
new_ucmd!()
|
|
.args(&["intr", "256"])
|
|
.fails()
|
|
.stderr_contains("invalid integer argument: '256': Value too large for defined data type");
|
|
|
|
new_ucmd!()
|
|
.args(&["intr", "0x100"])
|
|
.fails()
|
|
.stderr_contains(
|
|
"invalid integer argument: '0x100': Value too large for defined data type",
|
|
);
|
|
|
|
new_ucmd!()
|
|
.args(&["intr", "0400"])
|
|
.fails()
|
|
.stderr_contains("invalid integer argument: '0400': Value too large for defined data type");
|
|
}
|
|
|
|
#[test]
|
|
fn invalid_setting() {
|
|
new_ucmd!()
|
|
.args(&["-econl"])
|
|
.fails()
|
|
.stderr_contains("invalid argument '-econl'");
|
|
|
|
new_ucmd!()
|
|
.args(&["igpar"])
|
|
.fails()
|
|
.stderr_contains("invalid argument 'igpar'");
|
|
}
|
|
|
|
#[test]
|
|
fn invalid_baud_setting() {
|
|
#[cfg(not(any(
|
|
target_os = "freebsd",
|
|
target_os = "dragonfly",
|
|
target_os = "ios",
|
|
target_os = "macos",
|
|
target_os = "netbsd",
|
|
target_os = "openbsd"
|
|
)))]
|
|
new_ucmd!()
|
|
.args(&["100"])
|
|
.fails()
|
|
.stderr_contains("invalid argument '100'");
|
|
|
|
new_ucmd!()
|
|
.args(&["-1"])
|
|
.fails()
|
|
.stderr_contains("invalid argument '-1'");
|
|
|
|
new_ucmd!()
|
|
.args(&["ispeed"])
|
|
.fails()
|
|
.stderr_contains("missing argument to 'ispeed'");
|
|
|
|
new_ucmd!()
|
|
.args(&["ospeed"])
|
|
.fails()
|
|
.stderr_contains("missing argument to 'ospeed'");
|
|
|
|
#[cfg(not(any(
|
|
target_os = "freebsd",
|
|
target_os = "dragonfly",
|
|
target_os = "ios",
|
|
target_os = "macos",
|
|
target_os = "netbsd",
|
|
target_os = "openbsd"
|
|
)))]
|
|
new_ucmd!()
|
|
.args(&["ispeed", "995"])
|
|
.fails()
|
|
.stderr_contains("invalid ispeed '995'");
|
|
|
|
#[cfg(not(any(
|
|
target_os = "freebsd",
|
|
target_os = "dragonfly",
|
|
target_os = "ios",
|
|
target_os = "macos",
|
|
target_os = "netbsd",
|
|
target_os = "openbsd"
|
|
)))]
|
|
new_ucmd!()
|
|
.args(&["ospeed", "995"])
|
|
.fails()
|
|
.stderr_contains("invalid ospeed '995'");
|
|
}
|
|
|
|
#[test]
|
|
#[ignore = "Fails because cargo test does not run in a tty"]
|
|
fn set_mapping() {
|
|
new_ucmd!().args(&["intr", "'"]).succeeds();
|
|
new_ucmd!()
|
|
.args(&["--all"])
|
|
.succeeds()
|
|
.stdout_contains("intr = '");
|
|
|
|
new_ucmd!().args(&["intr", "undef"]).succeeds();
|
|
new_ucmd!()
|
|
.args(&["--all"])
|
|
.succeeds()
|
|
.stdout_contains("intr = <undef>");
|
|
|
|
new_ucmd!().args(&["intr", "^-"]).succeeds();
|
|
new_ucmd!()
|
|
.args(&["--all"])
|
|
.succeeds()
|
|
.stdout_contains("intr = <undef>");
|
|
|
|
new_ucmd!().args(&["intr", ""]).succeeds();
|
|
new_ucmd!()
|
|
.args(&["--all"])
|
|
.succeeds()
|
|
.stdout_contains("intr = <undef>");
|
|
|
|
new_ucmd!().args(&["intr", "^C"]).succeeds();
|
|
new_ucmd!()
|
|
.args(&["--all"])
|
|
.succeeds()
|
|
.stdout_contains("intr = ^C");
|
|
}
|
|
|
|
#[test]
|
|
fn row_column_sizes() {
|
|
new_ucmd!()
|
|
.args(&["rows", "-1"])
|
|
.fails()
|
|
.stderr_contains("invalid integer argument: '-1'");
|
|
|
|
new_ucmd!()
|
|
.args(&["columns", "-1"])
|
|
.fails()
|
|
.stderr_contains("invalid integer argument: '-1'");
|
|
|
|
// overflow the u32 used for row/col counts
|
|
new_ucmd!()
|
|
.args(&["cols", "4294967296"])
|
|
.fails()
|
|
.stderr_contains("invalid integer argument: '4294967296'");
|
|
|
|
new_ucmd!()
|
|
.args(&["rows", ""])
|
|
.fails()
|
|
.stderr_contains("invalid integer argument: ''");
|
|
|
|
new_ucmd!()
|
|
.args(&["columns"])
|
|
.fails()
|
|
.stderr_contains("missing argument to 'columns'");
|
|
|
|
new_ucmd!()
|
|
.args(&["rows"])
|
|
.fails()
|
|
.stderr_contains("missing argument to 'rows'");
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(any(target_os = "linux", target_os = "android"))]
|
|
fn line() {
|
|
new_ucmd!()
|
|
.args(&["line"])
|
|
.fails()
|
|
.stderr_contains("missing argument to 'line'");
|
|
|
|
new_ucmd!()
|
|
.args(&["line", "-1"])
|
|
.fails()
|
|
.stderr_contains("invalid integer argument: '-1'");
|
|
|
|
new_ucmd!()
|
|
.args(&["line", "256"])
|
|
.fails()
|
|
.stderr_contains("invalid integer argument: '256'");
|
|
}
|
|
|
|
#[test]
|
|
fn min_and_time() {
|
|
new_ucmd!()
|
|
.args(&["min"])
|
|
.fails()
|
|
.stderr_contains("missing argument to 'min'");
|
|
|
|
new_ucmd!()
|
|
.args(&["time"])
|
|
.fails()
|
|
.stderr_contains("missing argument to 'time'");
|
|
|
|
new_ucmd!()
|
|
.args(&["min", "-1"])
|
|
.fails()
|
|
.stderr_contains("invalid integer argument: '-1'");
|
|
|
|
new_ucmd!()
|
|
.args(&["time", "-1"])
|
|
.fails()
|
|
.stderr_contains("invalid integer argument: '-1'");
|
|
|
|
new_ucmd!()
|
|
.args(&["min", "256"])
|
|
.fails()
|
|
.stderr_contains("invalid integer argument: '256': Value too large for defined data type");
|
|
|
|
new_ucmd!()
|
|
.args(&["time", "256"])
|
|
.fails()
|
|
.stderr_contains("invalid integer argument: '256': Value too large for defined data type");
|
|
}
|