mirror of
https://github.com/uutils/coreutils
synced 2024-11-05 14:21:32 +00:00
Add tests for non-utf8
This commit is contained in:
parent
3acd75bcc4
commit
17f9507e17
9 changed files with 170 additions and 126 deletions
|
@ -662,10 +662,10 @@ fn test_chown_recursive() {
|
|||
|
||||
at.mkdir_all("a/b/c");
|
||||
at.mkdir("z");
|
||||
at.touch(&at.plus_as_string("a/a"));
|
||||
at.touch(&at.plus_as_string("a/b/b"));
|
||||
at.touch(&at.plus_as_string("a/b/c/c"));
|
||||
at.touch(&at.plus_as_string("z/y"));
|
||||
at.touch(at.plus_as_string("a/a"));
|
||||
at.touch(at.plus_as_string("a/b/b"));
|
||||
at.touch(at.plus_as_string("a/b/c/c"));
|
||||
at.touch(at.plus_as_string("z/y"));
|
||||
|
||||
let result = scene
|
||||
.ucmd()
|
||||
|
|
|
@ -39,7 +39,7 @@ fn test_enter_chroot_fails() {
|
|||
fn test_no_such_directory() {
|
||||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
|
||||
at.touch(&at.plus_as_string("a"));
|
||||
at.touch(at.plus_as_string("a"));
|
||||
|
||||
ucmd.arg("a")
|
||||
.fails()
|
||||
|
|
|
@ -15,11 +15,15 @@ use std::os::unix::fs::PermissionsExt;
|
|||
use std::os::windows::fs::symlink_file;
|
||||
#[cfg(not(windows))]
|
||||
use std::path::Path;
|
||||
#[cfg(target_os = "linux")]
|
||||
use std::path::PathBuf;
|
||||
|
||||
#[cfg(any(target_os = "linux", target_os = "android"))]
|
||||
use filetime::FileTime;
|
||||
#[cfg(any(target_os = "linux", target_os = "android"))]
|
||||
use rlimit::Resource;
|
||||
#[cfg(target_os = "linux")]
|
||||
use std::ffi::OsString;
|
||||
#[cfg(any(target_os = "linux", target_os = "android"))]
|
||||
use std::fs as std_fs;
|
||||
use std::thread::sleep;
|
||||
|
@ -91,7 +95,7 @@ fn test_cp_existing_target() {
|
|||
assert_eq!(at.read(TEST_EXISTING_FILE), "Hello, World!\n");
|
||||
|
||||
// No backup should have been created
|
||||
assert!(!at.file_exists(&format!("{TEST_EXISTING_FILE}~")));
|
||||
assert!(!at.file_exists(format!("{TEST_EXISTING_FILE}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -636,7 +640,7 @@ fn test_cp_backup_none() {
|
|||
.no_stderr();
|
||||
|
||||
assert_eq!(at.read(TEST_HOW_ARE_YOU_SOURCE), "Hello, World!\n");
|
||||
assert!(!at.file_exists(&format!("{TEST_HOW_ARE_YOU_SOURCE}~")));
|
||||
assert!(!at.file_exists(format!("{TEST_HOW_ARE_YOU_SOURCE}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -650,7 +654,7 @@ fn test_cp_backup_off() {
|
|||
.no_stderr();
|
||||
|
||||
assert_eq!(at.read(TEST_HOW_ARE_YOU_SOURCE), "Hello, World!\n");
|
||||
assert!(!at.file_exists(&format!("{TEST_HOW_ARE_YOU_SOURCE}~")));
|
||||
assert!(!at.file_exists(format!("{TEST_HOW_ARE_YOU_SOURCE}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -700,7 +704,7 @@ fn test_cp_deref() {
|
|||
.join(TEST_HELLO_WORLD_SOURCE_SYMLINK);
|
||||
// unlike -P/--no-deref, we expect a file, not a link
|
||||
assert!(at.file_exists(
|
||||
&path_to_new_symlink
|
||||
path_to_new_symlink
|
||||
.clone()
|
||||
.into_os_string()
|
||||
.into_string()
|
||||
|
@ -1062,7 +1066,7 @@ fn test_cp_deref_folder_to_folder() {
|
|||
.join(TEST_COPY_TO_FOLDER_NEW)
|
||||
.join(TEST_HELLO_WORLD_SOURCE_SYMLINK);
|
||||
assert!(at.file_exists(
|
||||
&path_to_new_symlink
|
||||
path_to_new_symlink
|
||||
.clone()
|
||||
.into_os_string()
|
||||
.into_string()
|
||||
|
@ -1225,8 +1229,8 @@ fn test_cp_archive_recursive() {
|
|||
let file_2 = at.subdir.join(TEST_COPY_TO_FOLDER).join("2");
|
||||
let file_2_link = at.subdir.join(TEST_COPY_TO_FOLDER).join("2.link");
|
||||
|
||||
at.touch(&file_1.to_string_lossy());
|
||||
at.touch(&file_2.to_string_lossy());
|
||||
at.touch(file_1);
|
||||
at.touch(file_2);
|
||||
|
||||
at.symlink_file("1", &file_1_link.to_string_lossy());
|
||||
at.symlink_file("2", &file_2_link.to_string_lossy());
|
||||
|
@ -1252,18 +1256,8 @@ fn test_cp_archive_recursive() {
|
|||
.run();
|
||||
|
||||
println!("ls dest {}", result.stdout_str());
|
||||
assert!(at.file_exists(
|
||||
&at.subdir
|
||||
.join(TEST_COPY_TO_FOLDER_NEW)
|
||||
.join("1")
|
||||
.to_string_lossy()
|
||||
));
|
||||
assert!(at.file_exists(
|
||||
&at.subdir
|
||||
.join(TEST_COPY_TO_FOLDER_NEW)
|
||||
.join("2")
|
||||
.to_string_lossy()
|
||||
));
|
||||
assert!(at.file_exists(at.subdir.join(TEST_COPY_TO_FOLDER_NEW).join("1")));
|
||||
assert!(at.file_exists(at.subdir.join(TEST_COPY_TO_FOLDER_NEW).join("2")));
|
||||
|
||||
assert!(at.is_symlink(
|
||||
&at.subdir
|
||||
|
@ -1672,7 +1666,7 @@ fn test_cp_reflink_always_override() {
|
|||
let dst_path: &str = &vec![MOUNTPOINT, USERDIR, "dst"].concat();
|
||||
|
||||
scene.fixtures.mkdir(ROOTDIR);
|
||||
scene.fixtures.mkdir(&vec![ROOTDIR, USERDIR].concat());
|
||||
scene.fixtures.mkdir(vec![ROOTDIR, USERDIR].concat());
|
||||
|
||||
// Setup:
|
||||
// Because neither `mkfs.btrfs` not btrfs `mount` options allow us to have a mountpoint owned
|
||||
|
@ -2532,3 +2526,51 @@ fn test_src_base_dot() {
|
|||
.no_stdout();
|
||||
assert!(!at.dir_exists("y/x"));
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
fn non_utf8_name(suffix: &str) -> OsString {
|
||||
use std::os::unix::ffi::OsStringExt;
|
||||
let mut name = OsString::from_vec(vec![0xff, 0xff]);
|
||||
name.push(suffix);
|
||||
name
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[test]
|
||||
fn test_non_utf8_src() {
|
||||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
let src = non_utf8_name("src");
|
||||
std::fs::File::create(at.plus(&src)).unwrap();
|
||||
ucmd.args(&[src, "dest".into()])
|
||||
.succeeds()
|
||||
.no_stderr()
|
||||
.no_stdout();
|
||||
assert!(at.file_exists("dest"));
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[test]
|
||||
fn test_non_utf8_dest() {
|
||||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
let dest = non_utf8_name("dest");
|
||||
ucmd.args(&[TEST_HELLO_WORLD_SOURCE.as_ref(), &*dest])
|
||||
.succeeds()
|
||||
.no_stderr()
|
||||
.no_stdout();
|
||||
assert!(at.file_exists(dest));
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[test]
|
||||
fn test_non_utf8_target() {
|
||||
let (at, mut ucmd) = at_and_ucmd!();
|
||||
let dest = non_utf8_name("dest");
|
||||
at.mkdir(&dest);
|
||||
ucmd.args(&["-t".as_ref(), &*dest, TEST_HELLO_WORLD_SOURCE.as_ref()])
|
||||
.succeeds()
|
||||
.no_stderr()
|
||||
.no_stdout();
|
||||
let mut copied_file = PathBuf::from(dest);
|
||||
copied_file.push(TEST_HELLO_WORLD_SOURCE);
|
||||
assert!(at.file_exists(copied_file));
|
||||
}
|
||||
|
|
|
@ -28,8 +28,8 @@ fn test_install_basic() {
|
|||
|
||||
assert!(at.file_exists(file1));
|
||||
assert!(at.file_exists(file2));
|
||||
assert!(at.file_exists(&format!("{dir}/{file1}")));
|
||||
assert!(at.file_exists(&format!("{dir}/{file2}")));
|
||||
assert!(at.file_exists(format!("{dir}/{file1}")));
|
||||
assert!(at.file_exists(format!("{dir}/{file2}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -76,7 +76,7 @@ fn test_install_unimplemented_arg() {
|
|||
.fails()
|
||||
.stderr_contains("Unimplemented");
|
||||
|
||||
assert!(!at.file_exists(&format!("{dir}/{file}")));
|
||||
assert!(!at.file_exists(format!("{dir}/{file}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -314,7 +314,7 @@ fn test_install_target_new_file() {
|
|||
.no_stderr();
|
||||
|
||||
assert!(at.file_exists(file));
|
||||
assert!(at.file_exists(&format!("{dir}/{file}")));
|
||||
assert!(at.file_exists(format!("{dir}/{file}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -341,7 +341,7 @@ fn test_install_target_new_file_with_group() {
|
|||
|
||||
result.success();
|
||||
assert!(at.file_exists(file));
|
||||
assert!(at.file_exists(&format!("{dir}/{file}")));
|
||||
assert!(at.file_exists(format!("{dir}/{file}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -368,7 +368,7 @@ fn test_install_target_new_file_with_owner() {
|
|||
|
||||
result.success();
|
||||
assert!(at.file_exists(file));
|
||||
assert!(at.file_exists(&format!("{dir}/{file}")));
|
||||
assert!(at.file_exists(format!("{dir}/{file}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -447,13 +447,13 @@ fn test_install_nested_paths_copy_file() {
|
|||
|
||||
at.mkdir(dir1);
|
||||
at.mkdir(dir2);
|
||||
at.touch(&format!("{dir1}/{file1}"));
|
||||
at.touch(format!("{dir1}/{file1}"));
|
||||
|
||||
ucmd.arg(format!("{dir1}/{file1}"))
|
||||
.arg(dir2)
|
||||
.succeeds()
|
||||
.no_stderr();
|
||||
assert!(at.file_exists(&format!("{dir2}/{file1}")));
|
||||
assert!(at.file_exists(format!("{dir2}/{file1}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -487,7 +487,7 @@ fn test_install_failing_omitting_directory() {
|
|||
.fails()
|
||||
.code_is(1)
|
||||
.stderr_contains("omitting directory");
|
||||
assert!(at.file_exists(&format!("{dir3}/{file1}")));
|
||||
assert!(at.file_exists(format!("{dir3}/{file1}")));
|
||||
|
||||
// install also fails, when only one source param is given
|
||||
scene
|
||||
|
@ -785,7 +785,7 @@ fn test_install_creating_leading_dirs_with_single_source_and_target_dir() {
|
|||
.succeeds()
|
||||
.no_stderr();
|
||||
|
||||
assert!(at.file_exists(&format!("{target_dir}/{source1}")));
|
||||
assert!(at.file_exists(format!("{target_dir}/{source1}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -863,8 +863,8 @@ fn test_install_dir() {
|
|||
|
||||
assert!(at.file_exists(file1));
|
||||
assert!(at.file_exists(file2));
|
||||
assert!(at.file_exists(&format!("{dir}/{file1}")));
|
||||
assert!(at.file_exists(&format!("{dir}/{file2}")));
|
||||
assert!(at.file_exists(format!("{dir}/{file1}")));
|
||||
assert!(at.file_exists(format!("{dir}/{file2}")));
|
||||
}
|
||||
//
|
||||
// test backup functionality
|
||||
|
@ -888,7 +888,7 @@ fn test_install_backup_short_no_args_files() {
|
|||
|
||||
assert!(at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}~")));
|
||||
assert!(at.file_exists(format!("{file_b}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -913,7 +913,7 @@ fn test_install_backup_short_no_args_file_to_dir() {
|
|||
|
||||
assert!(at.file_exists(file));
|
||||
assert!(at.file_exists(&expect));
|
||||
assert!(at.file_exists(&format!("{expect}~")));
|
||||
assert!(at.file_exists(format!("{expect}~")));
|
||||
}
|
||||
|
||||
// Long --backup option is tested separately as it requires a slightly different
|
||||
|
@ -938,7 +938,7 @@ fn test_install_backup_long_no_args_files() {
|
|||
|
||||
assert!(at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}~")));
|
||||
assert!(at.file_exists(format!("{file_b}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -963,7 +963,7 @@ fn test_install_backup_long_no_args_file_to_dir() {
|
|||
|
||||
assert!(at.file_exists(file));
|
||||
assert!(at.file_exists(&expect));
|
||||
assert!(at.file_exists(&format!("{expect}~")));
|
||||
assert!(at.file_exists(format!("{expect}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -988,7 +988,7 @@ fn test_install_backup_short_custom_suffix() {
|
|||
|
||||
assert!(at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}{suffix}")));
|
||||
assert!(at.file_exists(format!("{file_b}{suffix}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -1013,7 +1013,7 @@ fn test_install_backup_short_custom_suffix_hyphen_value() {
|
|||
|
||||
assert!(at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}{suffix}")));
|
||||
assert!(at.file_exists(format!("{file_b}{suffix}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -1038,7 +1038,7 @@ fn test_install_backup_custom_suffix_via_env() {
|
|||
|
||||
assert!(at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}{suffix}")));
|
||||
assert!(at.file_exists(format!("{file_b}{suffix}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -1061,7 +1061,7 @@ fn test_install_backup_numbered_with_t() {
|
|||
|
||||
assert!(at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}.~1~")));
|
||||
assert!(at.file_exists(format!("{file_b}.~1~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -1084,7 +1084,7 @@ fn test_install_backup_numbered_with_numbered() {
|
|||
|
||||
assert!(at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}.~1~")));
|
||||
assert!(at.file_exists(format!("{file_b}.~1~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -1107,7 +1107,7 @@ fn test_install_backup_existing() {
|
|||
|
||||
assert!(at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}~")));
|
||||
assert!(at.file_exists(format!("{file_b}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -1130,7 +1130,7 @@ fn test_install_backup_nil() {
|
|||
|
||||
assert!(at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}~")));
|
||||
assert!(at.file_exists(format!("{file_b}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -1156,7 +1156,7 @@ fn test_install_backup_numbered_if_existing_backup_existing() {
|
|||
assert!(at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(file_b_backup));
|
||||
assert!(at.file_exists(&format!("{file_b}.~2~")));
|
||||
assert!(at.file_exists(format!("{file_b}.~2~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -1182,7 +1182,7 @@ fn test_install_backup_numbered_if_existing_backup_nil() {
|
|||
assert!(at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(file_b_backup));
|
||||
assert!(at.file_exists(&format!("{file_b}.~2~")));
|
||||
assert!(at.file_exists(format!("{file_b}.~2~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -1205,7 +1205,7 @@ fn test_install_backup_simple() {
|
|||
|
||||
assert!(at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}~")));
|
||||
assert!(at.file_exists(format!("{file_b}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -1228,7 +1228,7 @@ fn test_install_backup_never() {
|
|||
|
||||
assert!(at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}~")));
|
||||
assert!(at.file_exists(format!("{file_b}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -1251,7 +1251,7 @@ fn test_install_backup_none() {
|
|||
|
||||
assert!(at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(!at.file_exists(&format!("{file_b}~")));
|
||||
assert!(!at.file_exists(format!("{file_b}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -1274,7 +1274,7 @@ fn test_install_backup_off() {
|
|||
|
||||
assert!(at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(!at.file_exists(&format!("{file_b}~")));
|
||||
assert!(!at.file_exists(format!("{file_b}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
@ -403,7 +403,7 @@ fn test_symlink_implicit_target_dir() {
|
|||
let file = &path.to_string_lossy();
|
||||
|
||||
at.mkdir(dir);
|
||||
at.touch(file);
|
||||
at.touch(&path);
|
||||
|
||||
ucmd.args(&["-s", file]).succeeds().no_stderr();
|
||||
|
||||
|
|
|
@ -609,10 +609,10 @@ fn test_ls_a() {
|
|||
fn test_ls_width() {
|
||||
let scene = TestScenario::new(util_name!());
|
||||
let at = &scene.fixtures;
|
||||
at.touch(&at.plus_as_string("test-width-1"));
|
||||
at.touch(&at.plus_as_string("test-width-2"));
|
||||
at.touch(&at.plus_as_string("test-width-3"));
|
||||
at.touch(&at.plus_as_string("test-width-4"));
|
||||
at.touch(at.plus_as_string("test-width-1"));
|
||||
at.touch(at.plus_as_string("test-width-2"));
|
||||
at.touch(at.plus_as_string("test-width-3"));
|
||||
at.touch(at.plus_as_string("test-width-4"));
|
||||
|
||||
for option in [
|
||||
"-w 100",
|
||||
|
@ -692,10 +692,10 @@ fn test_ls_width() {
|
|||
fn test_ls_columns() {
|
||||
let scene = TestScenario::new(util_name!());
|
||||
let at = &scene.fixtures;
|
||||
at.touch(&at.plus_as_string("test-columns-1"));
|
||||
at.touch(&at.plus_as_string("test-columns-2"));
|
||||
at.touch(&at.plus_as_string("test-columns-3"));
|
||||
at.touch(&at.plus_as_string("test-columns-4"));
|
||||
at.touch(at.plus_as_string("test-columns-1"));
|
||||
at.touch(at.plus_as_string("test-columns-2"));
|
||||
at.touch(at.plus_as_string("test-columns-3"));
|
||||
at.touch(at.plus_as_string("test-columns-4"));
|
||||
|
||||
// Columns is the default
|
||||
let result = scene.ucmd().succeeds();
|
||||
|
@ -753,10 +753,10 @@ fn test_ls_columns() {
|
|||
fn test_ls_across() {
|
||||
let scene = TestScenario::new(util_name!());
|
||||
let at = &scene.fixtures;
|
||||
at.touch(&at.plus_as_string("test-across-1"));
|
||||
at.touch(&at.plus_as_string("test-across-2"));
|
||||
at.touch(&at.plus_as_string("test-across-3"));
|
||||
at.touch(&at.plus_as_string("test-across-4"));
|
||||
at.touch(at.plus_as_string("test-across-1"));
|
||||
at.touch(at.plus_as_string("test-across-2"));
|
||||
at.touch(at.plus_as_string("test-across-3"));
|
||||
at.touch(at.plus_as_string("test-across-4"));
|
||||
|
||||
for option in ACROSS_ARGS {
|
||||
let result = scene.ucmd().arg(option).succeeds();
|
||||
|
@ -781,10 +781,10 @@ fn test_ls_across() {
|
|||
fn test_ls_commas() {
|
||||
let scene = TestScenario::new(util_name!());
|
||||
let at = &scene.fixtures;
|
||||
at.touch(&at.plus_as_string("test-commas-1"));
|
||||
at.touch(&at.plus_as_string("test-commas-2"));
|
||||
at.touch(&at.plus_as_string("test-commas-3"));
|
||||
at.touch(&at.plus_as_string("test-commas-4"));
|
||||
at.touch(at.plus_as_string("test-commas-1"));
|
||||
at.touch(at.plus_as_string("test-commas-2"));
|
||||
at.touch(at.plus_as_string("test-commas-3"));
|
||||
at.touch(at.plus_as_string("test-commas-4"));
|
||||
|
||||
for option in COMMA_ARGS {
|
||||
let result = scene.ucmd().arg(option).succeeds();
|
||||
|
@ -814,8 +814,8 @@ fn test_ls_zero() {
|
|||
let scene = TestScenario::new(util_name!());
|
||||
let at = &scene.fixtures;
|
||||
at.mkdir("0-test-zero");
|
||||
at.touch(&at.plus_as_string("2-test-zero"));
|
||||
at.touch(&at.plus_as_string("3-test-zero"));
|
||||
at.touch(at.plus_as_string("2-test-zero"));
|
||||
at.touch(at.plus_as_string("3-test-zero"));
|
||||
|
||||
let ignored_opts = [
|
||||
"--quoting-style=c",
|
||||
|
@ -870,7 +870,7 @@ fn test_ls_zero() {
|
|||
|
||||
#[cfg(unix)]
|
||||
{
|
||||
at.touch(&at.plus_as_string("1\ntest-zero"));
|
||||
at.touch(at.plus_as_string("1\ntest-zero"));
|
||||
|
||||
let ignored_opts = [
|
||||
"--quoting-style=c",
|
||||
|
@ -933,9 +933,9 @@ fn test_ls_zero() {
|
|||
fn test_ls_commas_trailing() {
|
||||
let scene = TestScenario::new(util_name!());
|
||||
let at = &scene.fixtures;
|
||||
at.touch(&at.plus_as_string("test-commas-trailing-2"));
|
||||
at.touch(at.plus_as_string("test-commas-trailing-2"));
|
||||
|
||||
at.touch(&at.plus_as_string("test-commas-trailing-1"));
|
||||
at.touch(at.plus_as_string("test-commas-trailing-1"));
|
||||
at.append(
|
||||
"test-commas-trailing-1",
|
||||
&(0..2000)
|
||||
|
@ -957,7 +957,7 @@ fn test_ls_commas_trailing() {
|
|||
fn test_ls_long() {
|
||||
let scene = TestScenario::new(util_name!());
|
||||
let at = &scene.fixtures;
|
||||
at.touch(&at.plus_as_string("test-long"));
|
||||
at.touch(at.plus_as_string("test-long"));
|
||||
|
||||
for arg in LONG_ARGS {
|
||||
let result = scene.ucmd().arg(arg).arg("test-long").succeeds();
|
||||
|
@ -975,7 +975,7 @@ fn test_ls_long_format() {
|
|||
let scene = TestScenario::new(util_name!());
|
||||
let at = &scene.fixtures;
|
||||
at.mkdir(&at.plus_as_string("test-long-dir"));
|
||||
at.touch(&at.plus_as_string("test-long-dir/test-long-file"));
|
||||
at.touch(at.plus_as_string("test-long-dir/test-long-file"));
|
||||
at.mkdir(&at.plus_as_string("test-long-dir/test-long-dir"));
|
||||
|
||||
for arg in LONG_ARGS {
|
||||
|
@ -1231,9 +1231,9 @@ fn test_ls_long_symlink_color() {
|
|||
fn test_ls_long_total_size() {
|
||||
let scene = TestScenario::new(util_name!());
|
||||
let at = &scene.fixtures;
|
||||
at.touch(&at.plus_as_string("test-long"));
|
||||
at.touch(at.plus_as_string("test-long"));
|
||||
at.append("test-long", "1");
|
||||
at.touch(&at.plus_as_string("test-long2"));
|
||||
at.touch(at.plus_as_string("test-long2"));
|
||||
at.append("test-long2", "2");
|
||||
|
||||
let expected_prints: HashMap<_, _> = if cfg!(unix) {
|
||||
|
@ -1275,7 +1275,7 @@ fn test_ls_long_total_size() {
|
|||
fn test_ls_long_formats() {
|
||||
let scene = TestScenario::new(util_name!());
|
||||
let at = &scene.fixtures;
|
||||
at.touch(&at.plus_as_string("test-long-formats"));
|
||||
at.touch(at.plus_as_string("test-long-formats"));
|
||||
|
||||
// Zero or one "." for indicating a file with security context
|
||||
|
||||
|
@ -1422,8 +1422,8 @@ fn test_ls_long_formats() {
|
|||
fn test_ls_oneline() {
|
||||
let scene = TestScenario::new(util_name!());
|
||||
let at = &scene.fixtures;
|
||||
at.touch(&at.plus_as_string("test-oneline-1"));
|
||||
at.touch(&at.plus_as_string("test-oneline-2"));
|
||||
at.touch(at.plus_as_string("test-oneline-1"));
|
||||
at.touch(at.plus_as_string("test-oneline-2"));
|
||||
|
||||
// Bit of a weird situation: in the tests oneline and columns have the same output,
|
||||
// except on Windows.
|
||||
|
@ -1443,7 +1443,7 @@ fn test_ls_deref() {
|
|||
let path_regexp = r"(.*)test-long.link -> (.*)test-long(.*)";
|
||||
let re = Regex::new(path_regexp).unwrap();
|
||||
|
||||
at.touch(&at.plus_as_string("test-long"));
|
||||
at.touch(at.plus_as_string("test-long"));
|
||||
at.symlink_file("test-long", "test-long.link");
|
||||
assert!(at.is_symlink("test-long.link"));
|
||||
|
||||
|
@ -1808,8 +1808,8 @@ fn test_ls_files_dirs() {
|
|||
at.mkdir("a/b");
|
||||
at.mkdir("a/b/c");
|
||||
at.mkdir("z");
|
||||
at.touch(&at.plus_as_string("a/a"));
|
||||
at.touch(&at.plus_as_string("a/b/b"));
|
||||
at.touch(at.plus_as_string("a/a"));
|
||||
at.touch(at.plus_as_string("a/b/b"));
|
||||
|
||||
scene.ucmd().arg("a").succeeds();
|
||||
scene.ucmd().arg("a/a").succeeds();
|
||||
|
@ -1840,8 +1840,8 @@ fn test_ls_recursive() {
|
|||
at.mkdir("a/b");
|
||||
at.mkdir("a/b/c");
|
||||
at.mkdir("z");
|
||||
at.touch(&at.plus_as_string("a/a"));
|
||||
at.touch(&at.plus_as_string("a/b/b"));
|
||||
at.touch(at.plus_as_string("a/a"));
|
||||
at.touch(at.plus_as_string("a/b/b"));
|
||||
|
||||
scene.ucmd().arg("a").succeeds();
|
||||
scene.ucmd().arg("a/a").succeeds();
|
||||
|
@ -1880,7 +1880,7 @@ fn test_ls_color() {
|
|||
.join("nested_file")
|
||||
.to_string_lossy()
|
||||
.to_string();
|
||||
at.touch(&nested_file);
|
||||
at.touch(nested_file);
|
||||
at.touch("test-color");
|
||||
|
||||
let a_with_colors = "\x1b[1;34ma\x1b[0m";
|
||||
|
@ -1985,7 +1985,7 @@ fn test_ls_indicator_style() {
|
|||
at.mkdir("directory");
|
||||
assert!(at.dir_exists("directory"));
|
||||
|
||||
at.touch(&at.plus_as_string("link-src"));
|
||||
at.touch(at.plus_as_string("link-src"));
|
||||
at.symlink_file("link-src", "link-dest.link");
|
||||
assert!(at.is_symlink("link-dest.link"));
|
||||
|
||||
|
@ -2077,7 +2077,7 @@ fn test_ls_indicator_style() {
|
|||
at.mkdir("directory");
|
||||
assert!(at.dir_exists("directory"));
|
||||
|
||||
at.touch(&at.plus_as_string("link-src"));
|
||||
at.touch(at.plus_as_string("link-src"));
|
||||
at.symlink_file("link-src", "link-dest.link");
|
||||
assert!(at.is_symlink("link-dest.link"));
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ fn test_mv_move_file_into_dir() {
|
|||
|
||||
ucmd.arg(file).arg(dir).succeeds().no_stderr();
|
||||
|
||||
assert!(at.file_exists(&format!("{dir}/{file}")));
|
||||
assert!(at.file_exists(format!("{dir}/{file}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -67,17 +67,17 @@ fn test_mv_move_file_between_dirs() {
|
|||
|
||||
at.mkdir(dir1);
|
||||
at.mkdir(dir2);
|
||||
at.touch(&format!("{dir1}/{file}"));
|
||||
at.touch(format!("{dir1}/{file}"));
|
||||
|
||||
assert!(at.file_exists(&format!("{dir1}/{file}")));
|
||||
assert!(at.file_exists(format!("{dir1}/{file}")));
|
||||
|
||||
ucmd.arg(&format!("{dir1}/{file}"))
|
||||
.arg(dir2)
|
||||
.succeeds()
|
||||
.no_stderr();
|
||||
|
||||
assert!(!at.file_exists(&format!("{dir1}/{file}")));
|
||||
assert!(at.file_exists(&format!("{dir2}/{file}")));
|
||||
assert!(!at.file_exists(format!("{dir1}/{file}")));
|
||||
assert!(at.file_exists(format!("{dir2}/{file}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -94,7 +94,7 @@ fn test_mv_strip_slashes() {
|
|||
|
||||
scene.ucmd().arg(&source).arg(dir).fails();
|
||||
|
||||
assert!(!at.file_exists(&format!("{dir}/{file}")));
|
||||
assert!(!at.file_exists(format!("{dir}/{file}")));
|
||||
|
||||
scene
|
||||
.ucmd()
|
||||
|
@ -104,7 +104,7 @@ fn test_mv_strip_slashes() {
|
|||
.succeeds()
|
||||
.no_stderr();
|
||||
|
||||
assert!(at.file_exists(&format!("{dir}/{file}")));
|
||||
assert!(at.file_exists(format!("{dir}/{file}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -124,8 +124,8 @@ fn test_mv_multiple_files() {
|
|||
.succeeds()
|
||||
.no_stderr();
|
||||
|
||||
assert!(at.file_exists(&format!("{target_dir}/{file_a}")));
|
||||
assert!(at.file_exists(&format!("{target_dir}/{file_b}")));
|
||||
assert!(at.file_exists(format!("{target_dir}/{file_a}")));
|
||||
assert!(at.file_exists(format!("{target_dir}/{file_b}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -305,7 +305,7 @@ fn test_mv_simple_backup() {
|
|||
|
||||
assert!(!at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}~")));
|
||||
assert!(at.file_exists(format!("{file_b}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -324,7 +324,7 @@ fn test_mv_simple_backup_with_file_extension() {
|
|||
|
||||
assert!(!at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}~")));
|
||||
assert!(at.file_exists(format!("{file_b}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -339,7 +339,7 @@ fn test_mv_arg_backup_arg_first() {
|
|||
|
||||
assert!(!at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}~")));
|
||||
assert!(at.file_exists(format!("{file_b}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -360,7 +360,7 @@ fn test_mv_custom_backup_suffix() {
|
|||
|
||||
assert!(!at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}{suffix}")));
|
||||
assert!(at.file_exists(format!("{file_b}{suffix}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -381,7 +381,7 @@ fn test_mv_custom_backup_suffix_hyphen_value() {
|
|||
|
||||
assert!(!at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}{suffix}")));
|
||||
assert!(at.file_exists(format!("{file_b}{suffix}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -401,7 +401,7 @@ fn test_mv_custom_backup_suffix_via_env() {
|
|||
|
||||
assert!(!at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}{suffix}")));
|
||||
assert!(at.file_exists(format!("{file_b}{suffix}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -420,7 +420,7 @@ fn test_mv_backup_numbered_with_t() {
|
|||
|
||||
assert!(!at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}.~1~")));
|
||||
assert!(at.file_exists(format!("{file_b}.~1~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -439,7 +439,7 @@ fn test_mv_backup_numbered() {
|
|||
|
||||
assert!(!at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}.~1~")));
|
||||
assert!(at.file_exists(format!("{file_b}.~1~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -458,7 +458,7 @@ fn test_mv_backup_existing() {
|
|||
|
||||
assert!(!at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}~")));
|
||||
assert!(at.file_exists(format!("{file_b}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -477,7 +477,7 @@ fn test_mv_backup_nil() {
|
|||
|
||||
assert!(!at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}~")));
|
||||
assert!(at.file_exists(format!("{file_b}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -498,7 +498,7 @@ fn test_mv_numbered_if_existing_backup_existing() {
|
|||
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(file_b_backup));
|
||||
assert!(at.file_exists(&format!("{file_b}.~2~")));
|
||||
assert!(at.file_exists(format!("{file_b}.~2~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -519,7 +519,7 @@ fn test_mv_numbered_if_existing_backup_nil() {
|
|||
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(file_b_backup));
|
||||
assert!(at.file_exists(&format!("{file_b}.~2~")));
|
||||
assert!(at.file_exists(format!("{file_b}.~2~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -538,7 +538,7 @@ fn test_mv_backup_simple() {
|
|||
|
||||
assert!(!at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}~")));
|
||||
assert!(at.file_exists(format!("{file_b}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -557,7 +557,7 @@ fn test_mv_backup_never() {
|
|||
|
||||
assert!(!at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{file_b}~")));
|
||||
assert!(at.file_exists(format!("{file_b}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -576,7 +576,7 @@ fn test_mv_backup_none() {
|
|||
|
||||
assert!(!at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(!at.file_exists(&format!("{file_b}~")));
|
||||
assert!(!at.file_exists(format!("{file_b}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -595,7 +595,7 @@ fn test_mv_backup_off() {
|
|||
|
||||
assert!(!at.file_exists(file_a));
|
||||
assert!(at.file_exists(file_b));
|
||||
assert!(!at.file_exists(&format!("{file_b}~")));
|
||||
assert!(!at.file_exists(format!("{file_b}~")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -660,8 +660,8 @@ fn test_mv_target_dir() {
|
|||
|
||||
assert!(!at.file_exists(file_a));
|
||||
assert!(!at.file_exists(file_b));
|
||||
assert!(at.file_exists(&format!("{dir}/{file_a}")));
|
||||
assert!(at.file_exists(&format!("{dir}/{file_b}")));
|
||||
assert!(at.file_exists(format!("{dir}/{file_a}")));
|
||||
assert!(at.file_exists(format!("{dir}/{file_b}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -675,7 +675,7 @@ fn test_mv_target_dir_single_source() {
|
|||
ucmd.arg("-t").arg(dir).arg(file).succeeds().no_stderr();
|
||||
|
||||
assert!(!at.file_exists(file));
|
||||
assert!(at.file_exists(&format!("{dir}/{file}")));
|
||||
assert!(at.file_exists(format!("{dir}/{file}")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
@ -192,7 +192,7 @@ fn test_realpath_existing() {
|
|||
ucmd.arg("-e")
|
||||
.arg(".")
|
||||
.succeeds()
|
||||
.stdout_only(at.plus_as_string(&format!("{}\n", at.root_dir_resolved())));
|
||||
.stdout_only(at.plus_as_string(format!("{}\n", at.root_dir_resolved())));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
|
@ -746,14 +746,14 @@ impl AtPath {
|
|||
self.subdir.to_str().unwrap().to_owned()
|
||||
}
|
||||
|
||||
pub fn plus(&self, name: &str) -> PathBuf {
|
||||
pub fn plus<P: AsRef<Path>>(&self, name: P) -> PathBuf {
|
||||
let mut pathbuf = self.subdir.clone();
|
||||
pathbuf.push(name);
|
||||
pathbuf
|
||||
}
|
||||
|
||||
pub fn plus_as_string(&self, name: &str) -> String {
|
||||
String::from(self.plus(name).to_str().unwrap())
|
||||
pub fn plus_as_string<P: AsRef<Path>>(&self, name: P) -> String {
|
||||
self.plus(name).display().to_string()
|
||||
}
|
||||
|
||||
fn minus(&self, name: &str) -> PathBuf {
|
||||
|
@ -876,7 +876,8 @@ impl AtPath {
|
|||
fs::remove_dir(self.plus(dir)).unwrap();
|
||||
}
|
||||
|
||||
pub fn mkdir(&self, dir: &str) {
|
||||
pub fn mkdir<P: AsRef<Path>>(&self, dir: P) {
|
||||
let dir = dir.as_ref();
|
||||
log_info("mkdir", self.plus_as_string(dir));
|
||||
fs::create_dir(self.plus(dir)).unwrap();
|
||||
}
|
||||
|
@ -893,7 +894,8 @@ impl AtPath {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn touch(&self, file: &str) {
|
||||
pub fn touch<P: AsRef<Path>>(&self, file: P) {
|
||||
let file = file.as_ref();
|
||||
log_info("touch", self.plus_as_string(file));
|
||||
File::create(self.plus(file)).unwrap();
|
||||
}
|
||||
|
@ -1016,7 +1018,7 @@ impl AtPath {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn file_exists(&self, path: &str) -> bool {
|
||||
pub fn file_exists<P: AsRef<Path>>(&self, path: P) -> bool {
|
||||
match fs::metadata(self.plus(path)) {
|
||||
Ok(m) => m.is_file(),
|
||||
Err(_) => false,
|
||||
|
|
Loading…
Reference in a new issue