forked from extern/nushell
Correction bug multiple dots mkdir and touch (#8486)
This commit is contained in:
parent
1134c2f16c
commit
01e5ba01f6
@ -84,3 +84,45 @@ fn print_created_paths() {
|
||||
assert!(actual.err.contains("dir_3"));
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn creates_directory_three_dots() {
|
||||
Playground::setup("mkdir_test_1", |dirs, _| {
|
||||
nu!(
|
||||
cwd: dirs.test(),
|
||||
"mkdir test..."
|
||||
);
|
||||
|
||||
let expected = dirs.test().join("test...");
|
||||
|
||||
assert!(expected.exists());
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn creates_directory_four_dots() {
|
||||
Playground::setup("mkdir_test_1", |dirs, _| {
|
||||
nu!(
|
||||
cwd: dirs.test(),
|
||||
"mkdir test...."
|
||||
);
|
||||
|
||||
let expected = dirs.test().join("test....");
|
||||
|
||||
assert!(expected.exists());
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn creates_directory_three_dots_quotation_marks() {
|
||||
Playground::setup("mkdir_test_1", |dirs, _| {
|
||||
nu!(
|
||||
cwd: dirs.test(),
|
||||
"mkdir 'test...'"
|
||||
);
|
||||
|
||||
let expected = dirs.test().join("test...");
|
||||
|
||||
assert!(expected.exists());
|
||||
})
|
||||
}
|
||||
|
@ -122,3 +122,42 @@ fn not_create_file_if_it_not_exists() {
|
||||
assert!(!path.exists());
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn creates_file_three_dots() {
|
||||
Playground::setup("create_test_1", |dirs, _sandbox| {
|
||||
nu!(
|
||||
cwd: dirs.test(),
|
||||
"touch file..."
|
||||
);
|
||||
|
||||
let path = dirs.test().join("file...");
|
||||
assert!(path.exists());
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn creates_file_four_dots() {
|
||||
Playground::setup("create_test_1", |dirs, _sandbox| {
|
||||
nu!(
|
||||
cwd: dirs.test(),
|
||||
"touch file...."
|
||||
);
|
||||
|
||||
let path = dirs.test().join("file....");
|
||||
assert!(path.exists());
|
||||
})
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn creates_file_four_dots_quotation_marks() {
|
||||
Playground::setup("create_test_1", |dirs, _sandbox| {
|
||||
nu!(
|
||||
cwd: dirs.test(),
|
||||
"touch 'file....'"
|
||||
);
|
||||
|
||||
let path = dirs.test().join("file....");
|
||||
assert!(path.exists());
|
||||
})
|
||||
}
|
||||
|
@ -33,6 +33,7 @@ pub fn expand_ndots(path: impl AsRef<Path>) -> PathBuf {
|
||||
|
||||
// find if we need to expand any >2 dot paths and early exit if not
|
||||
let mut dots_count = 0u8;
|
||||
let mut not_separator_before_dot = false;
|
||||
let ndots_present = {
|
||||
for chr in path_str.chars() {
|
||||
if chr == '.' {
|
||||
@ -42,7 +43,7 @@ pub fn expand_ndots(path: impl AsRef<Path>) -> PathBuf {
|
||||
// this path component had >2 dots
|
||||
break;
|
||||
}
|
||||
|
||||
not_separator_before_dot = !(is_separator(chr) || chr.is_whitespace());
|
||||
dots_count = 0;
|
||||
}
|
||||
}
|
||||
@ -50,7 +51,7 @@ pub fn expand_ndots(path: impl AsRef<Path>) -> PathBuf {
|
||||
dots_count > 2
|
||||
};
|
||||
|
||||
if !ndots_present {
|
||||
if !ndots_present || not_separator_before_dot {
|
||||
return path.as_ref().into();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user