mirror of
https://github.com/nushell/nushell.git
synced 2025-01-11 08:48:23 +01:00
cp: expand target path before checking (#11692)
# Description Fixes: #11683 # User-Facing Changes NaN # Tests + Formatting ~~I don't think we need to add a test, or else it'll copy some file to user's directory, it seems bad.~~ Done. # After Submitting NaN
This commit is contained in:
parent
3e0fa8ff85
commit
16f3d9b4e1
@ -172,6 +172,8 @@ impl Command for UCp {
|
||||
let target_path = PathBuf::from(&nu_utils::strip_ansi_string_unlikely(
|
||||
target.item.to_string(),
|
||||
));
|
||||
let cwd = current_dir(engine_state, stack)?;
|
||||
let target_path = nu_path::expand_path_with(&target_path, &cwd);
|
||||
if target.item.as_ref().ends_with(PATH_SEPARATOR) && !target_path.is_dir() {
|
||||
return Err(ShellError::GenericError {
|
||||
error: "is not a directory".into(),
|
||||
@ -184,7 +186,6 @@ impl Command for UCp {
|
||||
|
||||
// paths now contains the sources
|
||||
|
||||
let cwd = current_dir(engine_state, stack)?;
|
||||
let mut sources: Vec<PathBuf> = Vec::new();
|
||||
|
||||
for mut p in paths {
|
||||
@ -227,8 +228,6 @@ impl Command for UCp {
|
||||
}
|
||||
}
|
||||
|
||||
let target_path = nu_path::expand_path_with(&target_path, &cwd);
|
||||
|
||||
let attributes = make_attributes(preserve)?;
|
||||
|
||||
let options = uu_cp::Options {
|
||||
|
@ -1122,3 +1122,19 @@ fn test_cp_inside_glob_metachars_dir() {
|
||||
assert!(files_exist_at(vec!["test_file.txt"], dirs.test()));
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(not(windows))]
|
||||
#[test]
|
||||
fn test_cp_to_customized_home_directory() {
|
||||
Playground::setup("cp_to_home", |dirs, sandbox| {
|
||||
std::env::set_var("HOME", dirs.test());
|
||||
sandbox.with_files(vec![EmptyFile("test_file.txt")]);
|
||||
let actual = nu!(cwd: dirs.test(), "mkdir test; cp test_file.txt ~/test/");
|
||||
|
||||
assert!(actual.err.is_empty());
|
||||
assert!(files_exist_at(
|
||||
vec!["test_file.txt"],
|
||||
dirs.test().join("test")
|
||||
));
|
||||
})
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user