mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 11:37:44 +00:00
parent
a18c132994
commit
1e80d3e3b2
2 changed files with 44 additions and 1 deletions
|
@ -2038,7 +2038,7 @@ impl PathData {
|
||||||
|
|
||||||
fn show_dir_name(path_data: &PathData, out: &mut BufWriter<Stdout>, config: &Config) {
|
fn show_dir_name(path_data: &PathData, out: &mut BufWriter<Stdout>, config: &Config) {
|
||||||
if config.hyperlink && !config.dired {
|
if config.hyperlink && !config.dired {
|
||||||
let name = escape_name(&path_data.display_name, &config.quoting_style);
|
let name = escape_name(path_data.p_buf.as_os_str(), &config.quoting_style);
|
||||||
let hyperlink = create_hyperlink(&name, path_data);
|
let hyperlink = create_hyperlink(&name, path_data);
|
||||||
write!(out, "{}:", hyperlink).unwrap();
|
write!(out, "{}:", hyperlink).unwrap();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -4594,6 +4594,49 @@ fn test_ls_hyperlink_dirs() {
|
||||||
.contains(&format!("{path}{separator}{dir_b}\x07{dir_b}\x1b]8;;\x07:")));
|
.contains(&format!("{path}{separator}{dir_b}\x07{dir_b}\x1b]8;;\x07:")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_ls_hyperlink_recursive_dirs() {
|
||||||
|
let scene = TestScenario::new(util_name!());
|
||||||
|
let at = &scene.fixtures;
|
||||||
|
let path = at.root_dir_resolved();
|
||||||
|
let separator = std::path::MAIN_SEPARATOR_STR;
|
||||||
|
|
||||||
|
let dir_a = "a";
|
||||||
|
let dir_b = "b";
|
||||||
|
at.mkdir(dir_a);
|
||||||
|
at.mkdir(format!("{dir_a}/{dir_b}"));
|
||||||
|
|
||||||
|
let result = scene
|
||||||
|
.ucmd()
|
||||||
|
.arg("--hyperlink")
|
||||||
|
.arg("--recursive")
|
||||||
|
.arg(dir_a)
|
||||||
|
.succeeds();
|
||||||
|
|
||||||
|
macro_rules! assert_hyperlink {
|
||||||
|
($line:expr, $expected:expr) => {
|
||||||
|
assert!(matches!($line, Some(l) if l.starts_with("\x1b]8;;file://") && l.ends_with($expected)));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut lines = result.stdout_str().lines();
|
||||||
|
assert_hyperlink!(
|
||||||
|
lines.next(),
|
||||||
|
&format!("{path}{separator}{dir_a}\x07{dir_a}\x1b]8;;\x07:")
|
||||||
|
);
|
||||||
|
assert_hyperlink!(
|
||||||
|
lines.next(),
|
||||||
|
&format!("{path}{separator}{dir_a}{separator}{dir_b}\x07{dir_b}\x1b]8;;\x07")
|
||||||
|
);
|
||||||
|
assert!(matches!(lines.next(), Some(l) if l.is_empty()));
|
||||||
|
assert_hyperlink!(
|
||||||
|
lines.next(),
|
||||||
|
&format!(
|
||||||
|
"{path}{separator}{dir_a}{separator}{dir_b}\x07{dir_a}{separator}{dir_b}\x1b]8;;\x07:"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_ls_color_do_not_reset() {
|
fn test_ls_color_do_not_reset() {
|
||||||
let scene: TestScenario = TestScenario::new(util_name!());
|
let scene: TestScenario = TestScenario::new(util_name!());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue