From 91f6da38337262087fffc42fc7b578bf60b2b104 Mon Sep 17 00:00:00 2001 From: ChanTsune <41658782+ChanTsune@users.noreply.github.com> Date: Fri, 9 Jan 2026 11:15:18 +0900 Subject: [PATCH] :bug: Fix jsonl format ignoring -@ and -e flags The jsonl format was always outputting `acl` and `xattr` fields as empty arrays regardless of whether -e (acl) or -@ (xattr) flags were specified. This was inconsistent with the `fflags` field behavior. Now these fields use `skip_serializing_if` to omit them entirely when not requested, matching the expected behavior. Also added tests to verify that: - `-e` flag includes acl field in jsonl output - `-@` flag includes xattr field in jsonl output --- cli/src/command/list.rs | 48 ++++---- cli/tests/cli/list/option_format_jsonl.rs | 140 +++++++++++++++++----- cli/tests/cli/list/option_show_fflags.rs | 16 +-- 3 files changed, 141 insertions(+), 63 deletions(-) diff --git a/cli/src/command/list.rs b/cli/src/command/list.rs index 4fe461b3d..c7a3c7d54 100644 --- a/cli/src/command/list.rs +++ b/cli/src/command/list.rs @@ -1123,8 +1123,10 @@ struct FileInfo<'a> { accessed: String, #[serde(skip_serializing_if = "Option::is_none")] fflags: Option<&'a [String]>, - acl: Vec, - xattr: Vec>, + #[serde(skip_serializing_if = "Option::is_none")] + acl: Option>, + #[serde(skip_serializing_if = "Option::is_none")] + xattr: Option>>, } #[derive(Serialize, Debug)] @@ -1145,6 +1147,8 @@ fn json_line_entries_to( mut out: impl Write, ) -> anyhow::Result<()> { let show_fflags = options.show_fflags; + let show_acl = options.show_acl; + let show_xattr = options.show_xattr; let entries = entries .par_iter() .map(|it| { @@ -1180,27 +1184,25 @@ fn json_line_entries_to( accessed: it .accessed .map_or_else(String::new, |d| datetime(TimeFormat::Long, d)), - fflags: if show_fflags { - Some(it.fflags.as_slice()) - } else { - None - }, - acl: it - .acl - .iter() - .map(|(platform, ace)| AclEntry { - platform: platform.to_string(), - entries: ace.iter().map(|it| it.to_string()).collect(), - }) - .collect(), - xattr: it - .xattrs - .iter() - .map(|x| XAttr { - key: x.name(), - value: base64::engine::general_purpose::STANDARD.encode(x.value()), - }) - .collect(), + fflags: show_fflags.then_some(it.fflags.as_slice()), + acl: show_acl.then(|| { + it.acl + .iter() + .map(|(platform, ace)| AclEntry { + platform: platform.to_string(), + entries: ace.iter().map(|it| it.to_string()).collect(), + }) + .collect() + }), + xattr: show_xattr.then(|| { + it.xattrs + .iter() + .map(|x| XAttr { + key: x.name(), + value: base64::engine::general_purpose::STANDARD.encode(x.value()), + }) + .collect() + }), } }) .collect::>(); diff --git a/cli/tests/cli/list/option_format_jsonl.rs b/cli/tests/cli/list/option_format_jsonl.rs index 41097806d..f63f239ec 100644 --- a/cli/tests/cli/list/option_format_jsonl.rs +++ b/cli/tests/cli/list/option_format_jsonl.rs @@ -22,23 +22,23 @@ fn list_format_jsonl() { .assert(); assert.stdout(concat!( - r#"{"filename":"raw/images/icon.png","permissions":"---------- ","owner":"","group":"","raw_size":51475,"size":38437,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/images/icon.png","permissions":"---------- ","owner":"","group":"","raw_size":51475,"size":38437,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/empty.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":9,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/empty.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":9,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/images/icon.svg","permissions":"---------- ","owner":"","group":"","raw_size":1984,"size":789,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/images/icon.svg","permissions":"---------- ","owner":"","group":"","raw_size":1984,"size":789,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/first/second/third/pna.txt","permissions":"---------- ","owner":"","group":"","raw_size":3,"size":12,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/first/second/third/pna.txt","permissions":"---------- ","owner":"","group":"","raw_size":3,"size":12,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/pna/empty.pna","permissions":"---------- ","owner":"","group":"","raw_size":40,"size":49,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/pna/empty.pna","permissions":"---------- ","owner":"","group":"","raw_size":40,"size":49,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/parent/child.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":9,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/parent/child.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":9,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/pna/nest.pna","permissions":"---------- ","owner":"","group":"","raw_size":57032,"size":57041,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/pna/nest.pna","permissions":"---------- ","owner":"","group":"","raw_size":57032,"size":57041,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/text.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":19,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/text.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":19,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/images/icon.bmp","permissions":"---------- ","owner":"","group":"","raw_size":4194442,"size":17183,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/images/icon.bmp","permissions":"---------- ","owner":"","group":"","raw_size":4194442,"size":17183,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", )); } @@ -65,23 +65,23 @@ fn list_format_jsonl_solid() { .assert(); assert.stdout(concat!( - r#"{"filename":"raw/empty.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":0,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/empty.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":0,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/parent/child.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":0,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/parent/child.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":0,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/images/icon.svg","permissions":"---------- ","owner":"","group":"","raw_size":1984,"size":1984,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/images/icon.svg","permissions":"---------- ","owner":"","group":"","raw_size":1984,"size":1984,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/first/second/third/pna.txt","permissions":"---------- ","owner":"","group":"","raw_size":3,"size":3,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/first/second/third/pna.txt","permissions":"---------- ","owner":"","group":"","raw_size":3,"size":3,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/images/icon.png","permissions":"---------- ","owner":"","group":"","raw_size":51475,"size":51475,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/images/icon.png","permissions":"---------- ","owner":"","group":"","raw_size":51475,"size":51475,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/pna/nest.pna","permissions":"---------- ","owner":"","group":"","raw_size":57032,"size":57032,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/pna/nest.pna","permissions":"---------- ","owner":"","group":"","raw_size":57032,"size":57032,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/text.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":10,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/text.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":10,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/pna/empty.pna","permissions":"---------- ","owner":"","group":"","raw_size":40,"size":40,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/pna/empty.pna","permissions":"---------- ","owner":"","group":"","raw_size":40,"size":40,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/images/icon.bmp","permissions":"---------- ","owner":"","group":"","raw_size":4194442,"size":4194442,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/images/icon.bmp","permissions":"---------- ","owner":"","group":"","raw_size":4194442,"size":4194442,"encryption":"-","compression":"zstandard(solid)","created":"","modified":"","accessed":""}"#, "\n", )); } @@ -109,9 +109,9 @@ fn list_format_jsonl_with_filter() { .assert(); assert.stdout(concat!( - r#"{"filename":"raw/empty.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":9,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/empty.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":9,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/text.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":19,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/text.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":19,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", )); } @@ -142,11 +142,11 @@ fn list_format_jsonl_with_directory_filter() { .assert(); assert.stdout(concat!( - r#"{"filename":"raw/images/icon.png","permissions":"---------- ","owner":"","group":"","raw_size":51475,"size":38437,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/images/icon.png","permissions":"---------- ","owner":"","group":"","raw_size":51475,"size":38437,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/images/icon.svg","permissions":"---------- ","owner":"","group":"","raw_size":1984,"size":789,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/images/icon.svg","permissions":"---------- ","owner":"","group":"","raw_size":1984,"size":789,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/images/icon.bmp","permissions":"---------- ","owner":"","group":"","raw_size":4194442,"size":17183,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/images/icon.bmp","permissions":"---------- ","owner":"","group":"","raw_size":4194442,"size":17183,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", )); } @@ -174,23 +174,99 @@ fn list_format_jsonl_encrypted() { .assert(); assert.stdout(concat!( - r#"{"filename":"raw/empty.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":25,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/empty.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":25,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/images/icon.png","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":35142,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/images/icon.png","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":35142,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/images/icon.svg","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":751,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/images/icon.svg","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":751,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/images/icon.bmp","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":13378,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/images/icon.bmp","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":13378,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/first/second/third/pna.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":28,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/first/second/third/pna.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":28,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/pna/empty.pna","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":65,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/pna/empty.pna","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":65,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/pna/nest.pna","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":53757,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/pna/nest.pna","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":53757,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/parent/child.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":25,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/parent/child.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":25,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"raw/text.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":35,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"raw/text.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":35,"encryption":"aes(ctr)","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", )); } + +/// Precondition: An archive contains entries with ACL metadata. +/// Action: Run `pna list -e --format jsonl --unstable`. +/// Expectation: The acl field is included in JSON output with platform and entries. +#[test] +fn list_format_jsonl_with_acl() { + setup(); + TestResources::extract_in("mixed_acl.pna", "list_format_jsonl_with_acl/").unwrap(); + + cargo_bin_cmd!("pna") + .args([ + "list", + "-e", + "--format", + "jsonl", + "--unstable", + "-f", + "list_format_jsonl_with_acl/mixed_acl.pna", + ]) + .assert() + .success() + .stdout(concat!( + r#"{"filename":"freebsd_acl.txt","permissions":"----------+","owner":"","group":"","raw_size":32,"size":41,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[{"platform":"freebsd","entries":[":u::allow:r|w|x",":g::allow:r|w",":o::allow:r"]}]}"#, + "\n", + r#"{"filename":"generic_acl.txt","permissions":"----------+","owner":"","group":"","raw_size":33,"size":42,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[{"platform":"","entries":[":u::allow:r|w|x",":g::allow:r|w",":o::allow:r"]}]}"#, + "\n", + r#"{"filename":"linux_acl.txt","permissions":"----------+","owner":"","group":"","raw_size":33,"size":42,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[{"platform":"linux","entries":[":u::allow:r|w|x",":g::allow:r|w",":o::allow:r"]}]}"#, + "\n", + r#"{"filename":"macos_acl.txt","permissions":"----------+","owner":"","group":"","raw_size":60,"size":69,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[{"platform":"macos","entries":[":g:everyone:allow:r|w|x|delete|append"]}]}"#, + "\n", + r#"{"filename":"windows_acl.txt","permissions":"----------+","owner":"","group":"","raw_size":844,"size":175,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[{"platform":"windows","entries":[":g:everyone:allow:r|w|x|delete|append|delete_child|readattr|writeattr|readextattr|writeextattr|readsecurity|writesecurity|chown|sync|read_data|write_data"]}]}"#, + "\n", + )); +} + +/// Precondition: An archive contains entries with extended attributes. +/// Action: Run `pna list -@ --format jsonl --unstable`. +/// Expectation: The xattr field is included in JSON output with key and base64-encoded value. +#[test] +fn list_format_jsonl_with_xattr() { + setup(); + TestResources::extract_in("zstd_keep_xattr.pna", "list_format_jsonl_with_xattr/").unwrap(); + + cargo_bin_cmd!("pna") + .args([ + "list", + "-@", + "--format", + "jsonl", + "--unstable", + "-f", + "list_format_jsonl_with_xattr/zstd_keep_xattr.pna", + ]) + .assert() + .success() + .stdout(concat!( + r#"{"filename":"raw/empty.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":9,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","xattr":[]}"#, + "\n", + r#"{"filename":"raw/images/icon.svg","permissions":"---------- ","owner":"","group":"","raw_size":1984,"size":789,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","xattr":[]}"#, + "\n", + r#"{"filename":"raw/pna/empty.pna","permissions":"---------- ","owner":"","group":"","raw_size":40,"size":49,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","xattr":[]}"#, + "\n", + r#"{"filename":"raw/first/second/third/pna.txt","permissions":"---------- ","owner":"","group":"","raw_size":3,"size":12,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","xattr":[]}"#, + "\n", + r#"{"filename":"raw/images/icon.png","permissions":"---------- ","owner":"","group":"","raw_size":51475,"size":38437,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","xattr":[]}"#, + "\n", + r#"{"filename":"raw/parent/child.txt","permissions":"---------- ","owner":"","group":"","raw_size":0,"size":9,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","xattr":[]}"#, + "\n", + r#"{"filename":"raw/text.txt","permissions":"----------@","owner":"","group":"","raw_size":10,"size":19,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","xattr":[{"key":"user.pna.xattr","value":"dGVzdA=="}]}"#, + "\n", + r#"{"filename":"raw/pna/nest.pna","permissions":"---------- ","owner":"","group":"","raw_size":57032,"size":57041,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","xattr":[]}"#, + "\n", + r#"{"filename":"raw/images/icon.bmp","permissions":"---------- ","owner":"","group":"","raw_size":4194442,"size":17183,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","xattr":[]}"#, + "\n", + )); +} diff --git a/cli/tests/cli/list/option_show_fflags.rs b/cli/tests/cli/list/option_show_fflags.rs index 1353fc2ac..800cca3ee 100644 --- a/cli/tests/cli/list/option_show_fflags.rs +++ b/cli/tests/cli/list/option_show_fflags.rs @@ -105,13 +105,13 @@ fn list_fflags_jsonl() { .assert() .success() .stdout(concat!( - r#"{"filename":"file1.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":19,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","fflags":["uchg"],"acl":[],"xattr":[]}"#, + r#"{"filename":"file1.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":19,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","fflags":["uchg"]}"#, "\n", - r#"{"filename":"file2.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":19,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","fflags":["nodump"],"acl":[],"xattr":[]}"#, + r#"{"filename":"file2.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":19,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","fflags":["nodump"]}"#, "\n", - r#"{"filename":"file3.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":19,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","fflags":["hidden","schg"],"acl":[],"xattr":[]}"#, + r#"{"filename":"file3.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":19,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","fflags":["hidden","schg"]}"#, "\n", - r#"{"filename":"testfile.txt","permissions":"---------- ","owner":"","group":"","raw_size":13,"size":22,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","fflags":["hidden","nodump","uchg"],"acl":[],"xattr":[]}"#, + r#"{"filename":"testfile.txt","permissions":"---------- ","owner":"","group":"","raw_size":13,"size":22,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","fflags":["hidden","nodump","uchg"]}"#, "\n", )); } @@ -136,13 +136,13 @@ fn list_jsonl_without_fflags() { .assert() .success() .stdout(concat!( - r#"{"filename":"file1.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":19,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"file1.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":19,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"file2.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":19,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"file2.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":19,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"file3.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":19,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"file3.txt","permissions":"---------- ","owner":"","group":"","raw_size":10,"size":19,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", - r#"{"filename":"testfile.txt","permissions":"---------- ","owner":"","group":"","raw_size":13,"size":22,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":"","acl":[],"xattr":[]}"#, + r#"{"filename":"testfile.txt","permissions":"---------- ","owner":"","group":"","raw_size":13,"size":22,"encryption":"-","compression":"zstandard","created":"","modified":"","accessed":""}"#, "\n", )); }