mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 03:27:44 +00:00
tests/util: Do not trim stderr in CmdResult::stderr_is. Add method stderr_trimmed_is.
Fix tests assert whitespace instead of trimming it. Disable some tests in `test_tr` because `tr` produces too many newlines.
This commit is contained in:
parent
7c0ed0340b
commit
1fadeb43b2
40 changed files with 229 additions and 211 deletions
|
@ -121,5 +121,5 @@ fn test_base32_file_not_found() {
|
|||
new_ucmd!()
|
||||
.arg("a.txt")
|
||||
.fails()
|
||||
.stderr_only("base32: a.txt: No such file or directory");
|
||||
.stderr_only("base32: a.txt: No such file or directory\n");
|
||||
}
|
||||
|
|
|
@ -110,5 +110,5 @@ fn test_base64_file_not_found() {
|
|||
new_ucmd!()
|
||||
.arg("a.txt")
|
||||
.fails()
|
||||
.stderr_only("base64: a.txt: No such file or directory");
|
||||
.stderr_only("base64: a.txt: No such file or directory\n");
|
||||
}
|
||||
|
|
|
@ -7,10 +7,10 @@ fn test_z85_not_padded() {
|
|||
.args(&["--z85", "-d"])
|
||||
.pipe_in("##########")
|
||||
.fails()
|
||||
.stderr_only("basenc: error: invalid input");
|
||||
.stderr_only("basenc: error: invalid input\n");
|
||||
new_ucmd!()
|
||||
.args(&["--z85"])
|
||||
.pipe_in("123")
|
||||
.fails()
|
||||
.stderr_only("basenc: error: invalid input (length must be multiple of 4 characters)");
|
||||
.stderr_only("basenc: error: invalid input (length must be multiple of 4 characters)\n");
|
||||
}
|
||||
|
|
|
@ -182,7 +182,7 @@ fn test_directory() {
|
|||
s.ucmd()
|
||||
.args(&["test_directory"])
|
||||
.fails()
|
||||
.stderr_is("cat: test_directory: Is a directory");
|
||||
.stderr_is("cat: test_directory: Is a directory\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -194,7 +194,7 @@ fn test_directory_and_file() {
|
|||
s.ucmd()
|
||||
.args(&["test_directory2", fixture])
|
||||
.fails()
|
||||
.stderr_is("cat: test_directory2: Is a directory")
|
||||
.stderr_is("cat: test_directory2: Is a directory\n")
|
||||
.stdout_is_fixture(fixture);
|
||||
}
|
||||
}
|
||||
|
@ -527,7 +527,7 @@ fn test_write_to_self() {
|
|||
.arg("second_file")
|
||||
.fails()
|
||||
.code_is(2)
|
||||
.stderr_only("cat: first_file: input file is output file\ncat: first_file: input file is output file");
|
||||
.stderr_only("cat: first_file: input file is output file\ncat: first_file: input file is output file\n");
|
||||
|
||||
assert_eq!(
|
||||
s.fixtures.read("first_file"),
|
||||
|
|
|
@ -48,7 +48,7 @@ fn test_invalid_group() {
|
|||
.arg("__nosuchgroup__")
|
||||
.arg("/")
|
||||
.fails()
|
||||
.stderr_is("chgrp: invalid group: '__nosuchgroup__'");
|
||||
.stderr_is("chgrp: invalid group: '__nosuchgroup__'\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -92,7 +92,7 @@ fn test_preserve_root() {
|
|||
.arg("-R")
|
||||
.arg("bin").arg(d)
|
||||
.fails()
|
||||
.stderr_is("chgrp: it is dangerous to operate recursively on '/'\nchgrp: use --no-preserve-root to override this failsafe");
|
||||
.stderr_is("chgrp: it is dangerous to operate recursively on '/'\nchgrp: use --no-preserve-root to override this failsafe\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -111,7 +111,7 @@ fn test_preserve_root_symlink() {
|
|||
.arg("-HR")
|
||||
.arg("bin").arg(file)
|
||||
.fails()
|
||||
.stderr_is("chgrp: it is dangerous to operate recursively on '/'\nchgrp: use --no-preserve-root to override this failsafe");
|
||||
.stderr_is("chgrp: it is dangerous to operate recursively on '/'\nchgrp: use --no-preserve-root to override this failsafe\n");
|
||||
}
|
||||
|
||||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
|
@ -120,7 +120,7 @@ fn test_preserve_root_symlink() {
|
|||
.arg("-HR")
|
||||
.arg("bin").arg(format!(".//{}/..//..//../../", file))
|
||||
.fails()
|
||||
.stderr_is("chgrp: it is dangerous to operate recursively on '/'\nchgrp: use --no-preserve-root to override this failsafe");
|
||||
.stderr_is("chgrp: it is dangerous to operate recursively on '/'\nchgrp: use --no-preserve-root to override this failsafe\n");
|
||||
|
||||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
at.symlink_file("/", "__root__");
|
||||
|
@ -128,7 +128,7 @@ fn test_preserve_root_symlink() {
|
|||
.arg("-R")
|
||||
.arg("bin").arg("__root__/.")
|
||||
.fails()
|
||||
.stderr_is("chgrp: it is dangerous to operate recursively on '/'\nchgrp: use --no-preserve-root to override this failsafe");
|
||||
.stderr_is("chgrp: it is dangerous to operate recursively on '/'\nchgrp: use --no-preserve-root to override this failsafe\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -143,7 +143,7 @@ fn test_reference() {
|
|||
.arg("--reference=/etc/passwd")
|
||||
.arg("/etc")
|
||||
.fails()
|
||||
.stderr_is("chgrp: changing group of '/etc': Operation not permitted (os error 1)\nfailed to change group of '/etc' from root to root");
|
||||
.stderr_is("chgrp: changing group of '/etc': Operation not permitted (os error 1)\nfailed to change group of '/etc' from root to root\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -270,7 +270,7 @@ fn test_permission_denied() {
|
|||
.arg(group.as_raw().to_string())
|
||||
.arg("dir")
|
||||
.fails()
|
||||
.stderr_only("chgrp: cannot access 'dir': Permission denied");
|
||||
.stderr_only("chgrp: cannot access 'dir': Permission denied\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -289,7 +289,7 @@ fn test_subdir_permission_denied() {
|
|||
.arg(group.as_raw().to_string())
|
||||
.arg("dir")
|
||||
.fails()
|
||||
.stderr_only("chgrp: cannot access 'dir/subdir': Permission denied");
|
||||
.stderr_only("chgrp: cannot access 'dir/subdir': Permission denied\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -216,7 +216,7 @@ fn test_chmod_ugoa() {
|
|||
.fails()
|
||||
.code_is(1)
|
||||
// spell-checker:disable-next-line
|
||||
.stderr_is("chmod: file: new permissions are r-xrwxrwx, not r-xr-xr-x");
|
||||
.stderr_is("chmod: file: new permissions are r-xrwxrwx, not r-xr-xr-x\n");
|
||||
assert_eq!(
|
||||
metadata(at.plus("file")).unwrap().permissions().mode(),
|
||||
0o100577
|
||||
|
@ -314,7 +314,7 @@ fn test_permission_denied() {
|
|||
.arg("o=r")
|
||||
.arg("d")
|
||||
.fails()
|
||||
.stderr_is("chmod: 'd/no-x/y': Permission denied");
|
||||
.stderr_is("chmod: 'd/no-x/y': Permission denied\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -341,7 +341,7 @@ fn test_chmod_recursive() {
|
|||
.arg("a")
|
||||
.arg("z")
|
||||
.fails()
|
||||
.stderr_is("chmod: Permission denied");
|
||||
.stderr_is("chmod: Permission denied\n");
|
||||
|
||||
assert_eq!(at.metadata("z/y").permissions().mode(), 0o100444);
|
||||
assert_eq!(at.metadata("a/a").permissions().mode(), 0o100444);
|
||||
|
|
|
@ -43,7 +43,7 @@ fn test_no_such_directory() {
|
|||
|
||||
ucmd.arg("a")
|
||||
.fails()
|
||||
.stderr_is("chroot: cannot change root directory to 'a': no such directory")
|
||||
.stderr_is("chroot: cannot change root directory to 'a': no such directory\n")
|
||||
.code_is(125);
|
||||
}
|
||||
|
||||
|
|
|
@ -179,5 +179,5 @@ fn test_no_such_file() {
|
|||
new_ucmd!()
|
||||
.args(&["bogus_file_1", "bogus_file_2"])
|
||||
.fails()
|
||||
.stderr_only("comm: bogus_file_1: No such file or directory");
|
||||
.stderr_only("comm: bogus_file_1: No such file or directory\n");
|
||||
}
|
||||
|
|
|
@ -601,7 +601,7 @@ fn test_cp_backup_simple_protect_source() {
|
|||
.arg(TEST_HELLO_WORLD_SOURCE)
|
||||
.fails()
|
||||
.stderr_only(format!(
|
||||
"cp: backing up '{}' might destroy source; '{}' not copied",
|
||||
"cp: backing up '{}' might destroy source; '{}' not copied\n",
|
||||
TEST_HELLO_WORLD_SOURCE, source,
|
||||
));
|
||||
|
||||
|
@ -1524,7 +1524,7 @@ fn test_cp_reflink_insufficient_permission() {
|
|||
.arg("unreadable")
|
||||
.arg(TEST_EXISTING_FILE)
|
||||
.fails()
|
||||
.stderr_only("cp: 'unreadable' -> 'existing_file.txt': Permission denied (os error 13)");
|
||||
.stderr_only("cp: 'unreadable' -> 'existing_file.txt': Permission denied (os error 13)\n");
|
||||
}
|
||||
|
||||
#[cfg(any(target_os = "linux", target_os = "android"))]
|
||||
|
@ -1863,9 +1863,9 @@ fn test_copy_through_just_created_symlink() {
|
|||
.arg("c")
|
||||
.fails()
|
||||
.stderr_only(if cfg!(not(target_os = "windows")) {
|
||||
"cp: will not copy 'b/1' through just-created symlink 'c/1'"
|
||||
"cp: will not copy 'b/1' through just-created symlink 'c/1'\n"
|
||||
} else {
|
||||
"cp: will not copy 'b/1' through just-created symlink 'c\\1'"
|
||||
"cp: will not copy 'b/1' through just-created symlink 'c\\1'\n"
|
||||
});
|
||||
if create_t {
|
||||
assert_eq!(at.read("a/1"), "world");
|
||||
|
@ -1881,7 +1881,7 @@ fn test_copy_through_dangling_symlink() {
|
|||
ucmd.arg("file")
|
||||
.arg("target")
|
||||
.fails()
|
||||
.stderr_only("cp: not writing through dangling symlink 'target'");
|
||||
.stderr_only("cp: not writing through dangling symlink 'target'\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -1933,7 +1933,7 @@ fn test_copy_through_dangling_symlink_no_dereference_2() {
|
|||
at.symlink_file("nonexistent", "target");
|
||||
ucmd.args(&["-P", "file", "target"])
|
||||
.fails()
|
||||
.stderr_only("cp: not writing through dangling symlink 'target'");
|
||||
.stderr_only("cp: not writing through dangling symlink 'target'\n");
|
||||
}
|
||||
|
||||
/// Test that copy through a dangling symbolic link fails, even with --force.
|
||||
|
@ -1945,7 +1945,7 @@ fn test_copy_through_dangling_symlink_force() {
|
|||
at.symlink_file("no-such-file", "dest");
|
||||
ucmd.args(&["--force", "src", "dest"])
|
||||
.fails()
|
||||
.stderr_only("cp: not writing through dangling symlink 'dest'");
|
||||
.stderr_only("cp: not writing through dangling symlink 'dest'\n");
|
||||
assert!(!at.file_exists("dest"));
|
||||
}
|
||||
|
||||
|
@ -1958,7 +1958,7 @@ fn test_cp_archive_on_nonexistent_file() {
|
|||
.arg(TEST_EXISTING_FILE)
|
||||
.fails()
|
||||
.stderr_only(
|
||||
"cp: cannot stat 'nonexistent_file.txt': No such file or directory (os error 2)",
|
||||
"cp: cannot stat 'nonexistent_file.txt': No such file or directory (os error 2)\n",
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -2043,7 +2043,7 @@ fn test_cp_dir_vs_file() {
|
|||
.arg(TEST_COPY_FROM_FOLDER)
|
||||
.arg(TEST_EXISTING_FILE)
|
||||
.fails()
|
||||
.stderr_only("cp: cannot overwrite non-directory with directory");
|
||||
.stderr_only("cp: cannot overwrite non-directory with directory\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -2285,9 +2285,9 @@ fn test_copy_directory_to_itself_disallowed() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
at.mkdir("d");
|
||||
#[cfg(not(windows))]
|
||||
let expected = "cp: cannot copy a directory, 'd', into itself, 'd/d'";
|
||||
let expected = "cp: cannot copy a directory, 'd', into itself, 'd/d'\n";
|
||||
#[cfg(windows)]
|
||||
let expected = "cp: cannot copy a directory, 'd', into itself, 'd\\d'";
|
||||
let expected = "cp: cannot copy a directory, 'd', into itself, 'd\\d'\n";
|
||||
ucmd.args(&["-R", "d", "d"]).fails().stderr_only(expected);
|
||||
}
|
||||
|
||||
|
@ -2299,9 +2299,9 @@ fn test_copy_nested_directory_to_itself_disallowed() {
|
|||
at.mkdir("a/b");
|
||||
at.mkdir("a/b/c");
|
||||
#[cfg(not(windows))]
|
||||
let expected = "cp: cannot copy a directory, 'a/b', into itself, 'a/b/c/b'";
|
||||
let expected = "cp: cannot copy a directory, 'a/b', into itself, 'a/b/c/b'\n";
|
||||
#[cfg(windows)]
|
||||
let expected = "cp: cannot copy a directory, 'a/b', into itself, 'a/b/c\\b'";
|
||||
let expected = "cp: cannot copy a directory, 'a/b', into itself, 'a/b/c\\b'\n";
|
||||
ucmd.args(&["-R", "a/b", "a/b/c"])
|
||||
.fails()
|
||||
.stderr_only(expected);
|
||||
|
@ -2361,7 +2361,7 @@ fn test_copy_dir_preserve_permissions_inaccessible_file() {
|
|||
ucmd.args(&["-p", "-R", "d1", "d2"])
|
||||
.fails()
|
||||
.code_is(1)
|
||||
.stderr_only("cp: cannot open 'd1/f' for reading: Permission denied");
|
||||
.stderr_only("cp: cannot open 'd1/f' for reading: Permission denied\n");
|
||||
assert!(at.dir_exists("d2"));
|
||||
assert!(!at.file_exists("d2/f"));
|
||||
|
||||
|
@ -2378,7 +2378,7 @@ fn test_same_file_backup() {
|
|||
at.touch("f");
|
||||
ucmd.args(&["--backup", "f", "f"])
|
||||
.fails()
|
||||
.stderr_only("cp: 'f' and 'f' are the same file");
|
||||
.stderr_only("cp: 'f' and 'f' are the same file\n");
|
||||
assert!(!at.file_exists("f~"));
|
||||
}
|
||||
|
||||
|
@ -2390,7 +2390,7 @@ fn test_same_file_force() {
|
|||
at.touch("f");
|
||||
ucmd.args(&["--force", "f", "f"])
|
||||
.fails()
|
||||
.stderr_only("cp: 'f' and 'f' are the same file");
|
||||
.stderr_only("cp: 'f' and 'f' are the same file\n");
|
||||
assert!(!at.file_exists("f~"));
|
||||
}
|
||||
|
||||
|
|
|
@ -213,7 +213,7 @@ fn test_up_to_match_repeat_over() {
|
|||
ucmd.args(&["numbers50.txt", "/9$/", "{50}"])
|
||||
.fails()
|
||||
.stdout_is("16\n29\n30\n30\n30\n6\n")
|
||||
.stderr_is("csplit: '/9$/': match not found on repetition 5");
|
||||
.stderr_is("csplit: '/9$/': match not found on repetition 5\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("there should be splits created")
|
||||
|
@ -224,7 +224,7 @@ fn test_up_to_match_repeat_over() {
|
|||
ucmd.args(&["numbers50.txt", "/9$/", "{50}", "-k"])
|
||||
.fails()
|
||||
.stdout_is("16\n29\n30\n30\n30\n6\n")
|
||||
.stderr_is("csplit: '/9$/': match not found on repetition 5");
|
||||
.stderr_is("csplit: '/9$/': match not found on repetition 5\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("there should be splits created")
|
||||
|
@ -370,7 +370,7 @@ fn test_option_keep() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["-k", "numbers50.txt", "/20/", "/nope/"])
|
||||
.fails()
|
||||
.stderr_is("csplit: '/nope/': match not found")
|
||||
.stderr_is("csplit: '/nope/': match not found\n")
|
||||
.stdout_is("48\n93\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
|
@ -546,7 +546,7 @@ fn test_up_to_match_context_overflow() {
|
|||
ucmd.args(&["numbers50.txt", "/45/+10"])
|
||||
.fails()
|
||||
.stdout_is("141\n")
|
||||
.stderr_is("csplit: '/45/+10': line number out of range");
|
||||
.stderr_is("csplit: '/45/+10': line number out of range\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -557,7 +557,7 @@ fn test_up_to_match_context_overflow() {
|
|||
ucmd.args(&["numbers50.txt", "/45/+10", "-k"])
|
||||
.fails()
|
||||
.stdout_is("141\n")
|
||||
.stderr_is("csplit: '/45/+10': line number out of range");
|
||||
.stderr_is("csplit: '/45/+10': line number out of range\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -572,7 +572,7 @@ fn test_skip_to_match_context_underflow() {
|
|||
ucmd.args(&["numbers50.txt", "%5%-10"])
|
||||
.fails()
|
||||
.stdout_is("141\n")
|
||||
.stderr_is("csplit: '%5%-10': line number out of range");
|
||||
.stderr_is("csplit: '%5%-10': line number out of range\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -583,7 +583,7 @@ fn test_skip_to_match_context_underflow() {
|
|||
ucmd.args(&["numbers50.txt", "%5%-10", "-k"])
|
||||
.fails()
|
||||
.stdout_is("141\n")
|
||||
.stderr_is("csplit: '%5%-10': line number out of range");
|
||||
.stderr_is("csplit: '%5%-10': line number out of range\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -597,7 +597,7 @@ fn test_skip_to_match_context_overflow() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "%45%+10"])
|
||||
.fails()
|
||||
.stderr_only("csplit: '%45%+10': line number out of range");
|
||||
.stderr_is("csplit: '%45%+10': line number out of range\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -607,7 +607,7 @@ fn test_skip_to_match_context_overflow() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "%45%+10", "-k"])
|
||||
.fails()
|
||||
.stderr_only("csplit: '%45%+10': line number out of range");
|
||||
.stderr_only("csplit: '%45%+10': line number out of range\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -621,7 +621,7 @@ fn test_up_to_no_match1() {
|
|||
ucmd.args(&["numbers50.txt", "/4/", "/nope/"])
|
||||
.fails()
|
||||
.stdout_is("6\n135\n")
|
||||
.stderr_is("csplit: '/nope/': match not found");
|
||||
.stderr_is("csplit: '/nope/': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -632,7 +632,7 @@ fn test_up_to_no_match1() {
|
|||
ucmd.args(&["numbers50.txt", "/4/", "/nope/", "-k"])
|
||||
.fails()
|
||||
.stdout_is("6\n135\n")
|
||||
.stderr_is("csplit: '/nope/': match not found");
|
||||
.stderr_is("csplit: '/nope/': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -648,7 +648,7 @@ fn test_up_to_no_match2() {
|
|||
ucmd.args(&["numbers50.txt", "/4/", "/nope/", "{50}"])
|
||||
.fails()
|
||||
.stdout_is("6\n135\n")
|
||||
.stderr_is("csplit: '/nope/': match not found");
|
||||
.stderr_is("csplit: '/nope/': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -659,7 +659,7 @@ fn test_up_to_no_match2() {
|
|||
ucmd.args(&["numbers50.txt", "/4/", "/nope/", "{50}", "-k"])
|
||||
.fails()
|
||||
.stdout_is("6\n135\n")
|
||||
.stderr_is("csplit: '/nope/': match not found");
|
||||
.stderr_is("csplit: '/nope/': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -675,7 +675,7 @@ fn test_up_to_no_match3() {
|
|||
ucmd.args(&["numbers50.txt", "/0$/", "{50}"])
|
||||
.fails()
|
||||
.stdout_is("18\n30\n30\n30\n30\n3\n")
|
||||
.stderr_is("csplit: '/0$/': match not found on repetition 5");
|
||||
.stderr_is("csplit: '/0$/': match not found on repetition 5\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -686,7 +686,7 @@ fn test_up_to_no_match3() {
|
|||
ucmd.args(&["numbers50.txt", "/0$/", "{50}", "-k"])
|
||||
.fails()
|
||||
.stdout_is("18\n30\n30\n30\n30\n3\n")
|
||||
.stderr_is("csplit: '/0$/': match not found on repetition 5");
|
||||
.stderr_is("csplit: '/0$/': match not found on repetition 5\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -706,7 +706,7 @@ fn test_up_to_no_match4() {
|
|||
ucmd.args(&["numbers50.txt", "/nope/", "/4/"])
|
||||
.fails()
|
||||
.stdout_is("141\n")
|
||||
.stderr_is("csplit: '/nope/': match not found");
|
||||
.stderr_is("csplit: '/nope/': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -717,7 +717,7 @@ fn test_up_to_no_match4() {
|
|||
ucmd.args(&["numbers50.txt", "/nope/", "/4/", "-k"])
|
||||
.fails()
|
||||
.stdout_is("141\n")
|
||||
.stderr_is("csplit: '/nope/': match not found");
|
||||
.stderr_is("csplit: '/nope/': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -746,7 +746,7 @@ fn test_up_to_no_match6() {
|
|||
ucmd.args(&["numbers50.txt", "/nope/-5"])
|
||||
.fails()
|
||||
.stdout_is("141\n")
|
||||
.stderr_is("csplit: '/nope/-5': match not found");
|
||||
.stderr_is("csplit: '/nope/-5': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -757,7 +757,7 @@ fn test_up_to_no_match6() {
|
|||
ucmd.args(&["numbers50.txt", "/nope/-5", "-k"])
|
||||
.fails()
|
||||
.stdout_is("141\n")
|
||||
.stderr_is("csplit: '/nope/-5': match not found");
|
||||
.stderr_is("csplit: '/nope/-5': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -772,7 +772,7 @@ fn test_up_to_no_match7() {
|
|||
ucmd.args(&["numbers50.txt", "/nope/+5"])
|
||||
.fails()
|
||||
.stdout_is("141\n")
|
||||
.stderr_is("csplit: '/nope/+5': match not found");
|
||||
.stderr_is("csplit: '/nope/+5': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -783,7 +783,7 @@ fn test_up_to_no_match7() {
|
|||
ucmd.args(&["numbers50.txt", "/nope/+5", "-k"])
|
||||
.fails()
|
||||
.stdout_is("141\n")
|
||||
.stderr_is("csplit: '/nope/+5': match not found");
|
||||
.stderr_is("csplit: '/nope/+5': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -797,7 +797,7 @@ fn test_skip_to_no_match1() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "%nope%"])
|
||||
.fails()
|
||||
.stderr_only("csplit: '%nope%': match not found");
|
||||
.stderr_only("csplit: '%nope%': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -810,7 +810,7 @@ fn test_skip_to_no_match2() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "%nope%", "{50}"])
|
||||
.fails()
|
||||
.stderr_only("csplit: '%nope%': match not found");
|
||||
.stderr_only("csplit: '%nope%': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -823,7 +823,7 @@ fn test_skip_to_no_match3() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "%0$%", "{50}"])
|
||||
.fails()
|
||||
.stderr_only("csplit: '%0$%': match not found on repetition 5");
|
||||
.stderr_only("csplit: '%0$%': match not found on repetition 5\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -836,7 +836,7 @@ fn test_skip_to_no_match4() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "%nope%", "/4/"])
|
||||
.fails()
|
||||
.stderr_only("csplit: '%nope%': match not found");
|
||||
.stderr_only("csplit: '%nope%': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -863,7 +863,7 @@ fn test_skip_to_no_match6() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "%nope%-5"])
|
||||
.fails()
|
||||
.stderr_only("csplit: '%nope%-5': match not found");
|
||||
.stderr_only("csplit: '%nope%-5': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -876,7 +876,7 @@ fn test_skip_to_no_match7() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "%nope%+5"])
|
||||
.fails()
|
||||
.stderr_only("csplit: '%nope%+5': match not found");
|
||||
.stderr_only("csplit: '%nope%+5': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -889,7 +889,7 @@ fn test_no_match() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "%nope%"])
|
||||
.fails()
|
||||
.stderr_only("csplit: '%nope%': match not found");
|
||||
.stderr_only("csplit: '%nope%': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -900,7 +900,7 @@ fn test_no_match() {
|
|||
ucmd.args(&["numbers50.txt", "/nope/"])
|
||||
.fails()
|
||||
.stdout_is("141\n")
|
||||
.stderr_is("csplit: '/nope/': match not found");
|
||||
.stderr_is("csplit: '/nope/': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -997,7 +997,7 @@ fn test_too_small_line_num_repeat() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "/20/", "10", "{*}"])
|
||||
.fails()
|
||||
.stderr_is("csplit: '10': line number out of range on repetition 5")
|
||||
.stderr_is("csplit: '10': line number out of range on repetition 5\n")
|
||||
.stdout_is("48\n0\n0\n30\n30\n30\n3\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
|
@ -1008,7 +1008,7 @@ fn test_too_small_line_num_repeat() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "/20/", "10", "{*}", "-k"])
|
||||
.fails()
|
||||
.stderr_is("csplit: '10': line number out of range on repetition 5")
|
||||
.stderr_is("csplit: '10': line number out of range on repetition 5\n")
|
||||
.stdout_is("48\n0\n0\n30\n30\n30\n3\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
|
@ -1030,7 +1030,7 @@ fn test_line_num_out_of_range1() {
|
|||
ucmd.args(&["numbers50.txt", "100"])
|
||||
.fails()
|
||||
.stdout_is("141\n")
|
||||
.stderr_is("csplit: '100': line number out of range");
|
||||
.stderr_is("csplit: '100': line number out of range\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("there should be splits created")
|
||||
|
@ -1041,7 +1041,7 @@ fn test_line_num_out_of_range1() {
|
|||
ucmd.args(&["numbers50.txt", "100", "-k"])
|
||||
.fails()
|
||||
.stdout_is("141\n")
|
||||
.stderr_is("csplit: '100': line number out of range");
|
||||
.stderr_is("csplit: '100': line number out of range\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("there should be splits created")
|
||||
|
@ -1056,7 +1056,7 @@ fn test_line_num_out_of_range2() {
|
|||
ucmd.args(&["numbers50.txt", "10", "100"])
|
||||
.fails()
|
||||
.stdout_is("18\n123\n")
|
||||
.stderr_is("csplit: '100': line number out of range");
|
||||
.stderr_is("csplit: '100': line number out of range\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("there should be splits created")
|
||||
|
@ -1067,7 +1067,7 @@ fn test_line_num_out_of_range2() {
|
|||
ucmd.args(&["numbers50.txt", "10", "100", "-k"])
|
||||
.fails()
|
||||
.stdout_is("18\n123\n")
|
||||
.stderr_is("csplit: '100': line number out of range");
|
||||
.stderr_is("csplit: '100': line number out of range\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("there should be splits created")
|
||||
|
@ -1083,7 +1083,7 @@ fn test_line_num_out_of_range3() {
|
|||
ucmd.args(&["numbers50.txt", "40", "{2}"])
|
||||
.fails()
|
||||
.stdout_is("108\n33\n")
|
||||
.stderr_is("csplit: '40': line number out of range on repetition 1");
|
||||
.stderr_is("csplit: '40': line number out of range on repetition 1\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("there should be splits created")
|
||||
|
@ -1094,7 +1094,7 @@ fn test_line_num_out_of_range3() {
|
|||
ucmd.args(&["numbers50.txt", "40", "{2}", "-k"])
|
||||
.fails()
|
||||
.stdout_is("108\n33\n")
|
||||
.stderr_is("csplit: '40': line number out of range on repetition 1");
|
||||
.stderr_is("csplit: '40': line number out of range on repetition 1\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("there should be splits created")
|
||||
|
@ -1110,7 +1110,7 @@ fn test_line_num_out_of_range4() {
|
|||
ucmd.args(&["numbers50.txt", "40", "{*}"])
|
||||
.fails()
|
||||
.stdout_is("108\n33\n")
|
||||
.stderr_is("csplit: '40': line number out of range on repetition 1");
|
||||
.stderr_is("csplit: '40': line number out of range on repetition 1\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("there should be splits created")
|
||||
|
@ -1121,7 +1121,7 @@ fn test_line_num_out_of_range4() {
|
|||
ucmd.args(&["numbers50.txt", "40", "{*}", "-k"])
|
||||
.fails()
|
||||
.stdout_is("108\n33\n")
|
||||
.stderr_is("csplit: '40': line number out of range on repetition 1");
|
||||
.stderr_is("csplit: '40': line number out of range on repetition 1\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("there should be splits created")
|
||||
|
@ -1137,7 +1137,7 @@ fn test_skip_to_match_negative_offset_before_a_match() {
|
|||
ucmd.args(&["numbers50.txt", "/20/-10", "/15/"])
|
||||
.fails()
|
||||
.stdout_is("18\n123\n")
|
||||
.stderr_is("csplit: '/15/': match not found");
|
||||
.stderr_is("csplit: '/15/': match not found\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("there should be splits created")
|
||||
|
@ -1182,7 +1182,7 @@ fn test_corner_case2() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "/10/-5", "/10/"])
|
||||
.fails()
|
||||
.stderr_is("csplit: '/10/': match not found")
|
||||
.stderr_is("csplit: '/10/': match not found\n")
|
||||
.stdout_is("8\n133\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
|
@ -1196,7 +1196,7 @@ fn test_corner_case3() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "/15/-3", "14", "/15/"])
|
||||
.fails()
|
||||
.stderr_is("csplit: '/15/': match not found")
|
||||
.stderr_is("csplit: '/15/': match not found\n")
|
||||
.stdout_is("24\n6\n111\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
|
@ -1228,7 +1228,7 @@ fn test_up_to_match_context_underflow() {
|
|||
ucmd.args(&["numbers50.txt", "/5/-10"])
|
||||
.fails()
|
||||
.stdout_is("0\n141\n")
|
||||
.stderr_is("csplit: '/5/-10': line number out of range");
|
||||
.stderr_is("csplit: '/5/-10': line number out of range\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -1239,7 +1239,7 @@ fn test_up_to_match_context_underflow() {
|
|||
ucmd.args(&["numbers50.txt", "/5/-10", "-k"])
|
||||
.fails()
|
||||
.stdout_is("0\n141\n")
|
||||
.stderr_is("csplit: '/5/-10': line number out of range");
|
||||
.stderr_is("csplit: '/5/-10': line number out of range\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
.expect("counting splits")
|
||||
|
@ -1256,7 +1256,7 @@ fn test_line_num_range_with_up_to_match1() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "10", "/12/-5"])
|
||||
.fails()
|
||||
.stderr_is("csplit: '/12/-5': line number out of range")
|
||||
.stderr_is("csplit: '/12/-5': line number out of range\n")
|
||||
.stdout_is("18\n0\n123\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
|
@ -1267,7 +1267,7 @@ fn test_line_num_range_with_up_to_match1() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "10", "/12/-5", "-k"])
|
||||
.fails()
|
||||
.stderr_is("csplit: '/12/-5': line number out of range")
|
||||
.stderr_is("csplit: '/12/-5': line number out of range\n")
|
||||
.stdout_is("18\n0\n123\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
|
@ -1286,7 +1286,7 @@ fn test_line_num_range_with_up_to_match2() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "10", "/12/-15"])
|
||||
.fails()
|
||||
.stderr_is("csplit: '/12/-15': line number out of range")
|
||||
.stderr_is("csplit: '/12/-15': line number out of range\n")
|
||||
.stdout_is("18\n0\n123\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
|
@ -1297,7 +1297,7 @@ fn test_line_num_range_with_up_to_match2() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "10", "/12/-15", "-k"])
|
||||
.fails()
|
||||
.stderr_is("csplit: '/12/-15': line number out of range")
|
||||
.stderr_is("csplit: '/12/-15': line number out of range\n")
|
||||
.stdout_is("18\n0\n123\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
|
@ -1315,7 +1315,7 @@ fn test_line_num_range_with_up_to_match3() {
|
|||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
ucmd.args(&["numbers50.txt", "10", "/10/", "-k"])
|
||||
.fails()
|
||||
.stderr_is("csplit: '/10/': match not found")
|
||||
.stderr_is("csplit: '/10/': match not found\n")
|
||||
.stdout_is("18\n123\n");
|
||||
|
||||
let count = glob(&at.plus_as_string("xx*"))
|
||||
|
|
|
@ -325,7 +325,7 @@ fn test_nocreat_causes_failure_when_outfile_not_present() {
|
|||
.pipe_in("")
|
||||
.fails()
|
||||
.stderr_only(
|
||||
"dd: failed to open 'this-file-does-not-exist.txt': No such file or directory",
|
||||
"dd: failed to open 'this-file-does-not-exist.txt': No such file or directory\n",
|
||||
);
|
||||
assert!(!fix.file_exists(fname));
|
||||
}
|
||||
|
@ -1286,12 +1286,12 @@ fn test_invalid_number_arg_gnu_compatibility() {
|
|||
new_ucmd!()
|
||||
.args(&[format!("{}=", command)])
|
||||
.fails()
|
||||
.stderr_is("dd: invalid number: ‘’");
|
||||
.stderr_is("dd: invalid number: ‘’\n");
|
||||
|
||||
new_ucmd!()
|
||||
.args(&[format!("{}=29d", command)])
|
||||
.fails()
|
||||
.stderr_is("dd: invalid number: ‘29d’");
|
||||
.stderr_is("dd: invalid number: ‘29d’\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1317,19 +1317,19 @@ fn test_invalid_file_arg_gnu_compatibility() {
|
|||
new_ucmd!()
|
||||
.args(&["if="])
|
||||
.fails()
|
||||
.stderr_is("dd: failed to open '': No such file or directory");
|
||||
.stderr_is("dd: failed to open '': No such file or directory\n");
|
||||
|
||||
new_ucmd!()
|
||||
.args(&["if=81as9bn8as9g302az8ns9.pdf.zip.pl.com"])
|
||||
.fails()
|
||||
.stderr_is(
|
||||
"dd: failed to open '81as9bn8as9g302az8ns9.pdf.zip.pl.com': No such file or directory",
|
||||
"dd: failed to open '81as9bn8as9g302az8ns9.pdf.zip.pl.com': No such file or directory\n",
|
||||
);
|
||||
|
||||
new_ucmd!()
|
||||
.args(&["of="])
|
||||
.fails()
|
||||
.stderr_is("dd: failed to open '': No such file or directory");
|
||||
.stderr_is("dd: failed to open '': No such file or directory\n");
|
||||
|
||||
new_ucmd!()
|
||||
.args(&["of=81as9bn8as9g302az8ns9.pdf.zip.pl.com"])
|
||||
|
|
|
@ -321,13 +321,13 @@ fn test_include_exclude_same_type() {
|
|||
new_ucmd!()
|
||||
.args(&["-t", "ext4", "-x", "ext4"])
|
||||
.fails()
|
||||
.stderr_is("df: file system type 'ext4' both selected and excluded");
|
||||
.stderr_is("df: file system type 'ext4' both selected and excluded\n");
|
||||
new_ucmd!()
|
||||
.args(&["-t", "ext4", "-x", "ext4", "-t", "ext3", "-x", "ext3"])
|
||||
.fails()
|
||||
.stderr_is(
|
||||
"df: file system type 'ext4' both selected and excluded\n\
|
||||
df: file system type 'ext3' both selected and excluded",
|
||||
df: file system type 'ext3' both selected and excluded\n",
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -853,7 +853,7 @@ fn test_nonexistent_file() {
|
|||
new_ucmd!()
|
||||
.arg("does-not-exist")
|
||||
.fails()
|
||||
.stderr_only("df: does-not-exist: No such file or directory");
|
||||
.stderr_only("df: does-not-exist: No such file or directory\n");
|
||||
new_ucmd!()
|
||||
.args(&["--output=file", "does-not-exist", "."])
|
||||
.fails()
|
||||
|
|
|
@ -99,20 +99,20 @@ fn test_du_invalid_size() {
|
|||
.arg("/tmp")
|
||||
.fails()
|
||||
.code_is(1)
|
||||
.stderr_only(format!("du: invalid suffix in --{} argument '1fb4t'", s));
|
||||
.stderr_only(format!("du: invalid suffix in --{} argument '1fb4t'\n", s));
|
||||
ts.ucmd()
|
||||
.arg(format!("--{}=x", s))
|
||||
.arg("/tmp")
|
||||
.fails()
|
||||
.code_is(1)
|
||||
.stderr_only(format!("du: invalid --{} argument 'x'", s));
|
||||
.stderr_only(format!("du: invalid --{} argument 'x'\n", s));
|
||||
#[cfg(not(target_pointer_width = "128"))]
|
||||
ts.ucmd()
|
||||
.arg(format!("--{}=1Y", s))
|
||||
.arg("/tmp")
|
||||
.fails()
|
||||
.code_is(1)
|
||||
.stderr_only(format!("du: --{} argument '1Y' too large", s));
|
||||
.stderr_only(format!("du: --{} argument '1Y' too large\n", s));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ fn test_unset_invalid_variables() {
|
|||
// with this error: Error { kind: InvalidInput, message: "nul byte found in provided data" }
|
||||
for var in ["", "a=b"] {
|
||||
new_ucmd!().arg("-u").arg(var).run().stderr_only(format!(
|
||||
"env: cannot unset {}: Invalid argument",
|
||||
"env: cannot unset {}: Invalid argument\n",
|
||||
var.quote()
|
||||
));
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ fn test_empty_name() {
|
|||
.arg("-i")
|
||||
.arg("=xyz")
|
||||
.run()
|
||||
.stderr_only("env: warning: no name specified for value 'xyz'");
|
||||
.stderr_only("env: warning: no name specified for value 'xyz'\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
@ -134,7 +134,7 @@ fn test_check_file_not_found_warning() {
|
|||
.arg(at.subdir.join("testf.sha1"))
|
||||
.succeeds()
|
||||
.stdout_is("sha1sum: testf: No such file or directory\ntestf: FAILED open or read\n")
|
||||
.stderr_is("sha1sum: warning: 1 listed file could not be read");
|
||||
.stderr_is("sha1sum: warning: 1 listed file could not be read\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
@ -288,21 +288,21 @@ fn test_head_invalid_num() {
|
|||
new_ucmd!()
|
||||
.args(&["-c", "1024R", "emptyfile.txt"])
|
||||
.fails()
|
||||
.stderr_is("head: invalid number of bytes: '1024R'");
|
||||
.stderr_is("head: invalid number of bytes: '1024R'\n");
|
||||
new_ucmd!()
|
||||
.args(&["-n", "1024R", "emptyfile.txt"])
|
||||
.fails()
|
||||
.stderr_is("head: invalid number of lines: '1024R'");
|
||||
.stderr_is("head: invalid number of lines: '1024R'\n");
|
||||
#[cfg(not(target_pointer_width = "128"))]
|
||||
new_ucmd!()
|
||||
.args(&["-c", "1Y", "emptyfile.txt"])
|
||||
.fails()
|
||||
.stderr_is("head: invalid number of bytes: '1Y': Value too large for defined data type");
|
||||
.stderr_is("head: invalid number of bytes: '1Y': Value too large for defined data type\n");
|
||||
#[cfg(not(target_pointer_width = "128"))]
|
||||
new_ucmd!()
|
||||
.args(&["-n", "1Y", "emptyfile.txt"])
|
||||
.fails()
|
||||
.stderr_is("head: invalid number of lines: '1Y': Value too large for defined data type");
|
||||
.stderr_is("head: invalid number of lines: '1Y': Value too large for defined data type\n");
|
||||
#[cfg(target_pointer_width = "32")]
|
||||
{
|
||||
let sizes = ["1000G", "10T"];
|
||||
|
@ -317,13 +317,13 @@ fn test_head_invalid_num() {
|
|||
new_ucmd!()
|
||||
.args(&["-c", size])
|
||||
.fails()
|
||||
.stderr_is("head: out of range integral type conversion attempted: number of bytes is too large");
|
||||
.stderr_is("head: out of range integral type conversion attempted: number of bytes is too large\n");
|
||||
}
|
||||
}
|
||||
new_ucmd!()
|
||||
.args(&["-c", "-³"])
|
||||
.fails()
|
||||
.stderr_is("head: invalid number of bytes: '³'");
|
||||
.stderr_is("head: invalid number of bytes: '³'\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
@ -206,7 +206,7 @@ fn tab_multi_character() {
|
|||
.arg("-t")
|
||||
.arg("э")
|
||||
.fails()
|
||||
.stderr_is("join: multi-character tab э");
|
||||
.stderr_is("join: multi-character tab э\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -282,7 +282,7 @@ fn empty_format() {
|
|||
.arg("-o")
|
||||
.arg("")
|
||||
.fails()
|
||||
.stderr_is("join: invalid file number in field spec: ''");
|
||||
.stderr_is("join: invalid file number in field spec: ''\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -332,7 +332,7 @@ fn wrong_line_order() {
|
|||
.fails()
|
||||
.stdout_contains("7 g f 4 fg")
|
||||
.stderr_is(&format!(
|
||||
"{0} {1}: fields_4.txt:5: is not sorted: 11 g 5 gh\n{0} {1}: input is not in sorted order",
|
||||
"{0} {1}: fields_4.txt:5: is not sorted: 11 g 5 gh\n{0} {1}: input is not in sorted order\n",
|
||||
ts.bin_path.to_string_lossy(),
|
||||
ts.util_name
|
||||
));
|
||||
|
@ -344,7 +344,7 @@ fn wrong_line_order() {
|
|||
.fails()
|
||||
.stdout_does_not_contain("7 g f 4 fg")
|
||||
.stderr_is(&format!(
|
||||
"{0}: fields_4.txt:5: is not sorted: 11 g 5 gh",
|
||||
"{0}: fields_4.txt:5: is not sorted: 11 g 5 gh\n",
|
||||
ts.util_name
|
||||
));
|
||||
}
|
||||
|
@ -358,7 +358,7 @@ fn both_files_wrong_line_order() {
|
|||
.fails()
|
||||
.stdout_contains("5 e 3 ef")
|
||||
.stderr_is(&format!(
|
||||
"{0} {1}: fields_5.txt:4: is not sorted: 3\n{0} {1}: fields_4.txt:5: is not sorted: 11 g 5 gh\n{0} {1}: input is not in sorted order",
|
||||
"{0} {1}: fields_5.txt:4: is not sorted: 3\n{0} {1}: fields_4.txt:5: is not sorted: 11 g 5 gh\n{0} {1}: input is not in sorted order\n",
|
||||
ts.bin_path.to_string_lossy(),
|
||||
ts.util_name
|
||||
));
|
||||
|
@ -370,7 +370,7 @@ fn both_files_wrong_line_order() {
|
|||
.fails()
|
||||
.stdout_does_not_contain("5 e 3 ef")
|
||||
.stderr_is(&format!(
|
||||
"{0}: fields_5.txt:4: is not sorted: 3",
|
||||
"{0}: fields_5.txt:4: is not sorted: 3\n",
|
||||
ts.util_name
|
||||
));
|
||||
}
|
||||
|
@ -453,7 +453,7 @@ fn non_unicode() {
|
|||
.arg("non-unicode_2.bin")
|
||||
.fails()
|
||||
.stderr_is(
|
||||
"join: unprintable field separators are only supported on unix-like platforms",
|
||||
"join: unprintable field separators are only supported on unix-like platforms\n",
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ fn test_link_no_circular() {
|
|||
|
||||
ucmd.args(&[link, link])
|
||||
.fails()
|
||||
.stderr_is("link: cannot create link 'test_link_no_circular' to 'test_link_no_circular': No such file or directory");
|
||||
.stderr_is("link: cannot create link 'test_link_no_circular' to 'test_link_no_circular': No such file or directory\n");
|
||||
assert!(!at.file_exists(link));
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,7 @@ fn test_link_nonexistent_file() {
|
|||
|
||||
ucmd.args(&[file, link])
|
||||
.fails()
|
||||
.stderr_only("link: cannot create link 'test_link_nonexistent_file_link' to 'test_link_nonexistent_file': No such file or directory");
|
||||
.stderr_only("link: cannot create link 'test_link_nonexistent_file_link' to 'test_link_nonexistent_file': No such file or directory\n");
|
||||
assert!(!at.file_exists(file));
|
||||
assert!(!at.file_exists(link));
|
||||
}
|
||||
|
|
|
@ -441,7 +441,7 @@ fn test_symlink_missing_destination() {
|
|||
at.touch(file);
|
||||
|
||||
ucmd.args(&["-s", "-T", file]).fails().stderr_is(format!(
|
||||
"ln: missing destination file operand after '{}'",
|
||||
"ln: missing destination file operand after '{}'\n",
|
||||
file
|
||||
));
|
||||
}
|
||||
|
|
|
@ -685,7 +685,7 @@ fn test_ls_width() {
|
|||
.args(&option.split(' ').collect::<Vec<_>>())
|
||||
.arg("-C")
|
||||
.fails()
|
||||
.stderr_only("ls: invalid line width: '1a'");
|
||||
.stderr_only("ls: invalid line width: '1a'\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -736,7 +736,7 @@ fn test_ls_columns() {
|
|||
.arg("-C")
|
||||
.succeeds()
|
||||
.stdout_is("test-columns-1 test-columns-2 test-columns-3 test-columns-4\n")
|
||||
.stderr_is("ls: ignoring invalid width in environment variable COLUMNS: 'garbage'");
|
||||
.stderr_is("ls: ignoring invalid width in environment variable COLUMNS: 'garbage'\n");
|
||||
}
|
||||
scene
|
||||
.ucmd()
|
||||
|
|
|
@ -7,7 +7,7 @@ fn test_invalid_arg() {
|
|||
|
||||
#[test]
|
||||
fn test_create_fifo_missing_operand() {
|
||||
new_ucmd!().fails().stderr_is("mkfifo: missing operand");
|
||||
new_ucmd!().fails().stderr_is("mkfifo: missing operand\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -46,5 +46,5 @@ fn test_create_one_fifo_already_exists() {
|
|||
.arg("abcdef")
|
||||
.arg("abcdef")
|
||||
.fails()
|
||||
.stderr_is("mkfifo: cannot create fifo 'abcdef': File exists");
|
||||
.stderr_is("mkfifo: cannot create fifo 'abcdef': File exists\n");
|
||||
}
|
||||
|
|
|
@ -275,7 +275,7 @@ fn test_mv_same_file_not_dot_dir() {
|
|||
|
||||
at.mkdir(dir);
|
||||
ucmd.arg(dir).arg(dir).fails().stderr_is(format!(
|
||||
"mv: cannot move '{d}' to a subdirectory of itself, '{d}/{d}'",
|
||||
"mv: cannot move '{d}' to a subdirectory of itself, '{d}/{d}'\n",
|
||||
d = dir,
|
||||
));
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@ fn test_from_iec_i_requires_suffix() {
|
|||
.fails()
|
||||
.code_is(2)
|
||||
.stderr_is(format!(
|
||||
"numfmt: missing 'i' suffix in input: '{}' (e.g Ki/Mi/Gi)",
|
||||
"numfmt: missing 'i' suffix in input: '{}' (e.g Ki/Mi/Gi)\n",
|
||||
number
|
||||
));
|
||||
}
|
||||
|
@ -151,7 +151,7 @@ fn test_header_error_if_non_numeric() {
|
|||
new_ucmd!()
|
||||
.args(&["--header=two"])
|
||||
.run()
|
||||
.stderr_is("numfmt: invalid header value 'two'");
|
||||
.stderr_is("numfmt: invalid header value 'two'\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -159,7 +159,7 @@ fn test_header_error_if_0() {
|
|||
new_ucmd!()
|
||||
.args(&["--header=0"])
|
||||
.run()
|
||||
.stderr_is("numfmt: invalid header value '0'");
|
||||
.stderr_is("numfmt: invalid header value '0'\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -167,7 +167,7 @@ fn test_header_error_if_negative() {
|
|||
new_ucmd!()
|
||||
.args(&["--header=-3"])
|
||||
.run()
|
||||
.stderr_is("numfmt: invalid header value '-3'");
|
||||
.stderr_is("numfmt: invalid header value '-3'\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -458,7 +458,7 @@ fn test_delimiter_must_not_be_more_than_one_character() {
|
|||
new_ucmd!()
|
||||
.args(&["--delimiter", "sad"])
|
||||
.fails()
|
||||
.stderr_is("numfmt: the delimiter must be a single character");
|
||||
.stderr_is("numfmt: the delimiter must be a single character\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
@ -854,7 +854,7 @@ fn test_od_invalid_bytes() {
|
|||
.fails()
|
||||
.code_is(1)
|
||||
.stderr_only(format!(
|
||||
"od: invalid {} argument '{}'",
|
||||
"od: invalid {} argument '{}'\n",
|
||||
option, INVALID_SIZE
|
||||
));
|
||||
|
||||
|
@ -864,7 +864,7 @@ fn test_od_invalid_bytes() {
|
|||
.fails()
|
||||
.code_is(1)
|
||||
.stderr_only(format!(
|
||||
"od: invalid suffix in {} argument '{}'",
|
||||
"od: invalid suffix in {} argument '{}'\n",
|
||||
option, INVALID_SUFFIX
|
||||
));
|
||||
|
||||
|
@ -874,6 +874,9 @@ fn test_od_invalid_bytes() {
|
|||
.arg("file")
|
||||
.fails()
|
||||
.code_is(1)
|
||||
.stderr_only(format!("od: {} argument '{}' too large", option, BIG_SIZE));
|
||||
.stderr_only(format!(
|
||||
"od: {} argument '{}' too large\n",
|
||||
option, BIG_SIZE
|
||||
));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -163,7 +163,7 @@ fn test_with_valid_page_ranges() {
|
|||
scenario
|
||||
.args(&["--pages=20:5", test_file_path])
|
||||
.fails()
|
||||
.stderr_is("pr: invalid --pages argument '20:5'")
|
||||
.stderr_is("pr: invalid --pages argument '20:5'\n")
|
||||
.stdout_is("");
|
||||
new_ucmd!()
|
||||
.args(&["--pages=1:5", test_file_path])
|
||||
|
@ -172,17 +172,17 @@ fn test_with_valid_page_ranges() {
|
|||
new_ucmd!()
|
||||
.args(&["--pages=-1:5", test_file_path])
|
||||
.fails()
|
||||
.stderr_is("pr: invalid --pages argument '-1:5'")
|
||||
.stderr_is("pr: invalid --pages argument '-1:5'\n")
|
||||
.stdout_is("");
|
||||
new_ucmd!()
|
||||
.args(&["--pages=1:-5", test_file_path])
|
||||
.fails()
|
||||
.stderr_is("pr: invalid --pages argument '1:-5'")
|
||||
.stderr_is("pr: invalid --pages argument '1:-5'\n")
|
||||
.stdout_is("");
|
||||
new_ucmd!()
|
||||
.args(&["--pages=5:1", test_file_path])
|
||||
.fails()
|
||||
.stderr_is("pr: invalid --pages argument '5:1'")
|
||||
.stderr_is("pr: invalid --pages argument '5:1'\n")
|
||||
.stdout_is("");
|
||||
}
|
||||
|
||||
|
@ -364,13 +364,13 @@ fn test_with_mpr_and_column_options() {
|
|||
new_ucmd!()
|
||||
.args(&["--column=2", "-m", "-n", test_file_path])
|
||||
.fails()
|
||||
.stderr_is("pr: cannot specify number of columns when printing in parallel")
|
||||
.stderr_is("pr: cannot specify number of columns when printing in parallel\n")
|
||||
.stdout_is("");
|
||||
|
||||
new_ucmd!()
|
||||
.args(&["-a", "-m", "-n", test_file_path])
|
||||
.fails()
|
||||
.stderr_is("pr: cannot specify both printing across and printing in parallel")
|
||||
.stderr_is("pr: cannot specify both printing across and printing in parallel\n")
|
||||
.stdout_is("");
|
||||
}
|
||||
|
||||
|
|
|
@ -239,7 +239,7 @@ fn test_realpath_when_symlink_is_absolute_and_enoent() {
|
|||
.run()
|
||||
.stdout_contains("\\dir2\\bar\n")
|
||||
.stdout_contains("\\dir2\\baz\n")
|
||||
.stderr_is("realpath: dir1/foo2: No such file or directory");
|
||||
.stderr_is("realpath: dir1/foo2: No such file or directory\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
@ -503,9 +503,7 @@ fn test_rm_force_prompts_order() {
|
|||
child.try_write_in(yes.as_bytes()).unwrap();
|
||||
|
||||
let result = child.wait().unwrap();
|
||||
result
|
||||
.stderr_str_apply(str::trim)
|
||||
.stderr_only("rm: remove regular empty file 'empty'?");
|
||||
result.stderr_only("rm: remove regular empty file 'empty'? ");
|
||||
|
||||
assert!(!at.file_exists(empty_file));
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ fn test_rmdir_nonempty_directory_no_parents() {
|
|||
|
||||
ucmd.arg(DIR)
|
||||
.fails()
|
||||
.stderr_is(format!("rmdir: failed to remove 'dir': {}", NOT_EMPTY));
|
||||
.stderr_is(format!("rmdir: failed to remove 'dir': {}\n", NOT_EMPTY));
|
||||
|
||||
assert!(at.dir_exists(DIR));
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ fn test_rmdir_nonempty_directory_with_parents() {
|
|||
at.touch(NESTED_DIR_FILE);
|
||||
|
||||
ucmd.arg("-p").arg(NESTED_DIR).fails().stderr_is(format!(
|
||||
"rmdir: failed to remove 'dir/ect/ory': {}",
|
||||
"rmdir: failed to remove 'dir/ect/ory': {}\n",
|
||||
NOT_EMPTY
|
||||
));
|
||||
|
||||
|
@ -119,7 +119,7 @@ fn test_rmdir_not_a_directory() {
|
|||
.fails()
|
||||
.no_stdout()
|
||||
.stderr_is(format!(
|
||||
"rmdir: failed to remove 'file': {}",
|
||||
"rmdir: failed to remove 'file': {}\n",
|
||||
NOT_A_DIRECTORY
|
||||
));
|
||||
}
|
||||
|
@ -152,7 +152,7 @@ fn test_verbose_multi() {
|
|||
rmdir: removing directory, 'dir'\n",
|
||||
)
|
||||
.stderr_is(format!(
|
||||
"rmdir: failed to remove 'does_not_exist': {}",
|
||||
"rmdir: failed to remove 'does_not_exist': {}\n",
|
||||
NOT_FOUND
|
||||
));
|
||||
}
|
||||
|
@ -171,7 +171,10 @@ fn test_verbose_nested_failure() {
|
|||
"rmdir: removing directory, 'dir/ect/ory'\n\
|
||||
rmdir: removing directory, 'dir/ect'\n",
|
||||
)
|
||||
.stderr_is(format!("rmdir: failed to remove 'dir/ect': {}", NOT_EMPTY));
|
||||
.stderr_is(format!(
|
||||
"rmdir: failed to remove 'dir/ect': {}\n",
|
||||
NOT_EMPTY
|
||||
));
|
||||
}
|
||||
|
||||
#[cfg(unix)]
|
||||
|
@ -211,7 +214,7 @@ fn test_rmdir_remove_symlink_file() {
|
|||
at.symlink_file("file", "fl");
|
||||
|
||||
ucmd.arg("fl/").fails().stderr_is(format!(
|
||||
"rmdir: failed to remove 'fl/': {}",
|
||||
"rmdir: failed to remove 'fl/': {}\n",
|
||||
NOT_A_DIRECTORY
|
||||
));
|
||||
}
|
||||
|
@ -227,7 +230,7 @@ fn test_rmdir_remove_symlink_dir() {
|
|||
|
||||
ucmd.arg("dl/")
|
||||
.fails()
|
||||
.stderr_is("rmdir: failed to remove 'dl/': Symbolic link not followed");
|
||||
.stderr_is("rmdir: failed to remove 'dl/': Symbolic link not followed\n");
|
||||
}
|
||||
|
||||
#[cfg(any(target_os = "linux", target_os = "android"))]
|
||||
|
@ -239,5 +242,5 @@ fn test_rmdir_remove_symlink_dangling() {
|
|||
|
||||
ucmd.arg("dl/")
|
||||
.fails()
|
||||
.stderr_is("rmdir: failed to remove 'dl/': Symbolic link not followed");
|
||||
.stderr_is("rmdir: failed to remove 'dl/': Symbolic link not followed\n");
|
||||
}
|
||||
|
|
|
@ -63,14 +63,14 @@ fn test_invalid_buffer_size() {
|
|||
.arg("asd")
|
||||
.fails()
|
||||
.code_is(2)
|
||||
.stderr_only("sort: invalid --buffer-size argument 'asd'");
|
||||
.stderr_only("sort: invalid --buffer-size argument 'asd'\n");
|
||||
|
||||
new_ucmd!()
|
||||
.arg("-S")
|
||||
.arg("100f")
|
||||
.fails()
|
||||
.code_is(2)
|
||||
.stderr_only("sort: invalid suffix in --buffer-size argument '100f'");
|
||||
.stderr_only("sort: invalid suffix in --buffer-size argument '100f'\n");
|
||||
|
||||
#[cfg(not(target_pointer_width = "128"))]
|
||||
new_ucmd!()
|
||||
|
@ -80,7 +80,7 @@ fn test_invalid_buffer_size() {
|
|||
.arg("ext_sort.txt")
|
||||
.fails()
|
||||
.code_is(2)
|
||||
.stderr_only("sort: --buffer-size argument '1Y' too large");
|
||||
.stderr_only("sort: --buffer-size argument '1Y' too large\n");
|
||||
|
||||
#[cfg(target_pointer_width = "32")]
|
||||
{
|
||||
|
@ -94,7 +94,7 @@ fn test_invalid_buffer_size() {
|
|||
.fails()
|
||||
.code_is(2)
|
||||
.stderr_only(format!(
|
||||
"sort: --buffer-size argument '{}' too large",
|
||||
"sort: --buffer-size argument '{}' too large\n",
|
||||
buffer_size
|
||||
));
|
||||
}
|
||||
|
@ -529,7 +529,7 @@ fn test_keys_invalid_field() {
|
|||
new_ucmd!()
|
||||
.args(&["-k", "1."])
|
||||
.fails()
|
||||
.stderr_only("sort: failed to parse key '1.': failed to parse character index '': cannot parse integer from empty string");
|
||||
.stderr_only("sort: failed to parse key '1.': failed to parse character index '': cannot parse integer from empty string\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -537,7 +537,7 @@ fn test_keys_invalid_field_option() {
|
|||
new_ucmd!()
|
||||
.args(&["-k", "1.1x"])
|
||||
.fails()
|
||||
.stderr_only("sort: failed to parse key '1.1x': invalid option: 'x'");
|
||||
.stderr_only("sort: failed to parse key '1.1x': invalid option: 'x'\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -545,7 +545,7 @@ fn test_keys_invalid_field_zero() {
|
|||
new_ucmd!()
|
||||
.args(&["-k", "0.1"])
|
||||
.fails()
|
||||
.stderr_only("sort: failed to parse key '0.1': field index can not be 0");
|
||||
.stderr_only("sort: failed to parse key '0.1': field index can not be 0\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -553,7 +553,7 @@ fn test_keys_invalid_char_zero() {
|
|||
new_ucmd!()
|
||||
.args(&["-k", "1.0"])
|
||||
.fails()
|
||||
.stderr_only("sort: failed to parse key '1.0': invalid character index 0 for the start position of a field");
|
||||
.stderr_only("sort: failed to parse key '1.0': invalid character index 0 for the start position of a field\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -801,7 +801,7 @@ fn test_check_unique() {
|
|||
.pipe_in("A\nA\n")
|
||||
.fails()
|
||||
.code_is(1)
|
||||
.stderr_only("sort: -:2: disorder: A");
|
||||
.stderr_only("sort: -:2: disorder: A\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -847,9 +847,9 @@ fn test_nonexistent_file() {
|
|||
.code_is(2)
|
||||
.stderr_only(
|
||||
#[cfg(not(windows))]
|
||||
"sort: cannot read: nonexistent.txt: No such file or directory",
|
||||
"sort: cannot read: nonexistent.txt: No such file or directory\n",
|
||||
#[cfg(windows)]
|
||||
"sort: cannot read: nonexistent.txt: The system cannot find the file specified.",
|
||||
"sort: cannot read: nonexistent.txt: The system cannot find the file specified.\n",
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -928,7 +928,7 @@ fn test_compress_fail() {
|
|||
"10",
|
||||
])
|
||||
.fails()
|
||||
.stderr_only("sort: couldn't execute compress program: errno 2");
|
||||
.stderr_only("sort: couldn't execute compress program: errno 2\n");
|
||||
// With coverage, it fails with a different error:
|
||||
// "thread 'main' panicked at 'called `Option::unwrap()` on ...
|
||||
// So, don't check the output
|
||||
|
@ -1018,9 +1018,9 @@ fn test_verifies_out_file() {
|
|||
.code_is(2)
|
||||
.stderr_only(
|
||||
#[cfg(not(windows))]
|
||||
"sort: open failed: nonexistent_dir/nonexistent_file: No such file or directory",
|
||||
"sort: open failed: nonexistent_dir/nonexistent_file: No such file or directory\n",
|
||||
#[cfg(windows)]
|
||||
"sort: open failed: nonexistent_dir/nonexistent_file: The system cannot find the path specified.",
|
||||
"sort: open failed: nonexistent_dir/nonexistent_file: The system cannot find the path specified.\n",
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -1047,7 +1047,7 @@ fn test_verifies_input_files() {
|
|||
.args(&["/dev/random", "nonexistent_file"])
|
||||
.fails()
|
||||
.code_is(2)
|
||||
.stderr_is("sort: cannot read: nonexistent_file: No such file or directory");
|
||||
.stderr_is("sort: cannot read: nonexistent_file: No such file or directory\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
@ -320,7 +320,7 @@ fn test_split_lines_number() {
|
|||
.args(&["--lines", "2fb", "file"])
|
||||
.fails()
|
||||
.code_is(1)
|
||||
.stderr_only("split: invalid number of lines: '2fb'");
|
||||
.stderr_only("split: invalid number of lines: '2fb'\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -329,13 +329,15 @@ fn test_split_invalid_bytes_size() {
|
|||
.args(&["-b", "1024R"])
|
||||
.fails()
|
||||
.code_is(1)
|
||||
.stderr_only("split: invalid number of bytes: '1024R'");
|
||||
.stderr_only("split: invalid number of bytes: '1024R'\n");
|
||||
#[cfg(not(target_pointer_width = "128"))]
|
||||
new_ucmd!()
|
||||
.args(&["-b", "1Y"])
|
||||
.fails()
|
||||
.code_is(1)
|
||||
.stderr_only("split: invalid number of bytes: '1Y': Value too large for defined data type");
|
||||
.stderr_only(
|
||||
"split: invalid number of bytes: '1Y': Value too large for defined data type\n",
|
||||
);
|
||||
#[cfg(target_pointer_width = "32")]
|
||||
{
|
||||
let sizes = ["1000G", "10T"];
|
||||
|
@ -357,7 +359,7 @@ fn test_split_chunks_num_chunks_oversized_32() {
|
|||
.args(&["--number", "5000000000", "file"])
|
||||
.fails()
|
||||
.code_is(1)
|
||||
.stderr_only("split: Number of chunks too big");
|
||||
.stderr_only("split: Number of chunks too big\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -367,7 +369,7 @@ fn test_split_stdin_num_chunks() {
|
|||
.args(&["--number=1"])
|
||||
.fails()
|
||||
.code_is(1)
|
||||
.stderr_only("split: -: cannot determine file size");
|
||||
.stderr_only("split: -: cannot determine file size\n");
|
||||
}
|
||||
|
||||
fn file_read(at: &AtPath, filename: &str) -> String {
|
||||
|
@ -457,7 +459,7 @@ fn test_suffixes_exhausted() {
|
|||
new_ucmd!()
|
||||
.args(&["-b", "1", "-a", "1", "asciilowercase.txt"])
|
||||
.fails()
|
||||
.stderr_only("split: output file suffixes exhausted");
|
||||
.stderr_only("split: output file suffixes exhausted\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -699,7 +701,7 @@ fn test_guard_input() {
|
|||
ts.ucmd()
|
||||
.args(&["-C", "6", "xaa"])
|
||||
.fails()
|
||||
.stderr_only("split: 'xaa' would overwrite input; aborting");
|
||||
.stderr_only("split: 'xaa' would overwrite input; aborting\n");
|
||||
assert_eq!(at.read("xaa"), "1\n2\n3\n");
|
||||
}
|
||||
|
||||
|
|
|
@ -61,7 +61,7 @@ fn test_stdbuf_invalid_mode_fails() {
|
|||
.args(&[*option, "1024R", "head"])
|
||||
.fails()
|
||||
.code_is(125)
|
||||
.stderr_only("stdbuf: invalid mode '1024R'");
|
||||
.stderr_only("stdbuf: invalid mode '1024R'\n");
|
||||
#[cfg(not(target_pointer_width = "128"))]
|
||||
new_ucmd!()
|
||||
.args(&[*option, "1Y", "head"])
|
||||
|
|
|
@ -64,7 +64,7 @@ fn test_invalid_file() {
|
|||
|
||||
at.mkdir("a");
|
||||
|
||||
ucmd.arg("a").fails().stderr_is("sum: a: Is a directory");
|
||||
ucmd.arg("a").fails().stderr_is("sum: a: Is a directory\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -73,5 +73,5 @@ fn test_invalid_metadata() {
|
|||
|
||||
ucmd.arg("b")
|
||||
.fails()
|
||||
.stderr_is("sum: b: No such file or directory");
|
||||
.stderr_is("sum: b: No such file or directory\n");
|
||||
}
|
||||
|
|
|
@ -269,7 +269,7 @@ fn test_follow_redirect_stdin_name_retry() {
|
|||
.args(&args)
|
||||
.fails()
|
||||
.no_stdout()
|
||||
.stderr_is("tail: cannot follow '-' by name")
|
||||
.stderr_is("tail: cannot follow '-' by name\n")
|
||||
.code_is(1);
|
||||
args.pop();
|
||||
}
|
||||
|
@ -295,14 +295,14 @@ fn test_stdin_redirect_dir() {
|
|||
.set_stdin(File::open(at.plus("dir")).unwrap())
|
||||
.fails()
|
||||
.no_stdout()
|
||||
.stderr_is("tail: error reading 'standard input': Is a directory")
|
||||
.stderr_is("tail: error reading 'standard input': Is a directory\n")
|
||||
.code_is(1);
|
||||
ts.ucmd()
|
||||
.set_stdin(File::open(at.plus("dir")).unwrap())
|
||||
.arg("-")
|
||||
.fails()
|
||||
.no_stdout()
|
||||
.stderr_is("tail: error reading 'standard input': Is a directory")
|
||||
.stderr_is("tail: error reading 'standard input': Is a directory\n")
|
||||
.code_is(1);
|
||||
}
|
||||
|
||||
|
@ -328,14 +328,14 @@ fn test_stdin_redirect_dir_when_target_os_is_macos() {
|
|||
.set_stdin(File::open(at.plus("dir")).unwrap())
|
||||
.fails()
|
||||
.no_stdout()
|
||||
.stderr_is("tail: cannot open 'standard input' for reading: No such file or directory")
|
||||
.stderr_is("tail: cannot open 'standard input' for reading: No such file or directory\n")
|
||||
.code_is(1);
|
||||
ts.ucmd()
|
||||
.set_stdin(File::open(at.plus("dir")).unwrap())
|
||||
.arg("-")
|
||||
.fails()
|
||||
.no_stdout()
|
||||
.stderr_is("tail: cannot open 'standard input' for reading: No such file or directory")
|
||||
.stderr_is("tail: cannot open 'standard input' for reading: No such file or directory\n")
|
||||
.code_is(1);
|
||||
}
|
||||
|
||||
|
@ -371,7 +371,7 @@ fn test_follow_stdin_name_retry() {
|
|||
.args(&args)
|
||||
.run()
|
||||
.no_stdout()
|
||||
.stderr_is("tail: cannot follow '-' by name")
|
||||
.stderr_is("tail: cannot follow '-' by name\n")
|
||||
.code_is(1);
|
||||
args.pop();
|
||||
}
|
||||
|
@ -827,7 +827,7 @@ fn test_multiple_input_files_missing() {
|
|||
.stdout_is_fixture("foobar_follow_multiple.expected")
|
||||
.stderr_is(
|
||||
"tail: cannot open 'missing1' for reading: No such file or directory\n\
|
||||
tail: cannot open 'missing2' for reading: No such file or directory",
|
||||
tail: cannot open 'missing2' for reading: No such file or directory\n",
|
||||
)
|
||||
.code_is(1);
|
||||
}
|
||||
|
@ -845,7 +845,7 @@ fn test_follow_missing() {
|
|||
.no_stdout()
|
||||
.stderr_is(
|
||||
"tail: cannot open 'missing' for reading: No such file or directory\n\
|
||||
tail: no files remaining",
|
||||
tail: no files remaining\n",
|
||||
)
|
||||
.code_is(1);
|
||||
}
|
||||
|
@ -861,7 +861,7 @@ fn test_follow_name_stdin() {
|
|||
.arg("--follow=name")
|
||||
.arg("-")
|
||||
.run()
|
||||
.stderr_is("tail: cannot follow '-' by name")
|
||||
.stderr_is("tail: cannot follow '-' by name\n")
|
||||
.code_is(1);
|
||||
ts.ucmd()
|
||||
.arg("--follow=name")
|
||||
|
@ -869,7 +869,7 @@ fn test_follow_name_stdin() {
|
|||
.arg("-")
|
||||
.arg("FILE2")
|
||||
.run()
|
||||
.stderr_is("tail: cannot follow '-' by name")
|
||||
.stderr_is("tail: cannot follow '-' by name\n")
|
||||
.code_is(1);
|
||||
}
|
||||
|
||||
|
@ -2523,7 +2523,7 @@ fn test_no_such_file() {
|
|||
new_ucmd!()
|
||||
.arg("missing")
|
||||
.fails()
|
||||
.stderr_is("tail: cannot open 'missing' for reading: No such file or directory")
|
||||
.stderr_is("tail: cannot open 'missing' for reading: No such file or directory\n")
|
||||
.no_stdout()
|
||||
.code_is(1);
|
||||
}
|
||||
|
@ -3448,7 +3448,7 @@ fn test_when_argument_file_is_a_directory() {
|
|||
let at = &ts.fixtures;
|
||||
at.mkdir("dir");
|
||||
|
||||
let expected = "tail: error reading 'dir': Is a directory";
|
||||
let expected = "tail: error reading 'dir': Is a directory\n";
|
||||
ts.ucmd()
|
||||
.arg("dir")
|
||||
.fails()
|
||||
|
@ -3486,7 +3486,7 @@ fn test_when_argument_file_is_a_symlink() {
|
|||
|
||||
at.symlink_file("dir", "dir_link");
|
||||
|
||||
let expected = "tail: error reading 'dir_link': Is a directory";
|
||||
let expected = "tail: error reading 'dir_link': Is a directory\n";
|
||||
ts.ucmd()
|
||||
.arg("dir_link")
|
||||
.fails()
|
||||
|
@ -3504,7 +3504,7 @@ fn test_when_argument_file_is_a_symlink_to_directory_then_error() {
|
|||
at.mkdir("dir");
|
||||
at.symlink_file("dir", "dir_link");
|
||||
|
||||
let expected = "tail: error reading 'dir_link': Is a directory";
|
||||
let expected = "tail: error reading 'dir_link': Is a directory\n";
|
||||
ts.ucmd()
|
||||
.arg("dir_link")
|
||||
.fails()
|
||||
|
@ -3562,17 +3562,17 @@ fn test_when_argument_file_is_non_existent_unix_socket_address_then_error() {
|
|||
|
||||
#[cfg(all(not(target_os = "freebsd"), not(target_os = "macos")))]
|
||||
let expected_stderr = format!(
|
||||
"tail: cannot open '{}' for reading: No such device or address",
|
||||
"tail: cannot open '{}' for reading: No such device or address\n",
|
||||
socket
|
||||
);
|
||||
#[cfg(target_os = "freebsd")]
|
||||
let expected_stderr = format!(
|
||||
"tail: cannot open '{}' for reading: Operation not supported",
|
||||
"tail: cannot open '{}' for reading: Operation not supported\n",
|
||||
socket
|
||||
);
|
||||
#[cfg(target_os = "macos")]
|
||||
let expected_stderr = format!(
|
||||
"tail: cannot open '{}' for reading: Operation not supported on socket",
|
||||
"tail: cannot open '{}' for reading: Operation not supported on socket\n",
|
||||
socket
|
||||
);
|
||||
|
||||
|
|
|
@ -288,7 +288,7 @@ fn test_float_inequality_is_error() {
|
|||
.args(&["123.45", "-ge", "6"])
|
||||
.run()
|
||||
.code_is(2)
|
||||
.stderr_is("test: invalid integer '123.45'");
|
||||
.stderr_is("test: invalid integer '123.45'\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -306,7 +306,7 @@ fn test_invalid_utf8_integer_compare() {
|
|||
|
||||
cmd.run()
|
||||
.code_is(2)
|
||||
.stderr_is("test: invalid integer $'fo\\x80o'");
|
||||
.stderr_is("test: invalid integer $'fo\\x80o'\n");
|
||||
|
||||
let mut cmd = new_ucmd!();
|
||||
cmd.raw.arg(arg);
|
||||
|
@ -314,7 +314,7 @@ fn test_invalid_utf8_integer_compare() {
|
|||
|
||||
cmd.run()
|
||||
.code_is(2)
|
||||
.stderr_is("test: invalid integer $'fo\\x80o'");
|
||||
.stderr_is("test: invalid integer $'fo\\x80o'\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -827,7 +827,7 @@ fn test_erroneous_parenthesized_expression() {
|
|||
.args(&["a", "!=", "(", "b", "-a", "b", ")", "!=", "c"])
|
||||
.run()
|
||||
.code_is(2)
|
||||
.stderr_is("test: extra argument 'b'");
|
||||
.stderr_is("test: extra argument 'b'\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -866,7 +866,7 @@ fn test_bracket_syntax_missing_right_bracket() {
|
|||
ucmd.args(&["1", "-eq"])
|
||||
.run()
|
||||
.code_is(2)
|
||||
.stderr_is("[: missing ']'");
|
||||
.stderr_is("[: missing ']'\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
@ -48,11 +48,11 @@ fn test_verbose() {
|
|||
new_ucmd!()
|
||||
.args(&[verbose_flag, ".1", "sleep", "10"])
|
||||
.fails()
|
||||
.stderr_only("timeout: sending signal TERM to command 'sleep'");
|
||||
.stderr_only("timeout: sending signal TERM to command 'sleep'\n");
|
||||
new_ucmd!()
|
||||
.args(&[verbose_flag, "-s0", "-k.1", ".1", "sleep", "10"])
|
||||
.fails()
|
||||
.stderr_only("timeout: sending signal EXIT to command 'sleep'\ntimeout: sending signal KILL to command 'sleep'");
|
||||
.stderr_only("timeout: sending signal EXIT to command 'sleep'\ntimeout: sending signal KILL to command 'sleep'\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -712,7 +712,7 @@ fn test_touch_no_such_file_error_msg() {
|
|||
let path_str = path.to_str().unwrap();
|
||||
|
||||
new_ucmd!().arg(&path).fails().stderr_only(format!(
|
||||
"touch: cannot touch '{}': No such file or directory",
|
||||
"touch: cannot touch '{}': No such file or directory\n",
|
||||
path_str
|
||||
));
|
||||
}
|
||||
|
@ -755,7 +755,7 @@ fn test_touch_permission_denied_error_msg() {
|
|||
|
||||
let full_path = at.plus_as_string(path_str);
|
||||
ucmd.arg(&full_path).fails().stderr_only(format!(
|
||||
"touch: cannot touch '{}': Permission denied",
|
||||
"touch: cannot touch '{}': Permission denied\n",
|
||||
&full_path
|
||||
));
|
||||
}
|
||||
|
|
|
@ -777,7 +777,10 @@ fn check_against_gnu_tr_tests_range_a_a() {
|
|||
.stdout_is("zbc");
|
||||
}
|
||||
|
||||
// FIXME: Since pr https://github.com/uutils/coreutils/pull/4261:
|
||||
// stderr ends with 2 newlines but expected is only 1.
|
||||
#[test]
|
||||
#[cfg(disabled_until_fixed)]
|
||||
fn check_against_gnu_tr_tests_null() {
|
||||
// ['null', qw(a ''), {IN=>''}, {OUT=>''}, {EXIT=>1},
|
||||
// {ERR=>"$prog: when not truncating set1, string2 must be non-empty\n"}],
|
||||
|
@ -852,7 +855,10 @@ fn check_against_gnu_tr_tests_rep_3() {
|
|||
.stdout_is("1x2");
|
||||
}
|
||||
|
||||
// FIXME: Since pr https://github.com/uutils/coreutils/pull/4261:
|
||||
// stderr ends with 2 newlines but expected is only 1.
|
||||
#[test]
|
||||
#[cfg(disabled_until_fixed)]
|
||||
fn check_against_gnu_tr_tests_o_rep_1() {
|
||||
// # Another couple octal repeat count tests.
|
||||
// ['o-rep-1', qw('[b*08]' '[x*]'), {IN=>''}, {OUT=>''}, {EXIT=>1},
|
||||
|
@ -925,7 +931,7 @@ fn check_against_gnu_tr_tests_bs_at_end() {
|
|||
.pipe_in(r"\")
|
||||
.succeeds()
|
||||
.stdout_is("x")
|
||||
.stderr_is("tr: warning: an unescaped backslash at end of string is not portable");
|
||||
.stderr_is("tr: warning: an unescaped backslash at end of string is not portable\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -938,7 +944,7 @@ fn check_against_gnu_tr_tests_ross_0a() {
|
|||
.args(&["-cs", "[:upper:]", "X[Y*]"])
|
||||
.pipe_in("")
|
||||
.fails()
|
||||
.stderr_is("tr: when translating with complemented character classes,\nstring2 must map all characters in the domain to one");
|
||||
.stderr_is("tr: when translating with complemented character classes,\nstring2 must map all characters in the domain to one\n");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -1026,6 +1032,10 @@ fn check_against_gnu_tr_tests_ross_6() {
|
|||
.stdout_is("");
|
||||
}
|
||||
|
||||
// FIXME: Since pr https://github.com/uutils/coreutils/pull/4261:
|
||||
// stderr ends with 2 newlines but expected is only 1.
|
||||
#[test]
|
||||
#[cfg(disabled_until_fixed)]
|
||||
#[test]
|
||||
fn check_against_gnu_tr_tests_empty_eq() {
|
||||
// # Ensure that these fail.
|
||||
|
@ -1039,6 +1049,10 @@ fn check_against_gnu_tr_tests_empty_eq() {
|
|||
.stderr_is("tr: missing equivalence class character '[==]'\n");
|
||||
}
|
||||
|
||||
// FIXME: Since pr https://github.com/uutils/coreutils/pull/4261:
|
||||
// stderr ends with 2 newlines but expected is only 1.
|
||||
#[test]
|
||||
#[cfg(disabled_until_fixed)]
|
||||
#[test]
|
||||
fn check_against_gnu_tr_tests_empty_cc() {
|
||||
// ['empty-cc', qw('[::]' x), {IN=>''}, {OUT=>''}, {EXIT=>1},
|
||||
|
|
|
@ -308,13 +308,13 @@ fn test_truncate_bytes_size() {
|
|||
.args(&["--size", "1024R", "file"])
|
||||
.fails()
|
||||
.code_is(1)
|
||||
.stderr_only("truncate: Invalid number: '1024R'");
|
||||
.stderr_only("truncate: Invalid number: '1024R'\n");
|
||||
#[cfg(not(target_pointer_width = "128"))]
|
||||
new_ucmd!()
|
||||
.args(&["--size", "1Y", "file"])
|
||||
.fails()
|
||||
.code_is(1)
|
||||
.stderr_only("truncate: Invalid number: '1Y': Value too large for defined data type");
|
||||
.stderr_only("truncate: Invalid number: '1Y': Value too large for defined data type\n");
|
||||
}
|
||||
|
||||
/// Test that truncating a non-existent file creates that file.
|
||||
|
|
|
@ -168,8 +168,8 @@ fn test_invalid_utf8() {
|
|||
.run()
|
||||
.failure()
|
||||
.stderr_only(
|
||||
"uniq: failed to convert line to utf8: invalid utf-8 sequence of 1 bytes from index 0",
|
||||
);
|
||||
"uniq: failed to convert line to utf8: invalid utf-8 sequence of 1 bytes from index 0\n",
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
@ -541,15 +541,13 @@ impl CmdResult {
|
|||
self.stdout_is_any(&possible_values.collect::<Vec<_>>());
|
||||
}
|
||||
|
||||
/// asserts that the command resulted in stderr stream output that equals the
|
||||
/// passed in value, when both are trimmed of trailing whitespace
|
||||
/// assert that the command resulted in stderr stream output that equals the
|
||||
/// passed in value.
|
||||
///
|
||||
/// `stderr_only` is a better choice unless stdout may or will be non-empty
|
||||
#[track_caller]
|
||||
pub fn stderr_is<T: AsRef<str>>(&self, msg: T) -> &Self {
|
||||
assert_eq!(
|
||||
self.stderr_str().trim_end(),
|
||||
String::from(msg.as_ref()).trim_end()
|
||||
);
|
||||
assert_eq!(self.stderr_str(), msg.as_ref());
|
||||
self
|
||||
}
|
||||
|
||||
|
@ -629,7 +627,7 @@ impl CmdResult {
|
|||
#[track_caller]
|
||||
pub fn usage_error<T: AsRef<str>>(&self, msg: T) -> &Self {
|
||||
self.stderr_only(format!(
|
||||
"{0}: {2}\nTry '{1} {0} --help' for more information.",
|
||||
"{0}: {2}\nTry '{1} {0} --help' for more information.\n",
|
||||
self.util_name.as_ref().unwrap(), // This shouldn't be called using a normal command
|
||||
self.bin_path,
|
||||
msg.as_ref()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue