diff --git a/src/uu/ls/src/ls.rs b/src/uu/ls/src/ls.rs index 353df2630..04866fc14 100644 --- a/src/uu/ls/src/ls.rs +++ b/src/uu/ls/src/ls.rs @@ -2777,17 +2777,13 @@ fn display_item_long( let is_acl_set = has_acl(item.display_name.as_os_str()); write!( output_display, - "{}{}{} {}", + "{}{} {}", display_permissions(md, true), if item.security_context.len() > 1 { // GNU `ls` uses a "." character to indicate a file with a security context, // but not other alternate access method. "." - } else { - "" - }, - if is_acl_set { - // if acl has been set, we display a "+" at the end of the file permissions + } else if is_acl_set { "+" } else { "" diff --git a/tests/by-util/test_ls.rs b/tests/by-util/test_ls.rs index c8cf812a3..4667cef43 100644 --- a/tests/by-util/test_ls.rs +++ b/tests/by-util/test_ls.rs @@ -4153,8 +4153,7 @@ fn test_ls_dangling_symlinks() { #[test] #[cfg(feature = "feat_selinux")] fn test_ls_context1() { - use selinux::{self, KernelSupport}; - if selinux::kernel_support() == KernelSupport::Unsupported { + if !uucore::selinux::is_selinux_enabled() { println!("test skipped: Kernel has no support for SElinux context"); return; } @@ -4169,8 +4168,7 @@ fn test_ls_context1() { #[test] #[cfg(feature = "feat_selinux")] fn test_ls_context2() { - use selinux::{self, KernelSupport}; - if selinux::kernel_support() == KernelSupport::Unsupported { + if !uucore::selinux::is_selinux_enabled() { println!("test skipped: Kernel has no support for SElinux context"); return; } @@ -4183,11 +4181,30 @@ fn test_ls_context2() { } } +#[test] +#[cfg(feature = "feat_selinux")] +fn test_ls_context_long() { + if !uucore::selinux::is_selinux_enabled() { + return; + } + let scene = TestScenario::new(util_name!()); + let at = &scene.fixtures; + at.touch("foo"); + for c_flag in ["-Zl", "-Zal"] { + let result = scene.ucmd().args(&[c_flag, "foo"]).succeeds(); + + let line: Vec<_> = result.stdout_str().split(" ").collect(); + assert!(line[0].ends_with(".")); + assert!(line[4].starts_with("unconfined_u")); + let s: Vec<_> = line[4].split(":").collect(); + assert!(s.len() == 4); + } +} + #[test] #[cfg(feature = "feat_selinux")] fn test_ls_context_format() { - use selinux::{self, KernelSupport}; - if selinux::kernel_support() == KernelSupport::Unsupported { + if !uucore::selinux::is_selinux_enabled() { println!("test skipped: Kernel has no support for SElinux context"); return; }