From 2c130ae7c0194ad652d70c1d1bfe34a23f169545 Mon Sep 17 00:00:00 2001 From: Terts Diepraam Date: Wed, 14 Apr 2021 14:42:14 +0200 Subject: [PATCH] ls: take `-l` into account with dereference-command-line --- src/uu/ls/src/ls.rs | 1 + tests/by-util/test_ls.rs | 60 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/src/uu/ls/src/ls.rs b/src/uu/ls/src/ls.rs index d0733357b..f22c83c48 100644 --- a/src/uu/ls/src/ls.rs +++ b/src/uu/ls/src/ls.rs @@ -501,6 +501,7 @@ impl Config { Dereference::DirArgs } else if options.is_present(options::DIRECTORY) || indicator_style == IndicatorStyle::Classify + || format == Format::Long { Dereference::None } else { diff --git a/tests/by-util/test_ls.rs b/tests/by-util/test_ls.rs index ef6c23b73..bdf4440e0 100644 --- a/tests/by-util/test_ls.rs +++ b/tests/by-util/test_ls.rs @@ -1353,6 +1353,13 @@ fn test_ls_deref_command_line() { at.touch("some_file"); at.symlink_file("some_file", "sym_file"); + scene + .ucmd() + .arg("sym_file") + .succeeds() + .stdout_is("sym_file\n"); + + // -l changes the default to no dereferencing scene .ucmd() .arg("-l") @@ -1360,6 +1367,13 @@ fn test_ls_deref_command_line() { .succeeds() .stdout_contains("sym_file ->"); + scene + .ucmd() + .arg("--dereference-command-line-symlink-to-dir") + .arg("sym_file") + .succeeds() + .stdout_is("sym_file\n"); + scene .ucmd() .arg("-l") @@ -1368,6 +1382,13 @@ fn test_ls_deref_command_line() { .succeeds() .stdout_contains("sym_file ->"); + scene + .ucmd() + .arg("--dereference-command-line") + .arg("sym_file") + .succeeds() + .stdout_is("sym_file\n"); + let result = scene .ucmd() .arg("-l") @@ -1400,11 +1421,24 @@ fn test_ls_deref_command_line_dir() { at.touch("some_dir/nested_file"); + scene + .ucmd() + .arg("sym_dir") + .succeeds() + .stdout_contains("nested_file"); + scene .ucmd() .arg("-l") .arg("sym_dir") .succeeds() + .stdout_contains("sym_dir ->"); + + scene + .ucmd() + .arg("--dereference-command-line-symlink-to-dir") + .arg("sym_dir") + .succeeds() .stdout_contains("nested_file"); scene @@ -1415,6 +1449,13 @@ fn test_ls_deref_command_line_dir() { .succeeds() .stdout_contains("nested_file"); + scene + .ucmd() + .arg("--dereference-command-line") + .arg("sym_dir") + .succeeds() + .stdout_contains("nested_file"); + scene .ucmd() .arg("-l") @@ -1469,4 +1510,23 @@ fn test_ls_deref_command_line_dir() { .succeeds(); assert!(!result.stdout_str().ends_with("sym_dir")); + + // --classify does not dereference anything by default + scene + .ucmd() + .arg("-l") + .arg("--directory") + .arg("sym_dir") + .succeeds() + .stdout_contains("sym_dir ->"); + + let result = scene + .ucmd() + .arg("-l") + .arg("--directory") + .arg("--dereference-command-line-symlink-to-dir") + .arg("sym_dir") + .succeeds(); + + assert!(!result.stdout_str().ends_with("sym_dir")); }