forked from libarchive/libarchive
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
…ibarchive#2045) Submitting this test at the request of @kientzle on issue libarchive#2041. Note that failure is currently expected, as the feature it tests is not yet implemented!
- Loading branch information
Showing
4 changed files
with
109 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
/*- | ||
* SPDX-License-Identifier: BSD-2-Clause | ||
* | ||
* Copyright (c) 2024 Martin Matuska | ||
* All rights reserved. | ||
*/ | ||
|
||
/* | ||
Notes on reffile creation: | ||
- I chose an existing small text file on my machine that had extended attributes. | ||
An easy way to generate one is to download a file from github in Google Chrome, | ||
as mac will automatically set a "com.apple.metadata:kMDItemWhereFroms" xattr on the file. | ||
It also would have worked to set an xattr manually using xattr -w [-rsx] attr_name attr_value file ... | ||
- to verify the names/values of xattrs, run: xattr -l filename | ||
- I then zipped the file using right-click > Compress in Finder | ||
(Apple's officially recommended method for zip file creation) | ||
- I then uuencoded the zip file by running: uuencode version.txt.zip test_mac_metadata_zip.zip | ||
Zip created 12-31-2023 on a 2022 Mac Studio running macOS Ventura 13.6.3 (22G436) (Apple M1 Ultra - arm64) | ||
Contents: | ||
Length Method Size Cmpr Date Time CRC-32 Name | ||
-------- ------ ------- ---- ---------- ----- -------- ---- | ||
15 Defl:N 17 -13% 09-21-2023 01:05 f542663d version.txt | ||
1038 Defl:N 668 36% 09-21-2023 01:05 85bdc448 __MACOSX/._version.txt | ||
-------- ------- --- ------- | ||
1053 685 35% 2 files | ||
For additional notes, see: https://github.com/libarchive/libarchive/issues/2041#issuecomment-1873018929 | ||
*/ | ||
|
||
#include "test.h" | ||
|
||
DEFINE_TEST(test_mac_metadata_zip) | ||
{ | ||
#if !defined(__APPLE__) || !defined(UF_COMPRESSED) || !defined(HAVE_SYS_XATTR_H)\ | ||
|| !defined(HAVE_ZLIB_H) | ||
skipping("MacOS-specific Mac Metadata test"); | ||
#else | ||
const char *reffile = "test_mac_metadata_zip.zip"; | ||
|
||
const char *testattr = "com.apple.metadata:kMDItemWhereFroms"; | ||
void *readval_orig; | ||
void *readval; | ||
size_t size; | ||
int r; | ||
|
||
extract_reference_file(reffile); | ||
|
||
/* Extract an archive to disk with mac metadata. */ | ||
assertMakeDir("mac_metadata", 0755); | ||
r = systemf("%s -x -C mac_metadata --mac-metadata -f %s >mac_metadata.out 2>mac_metadata.err", testprog, reffile); | ||
assertEqualInt(r, 0); | ||
assertFileSize("mac_metadata/version.txt", 15); | ||
readval_orig = getXattr("mac_metadata/version.txt", testattr, &size); | ||
assertEqualInt(size, 658); | ||
|
||
/* Re-Archive with --mac-metadata --format zip */ | ||
assertMakeDir("mac_metadata/subdir", 0755); | ||
r = systemf("%s --mac-metadata --format zip -cvf mac_metadata/subdir/archive.zip -C mac_metadata version.txt", testprog); | ||
assertEqualInt(r, 0); | ||
assertFileSize("mac_metadata/subdir/archive.zip", 1088); | ||
|
||
/* Re-Extract with --mac-metadata, assert that xattr was preserved */ | ||
r = systemf("%s -x -C mac_metadata/subdir --mac-metadata -f mac_metadata/subdir/archive.zip >mac_metadata.out 2>mac_metadata.err", testprog); | ||
assertEqualInt(r, 0); | ||
assertFileSize("mac_metadata/subdir/version.txt", 15); | ||
readval = getXattr("mac_metadata/subdir/version.txt", testattr, &size); | ||
assertEqualInt(size, 658); | ||
|
||
/* Assert that it is identical to original */ | ||
assertEqualMem(readval_orig, readval, size); | ||
assertEqualFile("mac_metadata/version.txt", "mac_metadata/subdir/version.txt"); | ||
#endif | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
begin 644 test_mac_metadata_zip.zip | ||
M4$L#!!0`"``(`+@(-5<```````````\````+`"``=F5R<VEO;BYT>'155`T` | ||
M!RW/"V5/?9%E-L\+975X"P`!!/4!```$%````"M*SLG/2U4H,]0S,]$SX`(` | ||
M4$L'"#UF0O41````#P```%!+`P04``@`"`"X"#57```````````.!```%@`@ | ||
M`%]?34%#3U-8+RY?=F5R<VEO;BYT>'155`T`!RW/"V5/?9%EA'V1975X"P`! | ||
M!/4!```$%````(U336_3,!AVNTT,#<$0XD-HATJH@TM:QXG39%.$0K>I`PT0 | ||
[email protected][/=L7'GRH&?P#_@PIE_P!_@R(DC!VY(.*1C8UQF*?;KQX^? | ||
MO/;[&,W=N(#J"&TQWGC2;^PVIJW$T$7]$81FONI1SV<OHW.U8'O[6165.VJ7 | ||
MM$+]#&6VPM$B0K=YGK9842302IA4$PE1Q!3<>=JOJ+4EW?40NG+"2QE/JK5( | ||
M)_8>H>:I-5!,[V<K>UMKFPK2G3$(V!!Y*C5_YJ?N;B%T_82_/V&"92K.`#E? | ||
M%J!4_72W<:\<Y]!'^N/7X;5@_MU2X^;G;]_?GN_\9UM8)+%4&'^HU0=7Z\VQ | ||
M4H5<:;?S\!5P)5NC6(TGH3ZWX'FF(%,MG5V[0HU"Y-&$JSC/#`$),`D&DQ*4 | ||
M0<"A(;3-CHLM8CGM86B:CLV804*3&K9M=PQ&7,=@0V9Z%@SY,*3W=XT@?6,$ | ||
MR2@76C[U@YV^;?2V@J[1[P6$.LL5H2L@TGG$+/YO!YL[CAR^"7;O;?[[> | ||
MHU;0)!L$$PM[Q-3A1!HZ+664L;1TQUY+>R!@?P)23077=$']XSW;F&)J>R^G | ||
M:^N'12Q`^A;&4Z0?CS*F)@)\DWB10R-*;4P<[H04L,U"EW8\SW-MR_*P->2T | ||
M`Y@3'G'7=#V/>IR:MAE&Q*6G!2'J`8M`2'^<Z[P85[D8Q)%OF=0EENTM[\%1 | ||
M.<?+`HJ\C([email protected]#-]\]/Z&%&L`1F75?&94HR/4PTWK0=-@H=Q`AE+H6FM | ||
M'>B_:4I+':K_-=11`7YIP9BS4DA?7,Z5+JQ4`E@Z6*3'/JF<\,<4@B=Y!G^' | ||
MRA"RK=BH?6"V'+N%T3Q:J-N5[^JUJ0%G_O5C/=EO8^R:JP[%(1^2:+4[U@\$ | ||
M5M%O4$L'"$C$O86<`@``#@0``%!+`0(4`Q0`"``(`+@(-5<]9D+U$0````\` | ||
M```+`"````````````"D@0````!V97)S:6]N+G1X=%54#0`'+<\+94]]D64V | ||
MSPME=7@+``$$]0$```04````4$L!`A0#%``(``@`N`@U5TC$O86<`@``#@0` | ||
M`!8`(````````````*2!:@```%]?34%#3U-8+RY?=F5R<VEO;BYT>'155`T` | ||
M!RW/"V5/?9%EA'V1975X"P`!!/4!```$%````%!+!08``````@`"`+T```!J | ||
%`P`````` | ||
` | ||
end |