mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 11:37:44 +00:00
cp: fix regressed issue with --backup
and -b
- add test for regressed issue
This commit is contained in:
parent
b4f6c81810
commit
41bea72f23
2 changed files with 22 additions and 2 deletions
|
@ -232,6 +232,7 @@ fn get_usage() -> String {
|
||||||
static OPT_ARCHIVE: &str = "archive";
|
static OPT_ARCHIVE: &str = "archive";
|
||||||
static OPT_ATTRIBUTES_ONLY: &str = "attributes-only";
|
static OPT_ATTRIBUTES_ONLY: &str = "attributes-only";
|
||||||
static OPT_BACKUP: &str = "backup";
|
static OPT_BACKUP: &str = "backup";
|
||||||
|
static OPT_BACKUP_NO_ARG: &str = "b";
|
||||||
static OPT_CLI_SYMBOLIC_LINKS: &str = "cli-symbolic-links";
|
static OPT_CLI_SYMBOLIC_LINKS: &str = "cli-symbolic-links";
|
||||||
static OPT_CONTEXT: &str = "context";
|
static OPT_CONTEXT: &str = "context";
|
||||||
static OPT_COPY_CONTENTS: &str = "copy-contents";
|
static OPT_COPY_CONTENTS: &str = "copy-contents";
|
||||||
|
@ -357,7 +358,6 @@ pub fn uumain(args: impl uucore::Args) -> i32 {
|
||||||
.help("remove each existing destination file before attempting to open it \
|
.help("remove each existing destination file before attempting to open it \
|
||||||
(contrast with --force). On Windows, current only works for writeable files."))
|
(contrast with --force). On Windows, current only works for writeable files."))
|
||||||
.arg(Arg::with_name(OPT_BACKUP)
|
.arg(Arg::with_name(OPT_BACKUP)
|
||||||
.short("b")
|
|
||||||
.long(OPT_BACKUP)
|
.long(OPT_BACKUP)
|
||||||
.help("make a backup of each existing destination file")
|
.help("make a backup of each existing destination file")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
|
@ -366,6 +366,10 @@ pub fn uumain(args: impl uucore::Args) -> i32 {
|
||||||
.possible_values(backup_control::BACKUP_CONTROL_VALUES)
|
.possible_values(backup_control::BACKUP_CONTROL_VALUES)
|
||||||
.value_name("CONTROL")
|
.value_name("CONTROL")
|
||||||
)
|
)
|
||||||
|
.arg(Arg::with_name(OPT_BACKUP_NO_ARG)
|
||||||
|
.short(OPT_BACKUP_NO_ARG)
|
||||||
|
.help("like --backup but does not accept an argument")
|
||||||
|
)
|
||||||
.arg(Arg::with_name(OPT_SUFFIX)
|
.arg(Arg::with_name(OPT_SUFFIX)
|
||||||
.short("S")
|
.short("S")
|
||||||
.long(OPT_SUFFIX)
|
.long(OPT_SUFFIX)
|
||||||
|
@ -592,7 +596,7 @@ impl Options {
|
||||||
|| matches.is_present(OPT_ARCHIVE);
|
|| matches.is_present(OPT_ARCHIVE);
|
||||||
|
|
||||||
let backup_mode = backup_control::determine_backup_mode(
|
let backup_mode = backup_control::determine_backup_mode(
|
||||||
matches.is_present(OPT_BACKUP),
|
matches.is_present(OPT_BACKUP_NO_ARG) || matches.is_present(OPT_BACKUP),
|
||||||
matches.value_of(OPT_BACKUP),
|
matches.value_of(OPT_BACKUP),
|
||||||
);
|
);
|
||||||
let backup_suffix = backup_control::determine_backup_suffix(matches.value_of(OPT_SUFFIX));
|
let backup_suffix = backup_control::determine_backup_suffix(matches.value_of(OPT_SUFFIX));
|
||||||
|
|
|
@ -316,6 +316,22 @@ fn test_cp_arg_backup() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_cp_arg_backup_with_other_args() {
|
||||||
|
let (at, mut ucmd) = at_and_ucmd!();
|
||||||
|
|
||||||
|
ucmd.arg(TEST_HELLO_WORLD_SOURCE)
|
||||||
|
.arg(TEST_HOW_ARE_YOU_SOURCE)
|
||||||
|
.arg("-vbL")
|
||||||
|
.succeeds();
|
||||||
|
|
||||||
|
assert_eq!(at.read(TEST_HOW_ARE_YOU_SOURCE), "Hello, World!\n");
|
||||||
|
assert_eq!(
|
||||||
|
at.read(&*format!("{}~", TEST_HOW_ARE_YOU_SOURCE)),
|
||||||
|
"How are you?\n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_cp_arg_backup_arg_first() {
|
fn test_cp_arg_backup_arg_first() {
|
||||||
let (at, mut ucmd) = at_and_ucmd!();
|
let (at, mut ucmd) = at_and_ucmd!();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue