gFuNSSKrSSKrSSKrSSKrSSKJr SSKJrJr SSK J r SSK r SSK r SSK r SSKrSSKrSSKrSSKrSSKrSSKJr SSKJr SSKJr SSKJr SS KJr SSKrSSKrSSKrSSKrS r\R@RC\RD5S -r#\#S -r$\RJ"S SS9r&\R@RO\#S5r(\R@RO\#S5r)\R@RO\#S5r*\R@RO\#S5r+\R@RO\#S5r,Sr-Sr."SS5r/\R`"5"SS55r1\Rd"5"SS55r3\Rh"5"SS55r5"SS \/5r6"S!S"\65r7"S#S$\6\Rp5r9"S%S&\1\95r:"S'S(\3\95r;"S)S*\5\95r<"S+S,\6\Rp5r="S-S.\1\=5r>"S/S0\3\=5r?"S1S2\5\=5r@"S3S4\65rA"S5S6\A5rB"S7S8\B\Rp5rC"S9S:\1\B\Rp5rD"S;S<\3\B\Rp5rE"S=S>\5\B\Rp5rF"S?S@\A\Rp5rG"SASB\1\G5rH"SCSD\3\G5rI"SESF\5\G5rJ"SGSH\7\Rp5rK"SISJ\1\K5rL"SKSL\3\K5rM"SMSN\5\K5rN"SOSP\/\Rp5rO"SQSR\1\O5rP"SSST\3\O5rQ"SUSV\5\O5rR"SWSX\1\Rp5rS"SYSZ\6\Rp5rT"S[S\5rU"S]S^\U\6\Rp5rV"S_S`\U\6\Rp5rW"SaSb\/5rX"ScSd\X\Rp5rY"SeSf\1\Y5rZ"SgSh\3\Y5r["SiSj\5\Y5r\"SkSl\X\Rp5r]"SmSn\1\]5r^"SoSp\3\]5r_"SqSr\5\]5r`"SsSt\/5ra"SuSv\3\a\Rp5rb"SwSx\3\a\Rp5rc"SySz\1\a\Rp5rd"S{S|\1\a\Rp5re"S}S~\Rp5rf"SS\Rp5rg"SS\X\Rp5rh"SS\X\Rp5ri"SS\1\i5rj"SS\3\i5rk"SS\5\i5rl"SS\i5rm\R"\o"\S5S5"SS\Rp55rp"SS\g5rq"SS5rr"SS\r\Rp5rs"SS\r\Rp5rt"SS\r\Rp5ru"SS5rv"SS\v\Rp5rw"SS\1\v\Rp5rx"SS\3\v\Rp5ry"SS\5\v\Rp5rz"SS\Rp5r{"SS\Rp5r|"SS\Rp5r}"SS\Rp5r~\R"\o"\S5S5"SS\6\Rp55r"SS\3\Rp5rSr\R"\o"\S5S5\R"\o"\S5S5"SS\Rp555r"SS\6\Rp5r"SS\65r"SS\\Rp5r"SS\\Rp5r"SS\\Rp5r"SS\\Rp5r"SS\Rp5rSr"SS5r\GR(aSrOSr"SS\Rp5r"SS\GR \Rp5rSrSr\S:Xa\GR("5 gg!\a SrGNf=f!\a SrGNf=f!\a SrGNf=f!\a SrGNf=f)N)sha256)contextmanager ExitStack)Random)archiver_tests)support) os_helper) script_helper)warnings_helperc4[U5R5$N)r hexdigest)datas 8/opt/alt/python313/lib64/python3.13/test/test_tarfile.py sha256sumr*s $< ! ! ##z-tardirz -extract-testz testtar.tararchivetestdatasubdirztesttar.tar.gzztesttar.tar.bz2testtar.tar.xzztmp.tartesttar@e09e4bc8b3c9d9177e77256353b36c159f5f040531bbd4b024a8f9b9196c71ce@4f05a776071146756345ceee937b33fc5644f5a96b9780d1c7d6a32cdf164d7bcp\rSrSr\rSr\Rr\ RRr \ S5r Srg)TarTest>c4URUR-$r )prefixsuffixselfs rmode TarTest.modeDs{{T[[((rN)__name__ __module__ __qualname____firstlineno__tarnamer ioFileIOopentarfileTarFiletaropenpropertyr#__static_attributes__r%rrrr>s6G F 99Doo%%G ))rrcr\rSrSr\rSr\(a \ROSr \ RRr Srg)GzipTestHgzNr%)r&r'r(r)gzipnamer*r gzipGzipFiler-r.r/gzopenr0r2r%rrr4r4Hs(G F 4==dDoo$$Grr4cr\rSrSr\rSr\(a \ROSr \ RRr Srg)Bz2TestObz2Nr%)r&r'r(r)bz2namer*r r>BZ2Filer-r.r/bz2openr0r2r%rrr<r<Os(G F3;;4Doo%%Grr<cr\rSrSr\rSr\(a \ROSr \ RRr Srg)LzmaTestVxzNr%)r&r'r(r)xznamer*r lzmaLZMAFiler-r.r/xzopenr0r2r%rrrCrCVs(G F 4==dDoo$$GrrCc$\rSrSrSrSrSrSrg)ReadTest^r:cb[R"URURSS9Ulg)N iso8859-1r#encodingr.r-r*r#tarr!s rsetUpReadTest.setUpbs!<< 499)46rc8URR5 gr )rScloser!s rtearDownReadTest.tearDownfs rrSN)r&r'r(r)rrTrXr2r%rrrKrK^s F6rrKc\rSrSrSrSrg)StreamModeTesticd[R"URURSSS9Ulg)NrOT)r#rQstreamrRr!s rrTStreamModeTest.setUpms$<< 499)4'+-rrZN)r&r'r(r)rTr2r%rrr\r\is-rr\c\rSrSrSrSrSrSrSrSr Sr S r S r S r S rS r\R""\"\S5=(a \"\S5S5S5rSrg) UstarReadTestrcPURRS5nURRU5nUR5nUR [ U5UR S5 UR [U5[S5 SSS5 g!,(df  g=f)N ustar/regtyperegular file extraction failed) rS getmember extractfileread assertEquallensizersha256_regtyper"tarinfofobjrs rtest_fileobj_regular_file'UstarReadTest.test_fileobj_regular_filetsw(($$_5 XX ! !' *d99;D   SY 4 6   Yt_n4 6 + * *s AB B%chURRS[SS9 URRS5n[ [ R R[S5S5nUR5nSSS5 URRU5n[R"U5nUR5nURWUS5 UR[U5SS5 URUSSS5 SSS5 g!,(df  N=f!,(df  g=f) Nrerfilterrzfileobj.readlines() failedrcSzOI will gladly admit that Python is not the fastest running scripting language. )rSextractTEMPDIRrgr-ospathjoin readlinesrhr+ TextIOWrapperrjrk)r"rofobj1lines1rpfobj2lines2s rtest_fileobj_readlines$UstarReadTest.test_fileobj_readlines}s '&A(($$_5 "'',,w8# >%__&F?XX ! !' *d$$T*E__&F   VV0 2   S[#0 2   VBZ40 2+ *? >+ *s)DA,D# D # D1cURRS[SS9 URRS5n[ [ R R[S5S5nUR5nSSS5 URRU5n[[R"U55nURWUS5 SSS5 g!,(df  Ne=f!,(df  g=f)Nrerrtrvzfileobj.__iter__() failed)rSrxryrgr-rzr{r|r}rhlistr+r~rj)r"rorrrrs rtest_fileobj_iterUstarReadTest.test_fileobj_iters '&A(($$_5 "'',,w8# >%__&F? XX ! !' *e"**512F   VV/ 1+ *? > * *s)C3C* C'* C8c>URRS[SS9 [[R R [S5S5nUR5nSSS5 URRS5nURRU5nUR5nURS5 URSUR5S5 URSS5 URSUR5S5 URS S 5 URS UR5S 5 URS S 5 URSUR5S 5 URS5nURUWSSS5 URSS5 URURUR5S5 URUR5SS5 URUR*S5 URSUR5S5 URS5 UR5nURS5 UR5nURXgS5 URS5 UR[UR!55UR5S5 URS5 UR[UR!55S-UR5S5 URS5 UR!5nURUR5U[U5SS5 SSS5 g!,(df  GN$=f!,(df  g=f)Nrerrtrbrzseek() to file's start failediz"seek() to absolute position failediz+seek() to negative relative position failedz+seek() to positive relative position failed i zread() after seek failedzseek() to file's end failedrz0read() at file's end did not return empty stringz$relative seek() to file's end failedzreadlines() after seek failedztell() after readline() failedz)tell() after seek() and readline() failedzread() after readline() failed)rSrxryr-rzr{r|rirgrhseekrjtellrlr}rkreadline) r"rprrotextss1s2lines rtest_fileobj_seekUstarReadTest.test_fileobj_seeks ' &  ( "'',,w8$ ?499;D@(($$_5 XX ! !' *d99;D IIaL   Q 8 : IIdA    T499;= ? IIeQ    T499;F H IIdA    T499;F H " A   QT$3 5 IIaO   W\\499;6 8   TYY[#K M IIw||mQ '   Q ? A IIcN!B IIcN!B   R8 : IIaL   S1499;9 ; IIcN   S1C7D F IIaL==?D   TYY[$s4yz*:9 ;O+ * @ ?+ *sM<KN< N  Nc|URRS5n[R"U5nUR 5R S5nUR [U5[5 URS5 SSS5 g![a URS5 N&f=f!,(df  g=f)NrerOdzseeking failed in text mode) rSrhr+r~riencoderjrrmrAttributeErrorfailr"rprs rtest_fileobj_textUstarReadTest.test_fileobj_texts XX ! !/ 2d##D)D99;%%k2D   Yt_n = 9 # 3 2 " 9 78 9 3 2s*AB-2B  B*'B-)B**B-- B;c$URRU5nURRU5nURURUR5 SSS5 SSS5 g!,(df  N=f!,(df  g=fr )rSrhrjname)r"lnktyperegtypeabs r_test_fileobj_link UstarReadTest._test_fileobj_links_ XX ! !' *a XX ! !' *a   QVVQVV ,++ * * *+ *s"B'A0B0 A> :B Bc(URSS5 g)N ustar/lnktypererr!s rtest_fileobj_link1 UstarReadTest.test_fileobj_link1 Arc(URSS5 g)N./ustar/linktest2/lnktypeustar/linktest1/regtyperr!s rtest_fileobj_link2 UstarReadTest.test_fileobj_link2  ; 9 ;rc(URSS5 g)N ustar/symtypererr!s rtest_fileobj_symlink1#UstarReadTest.test_fileobj_symlink1rrc(URSS5 g)N./ustar/linktest2/symtyperrr!s rtest_fileobj_symlink2#UstarReadTest.test_fileobj_symlink2rrc(URSS5 g)Nsymtype2rerr!s rtest_issue14160UstarReadTest.test_issue14160s  O.filters(+ +GK'+Nrwrt/) r temp_cwdr.r-tmpname USTAR_FORMATformatrzmkdiraddrmdirrjrg)r"rrurSs rr#UstarReadTest.add_dir_and_getmembers    !gs+s$11 #HHTNGGDG0HHTN ,g&#  MM$'MM$*-'" !HHTN ,+'&" !sRD,D  %C/1D "D,*4DD,/DD  D D, D) %D,, D:r%N)r&r'r(r)rqrrrrrrrrrrrunittest skipUnlesshasattrrzrr2r%rrrbrbrsz62$1/;b 9- B;B;=, X.H72x3HBDDrrbc\rSrSrSrg)GzipUstarReadTesti r%Nr&r'r(r)r2r%rrrr rrc\rSrSrSrg)Bz2UstarReadTesti r%Nrr%rrrr rrrc\rSrSrSrg)LzmaUstarReadTestir%Nrr%rrrrrrrc,\rSrSrSrSrSrSrSrg)ListTestic`[R"URURS9Ulg)Nr#rRr!s rrTListTest.setUps<< 499=rc^[R"[R"5SSS9n[R"[ SU5 TR RSS9 SSS5 UR5R5nTRSU5 TRSU5 TRS U5 TRS U5 TRS U5 TRS U5 TRS U5 TRSU5 U4SjnTRU"S5U5 TRU"S5U5 TRU"S5U5 TRU"S5U5 TRU"S5U5 TRUS5 TRSU5 TRSU5 g!,(df  GNr=f)Nascii newlinestdoutFverboseustar/conttype ustar/regtypes ustar/lnktypesustar/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/1234567/longnames./ustar/linktest2/symtypes./ustar/linktest2/lnktypesustar/dirtype/sustar/dirtype-with-size/ct>URTRRS5nURSS5$)Nsurrogateescaperbackslashreplace)decoderSrQr)rrr"s rconv ListTest.test_list..conv(s0**,=>A88G%78 8rsustar/umlauts-s'misc/regtype-hpux-signed-chksum-s)misc/regtype-old-v7-signed-chksum-spax/bad-pax-spax/hdrcharset-s)ustar/conttype ?\r?\nustar/regtype ?\r?\nslink tos->) r+r~BytesIOr swap_attrsysrSrdetachgetvalueassertIn assertRegex assertNotIn)r"tiooutrs` r test_listListTest.test_listsrzz|WdC   sHc 2 HHMM%M (3jjl##% '- &, &, BCH 2C8 2C8 '- 137 9 dHI3O d;<=@ B d;<=@ B d67= d9:C@ 7 8 S) $C3 2s G  Gc|[R"[R"5SSS9n[R"[ SU5 UR RSS9 SSS5 UR5R5nSnURUSRUVVVs/sHupEnUS XV4-S --PM snnn55 URS U5 URS U5 URS U5 URSU5 URSU5 g!,(df  N=fs snnnf)NrrrrTr) )\? rw-r--r--7011)-rr )d rwxr-xr-x0)r r s255)rrr )ls rwxrwxrwxr )bs rw-rw----s3,0)cs rw-rw-rw-s1,3)prr rs%s tarfile/tarfile\s+%s s;\d{4}-\d\d-\d\d\s+\d\d:\d\d:\d\d ustar/\w+type[/>\sa-z-]*\nsustar/symtype -> regtypes1./ustar/linktest2/symtype -> ../linktest1/regtypes;./ustar/linktest2/lnktype link to ./ustar/linktest1/regtypes gnu/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longlink link to gnu/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longnames pax/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longlink link to pax/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longname) r+r~rrrrrSrrrrr|r)r"rrtype_perm_lengthstppermlns rtest_list_verboseListTest.test_list_verbose>s)rzz|WdC   sHc 2 HHMM$M '3jjl##%( chh" #":F20D:=334" #$ % 137 JCP 347 9 569 ; 569 ;?3 2( #sD&%D7& D4c[R"[R"5SSS9nSn[R"[ SU5 UR RSU"UR 5S9 SSS5 UR5R5nURSU5 URS U5 g!,(df  NQ=f) Nrrrc3f# UR5HnSUR;dMUv M g7f)Nreg) getmembersr)rSros rmembers+ListTest.test_list_members..membersds'>>+GLL(!M,s"1 1rF)rrrr) r+r~rrrrrSrrrrr)r"rrrs rtest_list_membersListTest.test_list_membersbsrzz|WdC "  sHc 2 HHMM%1BM C3jjl##% &, *C0 3 2s +B?? C rZN) r&r'r(r)rTrrrr2r%rrrrs>#%J";H 1rrc\rSrSrSrg) GzipListTestior%Nrr%rrr!r!orrr!c\rSrSrSrg) Bz2ListTestisr%Nrr%rrr#r#srrr#c\rSrSrSrg) LzmaListTestiwr%Nrr%rrr%r%wrrr%cP\rSrSrSrSrSrSrSrSr Sr S r S r S r S rg )CommonReadTesti{c6[[S5 SSS5 UR[R"[55 UR[R"[ R "[555 [[S5nUR[R"U55 SSS5 UR[R"[R"S555 g!,(df  N=f!,(df  NY=f)Nwbrsinvalid) r-r assertFalser. is_tarfiler FakePathr+rr"rps rtest_is_tarfile_erroneous(CommonReadTest.test_is_tarfile_erroneous}s '4 ! ++G45 ++I,>,>w,GHI'4 D   W//5 6! ++BJJz,BCD! ! sC9&D 9 D Dc UR[R"UR55 UR[R"[R "UR555 [ URS5nUR[R"U55 SSS5 [ URS5nUR[R"[R"UR5555 SSS5 g!,(df  Nu=f!,(df  g=f)Nr) assertTruer.r+r*r r,r-r+rrir-s rtest_is_tarfile_valid$CommonReadTest.test_is_tarfile_valids **4<<89 **9+=+=dll+KLM$,, % OOG..t4 5&$,, % OOG..rzz$))+/FG H& % & %& %s &D AD/ D,/ D=c[URS5n[R"U5 UR UR 5S5 SSS5 [URS5n[ R"UR55n[R"U5 UR UR 5S5 SSS5 g!,(df  N=f!,(df  g=f)Nrr) r-r*r.r+rjrr+rri)r"rp file_likes rtest_is_tarfile_keeps_position-CommonReadTest.test_is_tarfile_keeps_positions$,, %   t $   TYY[! ,&$,, % 499;/I   y )   Y^^-q 1& % & %& %s7C,AC! C! C/c[R"[URR SS55 SSS5 [R"[UR5nUR 5 UR UR5/5 WR5 g!,(df  Nu=f![Ra URS5 NIf=f!WR5 f=f)Nrvrz&tarfile.open() failed on empty archive) r.r-rr#replacegetnamesassertListEqualr ReadErrorrrWr"rSs rtest_empty_tarfile!CommonReadTest.test_empty_tarfiles \\'499#4#4S##> ? @ ,,w 2C LLN  !12 6 IIK@ ?    @ II> ? @ IIKs5B'5B86 C#' B58%C C#C  C##C5cUR[S5 [R"SUR5 SSS5 g!,(df  g=f)Nxxx)assertRaisesRegexFileNotFoundErrorr.r-r#r!s rtest_non_existent_tarfile(CommonReadTest.test_non_existent_tarfiles3 # #$5u = LL *> = =s "A Ac<[[S5 SSS5 UR[R[R[UR 5 UR[R[R[5 g!,(df  N=fNr))r-r assertRaisesr.r<r#r!s rtest_null_tarfile CommonReadTest.test_null_tarfiles]'4 ! '++W\\7DIIN '++W\\7C! s B  BcH[S5RS5nSHnUR[S5nUR US-5 [ R "S5n[U5UlUR UR55 UR U5 SSS5 [ R"[SSS 9nURUR5S/S U-5 UR5 M g!,(df  Nc=f!UR5 f=f) Nrr)arrfoorvT)r# ignore_zerosz3ignore_zeros=True should have skipped the %r-blocks) r randbytesr-rwriter.TarInforkrltobufr;r:rW)r"rcharrprorSs rtest_ignore_zeros CommonReadTest.test_ignore_zerossay""3'!D7C(D 4$;'!//%0"4y  7==?+ 4 ),,wStDC $$S\\^eWI !")( sA+C>%D> D D!c PSGHn[R"[S5n[R"S5nSUlUR U[ R"S55 SSS5 [[S5nURU5 SSS5 [R"[5nUR[RS5 UHnM SSS5 SSS5 [R"[5nUR5nUR[RS5 URU[SS 9 SSS5 UR[RS5 URU5R5 SSS5 SSS5 GM g!,(df  GNM=f!,(df  GN5=f!,(df  N=f!,(df  GN=f!,(df  N=f!,(df  Nt=f!,(df  GM"=f) N)riXriw:rNrsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazr+bzunexpected end of datarrt)r.r-rrRrladdfiler+rtruncaterBr<nextrxryrhri)r"rlrStrps rtest_premature_end_of_archive,CommonReadTest.test_premature_end_of_archivesq*Dgt,OOE* Arzz+67- gu% d#&g&#++G,=,=?WX !Y' g&#HHJ++G,=,=?WXKK76K:Y++G,=,=?WXOOA&++-Y '&+,, &%YX'&YXYX '&sxAF,>F>2!G! GG!1H8G3(H6 HH, F; > G  G G!! G0 3 H =H H H H% cUR[RS5 [R"[R "SSS95 SSS5 SSS5 g!,(df  N=f!,(df  g=f)Nz%file could not be opened successfullyz recursion.tarrr)rBr.r<r-rfindfiler!s rtest_length_zero_header&CommonReadTest.test_length_zero_headersX # #G$5$57^ _g..GXYZ[` _ZZ` _s#*A/ A A/ A, (A// A=cURRS5nURRU5nURURS5 UR [ UR5 URURS5 URUR5S5 URUR5S5 UR(a!UR [ UR5 O URUR5S5 URURS5 SSS5 URWRS5 URURS5 UR [ UR5 URURS5 URUR5S5 URUR5S5 UR(a!UR [ UR5 gURUR5S5 g!,(df  GN=f)NrerTF)rSrgrhrjrrHrfilenor#assertIsreadablewritable is_streamseekableclosed)r"filerps rtest_extractfile_attrs%CommonReadTest.test_extractfile_attrssxx!!/2 XX ! !$ '4   TYY 8   ndkk :   TYY - MM$--/4 0 MM$--/5 1~~!!.$--@ dmmot4 MM$++u -( dkk4( O4 .$++6 D) dmmot, dmmou- >>   ndmm < MM$--/4 0)( 's DI  Ir%N)r&r'r(r)r.r2r6r>rDrIrUr]rarlr2r%rrr'r'{s7E" I 2"+ D,.01rr'cv\rSrSrSrSrSrSrSrSr S!S jr S r S r S r S rSrSrSrSr\R("\"\S5S5\R0S55r\R4S5r\R4S5rSrSrSrSr Sr!Sr"\RF"\$SLS5S5r%Sr&S r'g)"MiscReadTestBaseiFc[URS5nURUR[5 [ R"XR S9nURUR[5 URUR[RRUR55 SSS5 SSS5 g!,(df  N=f!,(df  g=fNrfileobjr#) r-r*assertIsInstancerstrr.r#rjrzr{abspathr"rprSs rtest_no_name_argument&MiscReadTestBase.test_no_name_arguments $,, %  ! !$))S 1d;s%%chh4  277??499+EF<& %;;& %s$?CA$C :C C C C*cZ[URS5nUR5nSSS5 [R"W5nUR [ [US5 [R"XRS9nURUR5 g!,(df  Nz=f)Nrrrr) r-r*rir+rrHrgetattrr.r# assertIsNonerr"rprrSs rtest_no_name_attribute'MiscReadTestBase.test_no_name_attribute"sq $,, %99;D&zz$ .'4@ll4ii8 #((# & %s B B*cd[URS5nUR5nSSS5 [R"W5nSUl[ R"XRS9nURUR 5 SSS5 g!,(df  Nn=f!,(df  g=f)Nrrrr) r-r*rir+rrr.r#r|r}s rtest_empty_name_attribute*MiscReadTestBase.test_empty_name_attribute*su $,, %99;D&zz$ \\$YY 73   chh '8 7 & %8 7sB+B! B! B/c[R"UR[R5n[US5nUR UR [ 5 [R"X RS9nURUR 5 SSS5 SSS5 g!,(df  N=f!,(df  g=frq) rzr-r*O_RDONLYrtrintr.r#r|)r"fdrprSs rtest_int_name_attribute(MiscReadTestBase.test_int_name_attribute2szWWT\\2;; / "d^t  ! !$))S 1d;s!!#((+<^;;^s#?B9;B(B9( B6 2B99 Cc[R"UR5n[US5nUR UR [ 5 [R"X RS9nUR UR [ 5 URUR [RRUR 55 SSS5 SSS5 g!,(df  N=f!,(df  g=frq) rzfsencoder*r-rtrbytesr.r#rjr{rv)r"r*rprSs rtest_bytes_name_attribute*MiscReadTestBase.test_bytes_name_attribute;s++dll+ '4 D  ! !$))U 3d;s%%chh6  277??499+EF<! ;;! s$?C2,A$C!C2! C/ +C22 DNc4Uc URn[RRU5n[R "U5n[ R"XRS9nURURU5 SSS5 URU5nURURU5 SSS5 [ RRXRS9nURURU5 SSS5 URS:Xa;[ R"USS9nURURU5 SSS5 gg!,(df  N=f!,(df  N=f!,(df  N|=f!,(df  g=f)Nrrrv)r*rzr{rvr r,r.r-r#rjrr0r/r )r"r*expectedrSs rtest_pathlike_name#MiscReadTestBase.test_pathlike_nameCs ?llG77??7+$$W- \\' 2c   SXXx 03 \\' "c   SXXx 0# __ ! !' ! :c   SXXx 0; ;;" s3s  8443  3 2 " " : :43s0#EE'%E8/F  E$' E58 F FcbUR[R"UR55 gr )rrzrr*r!s rtest_pathlike_bytes_name)MiscReadTestBase.test_pathlike_bytes_nameRs  DLL 9:rc[[S5 SSS5 UR[S5 UR [S5nSSS5 UR[S5 UR [S5nSSS5 UR[S5 UR [S5nSSS5 g!,(df  N=f!,(df  N=f!,(df  Nf=f!,(df  g=f)Nr)z mode must be qrwr)r-rrB ValueErrorr0r=s rtest_illegal_mode_arg&MiscReadTestBase.test_illegal_mode_argUs '4 !  # #J @,,w,CA  # #J @,,w-CA  # #J @,,w+CA @ ! @ @ @ @ @ @s.B;C &CC.; C  C C+. C<cV[R"URURS9nUR 5 UR 5nUR nUR nURU5nUR5nSSS5 UR5 URUR5nURU5 URURSUS9nUR 5nURUR U5 UR5 URURU5R5WS5 SSS5 SSS5 g!,(df  N=f!UR5 f=f!,(df  N==f!,(df  g=f)NrrMr#rszseek back did not work) r.r-r*r#r[roffsetrhrirWrrjr)r"rSr\rrfrrps rtest_fileobj_with_offset)MiscReadTestBase.test_fileobj_with_offset_s2ll4<zwrong mtime for %szustar/r.zwrong uname for %s)rSrjrmtimer startswithunamers rtest_check_members#MiscReadTestBase.test_check_memberssqxxG   S/(7<<7 9<<**844   W]]I(7<<7 9  rctURURR5SRSS5 g)Nzmisc/eofzcould not find all members)rjrSrrr!s rtest_find_members"MiscReadTestBase.test_find_memberss/ ,,.r277, .rlinkMissing hardlink implementationcR[R"[SSS9nURS[SS9 UR [ R[RR[S55 URS[SS9 UR [ R[RR[S55 [[RR[S5S5nUR5nSSS5 UR[W5[5 URS [SS9 UR [ R[RR[S 55 [[RR[S 5S5nUR5nSSS5 UR[U5[5 SSS5 g!,(df  N=f!,(df  NG=f!,(df  g=f) NrrO) errorlevelrQrerrtrrr)r.r-r*rxry addCleanupr unlinkrzr{r|rirjrrm)r"rSrrs rtest_extract_hardlink&MiscReadTestBase.test_extract_hardlinks\ \\'a+ F# KKK @ OOI,,bggll7O.T U KKK @ OOI,,bggll7O.T Ubggll7O.format_mtimes7!%//(//yy{CC+22599rz,tar mtime {0} != file time {1} of path {2!a})r.r-r*rzr{r|ryrisdirrrrplatformrjr#statst_modegetmtimerrrWr rmtree) r"rSDIRr\ directoriesror{r file_mtimeerrmsgs rtest_extractall MiscReadTestBase.test_extractallsUll7[9ggll7L1   "&)7cWWY1cK7 NN3ON D&ww||C6<<7*$$W\\E%9%'WWT]%:%:U%B%,\\3:  WW--d3 GNN / ,   C#'& IIK   S !-8* IIK   S !s%F1F,5F,;D F1,F11(GcSn[RR[S5n[R"U5 [ R "[SS9nURU5nURXBSS9 [RRX!5nUR[RRU5UR5 [RS:wa3UR[R"U5R S-S 5 SSS5 ["R$"U5 g!,(df  N%=f!["R$"U5 f=f) N ustar/dirtype extractdirrOrrr{rurri)rzr{r|ryrr.r-r*rgrxrjrrrrrrr rr"dirtyperrSro extracteds rtest_extract_directory'MiscReadTestBase.test_extract_directorys!ggll7L1   "g <--0 Go FGGLL6   !1!1)!(( ' 's A)B B!z requires zlibcR[RRS5n[RUlUR [R5 [R"UR5 SSS5 SSS5 g!,(df  N=f!,(df  g=f)Nztarfile.TarInfo.fromtarfile) rmockpatchzliberror side_effectrHr.r<r-r*)r"rs rtest_zlib_error_does_not_leak.MiscReadTestBase.test_zlib_error_does_not_leak-sh]] !> ?4#zzD ""7#4#45 T\\*6@ ?55@ ?s#5B!B6B B B B&c[R"5n[R"USS9nUR 5 UR S5 [R"USS9nUR UR5S5 SSS5 UR S5 [R"USS9nUR UR5S5 SSS5 g!,(df  N^=f!,(df  g=f)Nrrrrr|rv)r+rr.r-rWrrjr[)r"rtfs rtest_next_on_empty_tarfile+MiscReadTestBase.test_next_on_empty_tarfile6s ZZ\ \\"3 /    \\"4 0B   RWWY -1  \\"3 /2   RWWY -0 / 1 00 /s!!C0!C+ C(+ C9r%r )(r&r'r(r)rhrxr~rrrrrrrrrrrrrrrrzr skip_unless_symlinkrskip_unless_working_chmodrrrrrrrrskipIfr r rr2r%rrrorosIG$(,G 5;,28<%M9.V,:<"">#<>$((")">(( ") " 4 4HI$&?__TT\?3+4+ .rroc\rSrSrSrSrg) MiscReadTestiCNr%)r&r'r(r)rr2r%rrrrCsNrrc\rSrSrSrg)GzipMiscReadTestiFr%Nrr%rrrrFrrrc\rSrSrSrg)Bz2MiscReadTestiIr%Nrr%rrrrIrrrc\rSrSrSrg)LzmaMiscReadTestiLr%Nrr%rrrrLrrrc4\rSrSrSrSrSrSrSrSr Sr g ) StreamReadTestiPrTcTURH[nUR5(dMURRU5nURS5nW(dOMSSS5 M] g![R a UR S5 N>f=f!,(df  M=f)Nrz6simple read-through using TarFile.extractfile() failed)rSisregrhrir. StreamErrorr)r"rorpbufs rtest_read_through StreamReadTest.test_read_throughUsxxG==??%%g.$B"iin/. #..B #ABB /.s0BA- B-%BBBB B' cNURR5nURRU5nUR5nSSS5 UR [ W5UR S5 UR [U5[S5 g!,(df  NU=f)Nrf) rSr[rhrirjrkrlrrmrns rrq(StreamReadTest.test_fileobj_regular_fileest((--/ XX ! !' *d99;D+ TGLL0 2 4.0 2 + *s B B$cURR5nURRUS5nUR[R UR 5 SSS5 g!,(df  g=fNr)rSrrhrHr.r"ri)r"tarinfosrs rtest_provoke_stream_error(StreamReadTest.test_provoke_stream_errornsR88&&( XX ! !(1+ .!   g11166 :/ . .s +A-- A;c[R"[SS9nURnUR 5nUR 5nUcOUR US5 UR 5(dUR5(a;UR[R5 URU5 SSS5 MURU5nURU5nUcMUR US5 URUR5UR5S5 GMUR5 g!,(df  N=f!UR5 f=f)NrOrzstream.next() failed.zstream.extractfile() failedzstream extraction failed)r.r-r*rSr[assertIsNotNoneislnkissymrHr"rhrjrirW)r"tar1tar2t1t2v1v2s rtest_compare_members#StreamReadTest.test_compare_membersss||Gk: 88DYY[YY[:$$R)@A88::**7+>+>?((,@%%b)%%b):$$R)FG  BGGI24#( JJL@? JJLs%B E'D?9A5E? E  EE"r%N) r&r'r(r)rrhr$rqr+r7r2r%rrrrPs FI 2; rrc\rSrSrSrg)GzipStreamReadTestir%Nrr%rrr:r:rrr:c\rSrSrSrg)Bz2StreamReadTestir%Nrr%rrr<r<rrr<c\rSrSrSrg)LzmaStreamReadTestir%Nrr%rrr>r>rrr>c\rSrSrSrSrg)TarStreamModeReadTesticvURHnM URURR/5 gr )rSrjr)r"_s rtest_stream_mode_no_cache/TarStreamModeReadTest.test_stream_mode_no_caches-A  ))2.rr%N)r&r'r(r)rCr2r%rrr@r@s/rr@c\rSrSrSrg)GzipStreamModeReadTestir%Nrr%rrrFrFrrrFc\rSrSrSrg)Bz2StreamModeReadTestir%Nrr%rrrHrHrrrHc\rSrSrSrg)LzmaStreamModeReadTestir%Nrr%rrrJrJrrrJc2\rSrSrSrSrSrSrSrSr g) DetectReadTestic[R"X5nUR5 g![RanUR 5 SnAgSnAff=fr )r.r-rWr<r)r"rr#rSes r_testfunc_fileDetectReadTest._testfunc_filesC ,,t*C IIK    IIKK s)AAAc[US5n[R"XUS9nSSS5 WR5 g!,(df  N=f![RanUR 5 SnAgSnAff=f)Nrrs)r-r.rWr<r)r"rr#rrSrNs r_testfunc_fileobj DetectReadTest._testfunc_fileobjs\ dD!Qll4q9" IIK "!    IIKK s+ A=A A AA<"A77A<cUR(Ga*UR[R5 [R"[ SUR-S9 SSS5 UR[R5 [R"[ SUR-S9 SSS5 UR[R5 [R"UR SS9 SSS5 UR[R5 [R"UR SS9 SSS5 U"UR S5 U"UR SUR-5 U"UR S5 U"UR SUR-5 U"UR S5 g!,(df  GNe=f!,(df  GN)=f!,(df  N=f!,(df  N=f)NrMrrrvzr:*r|*)r rHr.r<r-r*)r"testfuncs r _test_modesDetectReadTest._test_modess7 ;;;""7#4#45 W4$+++=>6""7#4#45 W4$+++=>6""7#4#45 T\\56""7#4#45 T\\56s#tdkk12u%tdkk12u%65555555s/'F7'G  G G,7 G G G), G:c:URUR5 gr )rXrOr!s rtest_detect_fileDetectReadTest.test_detect_files ,,-rc:URUR5 gr )rXrSr!s rtest_detect_fileobj"DetectReadTest.test_detect_fileobjs //0rr%N) r&r'r(r)rOrSrXr[r^r2r%rrrLrLs& .1rrLc\rSrSrSrg)GzipDetectReadTestir%Nrr%rrrararrrac\rSrSrSrSrg)Bz2DetectReadTestic.[[S5nUR5nSSS5 [R"[ SSS9nUR W5 SSS5 UR[ S5 g!,(df  NY=f!,(df  N6=f)Nrr)r compresslevelrV)r-r*rir>r@rrQrOrs rtest_detect_stream_bz2(Bz2DetectReadTest.test_detect_stream_bz2si '4 D99;D![[$a 8D JJt 9 GU+! 9 8sA5B5 B Br%N)r&r'r(r)rgr2r%rrrcrcs ,rrcc\rSrSrSrg)LzmaDetectReadTestir%Nrr%rrrjrjrrrjc\rSrSrSrSrSrg) GzipBrokenHeaderCorrectExceptioniz6 See: https://github.com/python/cpython/issues/107396 c[R"S5nUR[R5 [R "USS9 SSS5 g!,(df  g=f)Nszr|gzrr)r+rrHr.r<r-)r"rs rrunTest(GzipBrokenHeaderCorrectException.runTestsE JJ    w00 1 LL 02 1 1s A A#r%N)r&r'r(r)__doc__rnr2r%rrrlrls  1rrlc\rSrSrSSjrSrSrSrSrSr S r S r S r S r S rSrSrSrSrSrSrSrSrSrg)MemberReadTestiNc Ub[URRU5nUR[UR 55USUR -5 SSS5 SUS'SUS'SUS'SUR ;a S US 'S US 'UR 5H3upVUR[X5US U<S UR <35 M5 g!,(df  N=f)Nwrong sha256sum for %srrrrrzold-v7r.rgnamezwrong value in z field of )rSrhrjrriritemsr{)r"rochksumkwargsrkvs r _test_memberMemberReadTest._test_members  %%g.!  1668!4f07<<?A/'wu u 7<< ''F7O'F7OLLNDA   WW0!78',,G I#/.s 8C CcdURRS5nURUS[S9 g)NrecrlrxrSrgr|rmrs rtest_find_regtype MemberReadTest.test_find_regtype s+(($$_5 '^DrcdURRS5nURUS[S9 g)Nzustar/conttyperrrrs rtest_find_conttype!MemberReadTest.test_find_conttype s,(($$%56 '^DrcZURRS5nURUSS9 g)NrrrlrSrgr|rs rtest_find_dirtype MemberReadTest.test_find_dirtypes)(($$_5 '*rcZURRS5nURUSS9 g)Nzustar/dirtype-with-sizerrrs rtest_find_dirtype_with_size*MemberReadTest.test_find_dirtype_with_sizes*(($$%>? ',rc\URRS5nURUSSS9 g)Nrrrerllinknamerrs rtest_find_lnktype MemberReadTest.test_find_lnktypes+(($$_5 'ODrc\URRS5nURUSSS9 g)Nrrrrrrs rtest_find_symtype MemberReadTest.test_find_symtypes+(($$_5 'I>rc^URRS5nURUSSSS9 g)N ustar/blktyperrldevmajordevminorrrs rtest_find_blktype MemberReadTest.test_find_blktype!-(($$_5 'ABrc^URRS5nURUSSSS9 g)N ustar/chrtyperrrrrrs rtest_find_chrtype MemberReadTest.test_find_chrtype%rrcZURRS5nURUSS9 g)Nustar/fifotyperrrrs rtest_find_fifotype!MemberReadTest.test_find_fifotype)s*(($$%56 '*rcdURRS5nURUS[S9 g)Nz ustar/sparsePrrSrgr| sha256_sparsers rtest_find_sparseMemberReadTest.test_find_sparse-s+(($$^4 'mDrcdURRS5nURUS[S9 g)N gnu/sparserrrrs rtest_find_gnusparse"MemberReadTest.test_find_gnusparse1s+(($$\2 'mDrcdURRS5nURUS[S9 g)Ngnu/sparse-0.0rrrrs rtest_find_gnusparse_00%MemberReadTest.test_find_gnusparse_005,(($$%56 'mDrcdURRS5nURUS[S9 g)Ngnu/sparse-0.1rrrrs rtest_find_gnusparse_01%MemberReadTest.test_find_gnusparse_019rrcdURRS5nURUS[S9 g)Ngnu/sparse-1.0rrrrs rtest_find_gnusparse_10%MemberReadTest.test_find_gnusparse_10=rrcdURRS5nURUS[S9 g)Nuustar/umlauts-ÄÖÜäöüßrrrrs rtest_find_umlauts MemberReadTest.test_find_umlautsAs2(($$&DE '^DrcZSnURXRR55 g)Naustar/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/12345/1234567/longname)rrSr:)r"rs rtest_find_ustar_longname'MemberReadTest.test_find_ustar_longnameFs < dHH--/0rcdURRS5nURUS[S9 g)Nzmisc/regtype-old-v7rrrrs rtest_find_regtype_oldv7&MemberReadTest.test_find_regtype_oldv7Js,(($$%:; '^DrcURR5 [R"URUR SS9UlURR S5nURUS[S9 g)NrOrPupax/umlauts-ÄÖÜäöüßrr) rSrWr.r-r*r#rgr|rmrs rtest_find_pax_umlauts$MemberReadTest.test_find_pax_umlautsNs_ << 499)46(($$&DE '^DrrZr )r&r'r(r)r|rrrrrrrrrrrrrrrrrrr2r%rrrrrrsoI"EE+-E?CC+EEEEEE 1EErrrc2\rSrSrSrSrSrSrSrSr g) LongnameTestiWcURS-S-S-nURRU5nUR WR [RS5 g![a UR S5 NIf=f)Nr123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longnamezlongname not foundzread longname as dirtype) rrSrgrrassertNotEqualrr.r)r"rros rtest_read_longnameLongnameTest.test_read_longnameYsp;;$|3j@ ,hh((2G GLL'//* , , II* + ,sAA<;A<c URS-S-S-nURS-S-S-nURRU5nUR WR US5 g![a UR S5 N;f=f)Nrrrlonglinkzlonglink not foundzlinkname wrong)rrSrgrrrjr)r"rrros rtest_read_longlinkLongnameTest.test_read_longlinkcs;;$|3j@;;$|3j@ ,hh((2G ))85EF , II* + ,sA%%BBcURS-S-S-nURRU5nURnURRR U5 [ R"URRRS55nUR[R5 [R"SUS9 SSS5 g!,(df  g=f)Nrrrizfoo.tar)rrs) rrSrgrrsrr+rrirHr.r<r-)r"rrorrps rtest_truncated_longname$LongnameTest.test_truncated_longnamels;;$|3j@(($$X. f%zz$((**//89   w00 1 LLi 62 1 1s :C C'cURS-S-S-nURRU5Rn[ [ S5nUR U5 [RRURS5SS5nURURUR5 SSS5 g!,(df  g=f)NrrrrrrOstrict)rrSrgrr-r*rr.rRfrombufrirjr longnametype)r"rrrpros rtest_header_offsetLongnameTest.test_header_offsetus;;$|3j@##H-44 '4 D IIf oo--diin.98EG   W\\4+<+< = ! s A(B<< C c Sn[R"5 [R"[S5nUR Ul[ R"U5 URU5 [ R"URS55 SSS5 [R"[5nURURU55 URURURS555 SSS5 SSS5 g![ R"URS55 f=f!,(df  N=f!,(df  NR=f!,(df  g=f)Nzfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/rr)r rr.r-rrrzrrrrstripr.rg removesuffix)r"longdirrSs rtest_longname_directory$LongnameTest.test_longname_directorys#    !gs+s![[ 2HHW%GGG$HHW^^C01 ,g&#$$S]]7%;<$$S]]73G3G3L%MN'" !HHW^^C01 ,+'&" !sSE#E'D.%E"E#6AEE#'D>>E E E# E E## E1r%N) r&r'r(r)rrrrrr2r%rrrrWs,G7 > Orrcv\rSrSrSr\R r\Rr Sr Sr Sr Sr Sr\S5rS rg ) GNUReadTestignucURRU[SS9 [RR [U5n[ US5nUR5nSSS5 UR[W5[SU-5 UR5(a@[R"U5nURURS-UR5 gg!,(df  N=f)Nrrtrrtr)rSrxryrzr{r|r-rirjrr_fs_supports_holesr assertLess st_blocksst_size)r"rrrprrs r_test_sparse_fileGNUReadTest._test_sparse_files wv677<<. (D !T99;D" 4-(4/ 1  " " $ $!A OOAKK#-qyy 9 % " !s C"" C0c&URS5 g)Nrrr!s rtest_sparse_file_old GNUReadTest.test_sparse_file_olds |,rc&URS5 g)Nrrr!s rtest_sparse_file_00GNUReadTest.test_sparse_file_00 /0rc&URS5 g)Nrrr!s rtest_sparse_file_01GNUReadTest.test_sparse_file_01rrc&URS5 g)Nrrr!s rtest_sparse_file_10GNUReadTest.test_sparse_file_10rrc[RRS5(a[RR [ S5n[US5nURS5 URS5 UR5 SSS5 [R"U5n[R"U5 URS-UR:$g!,(df  NW=f)N)linuxandroidz sparse-testr)isxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrF)rrrrzr{r|ryr-rrQrZrr rrr)rrprs rrGNUReadTest._fs_supports_holess << " "#7 8 877<<7DdD!T $ ;'  "  A   T "KK#% 1 2"!s 3C C'r%N)r&r'r(r)rr.GNUTYPE_LONGNAMEr GNU_FORMATrrrrrr staticmethodrr2r%rrrrsJ F++L   F :-111rrcZ\rSrSrSr\R r\Rr Sr Sr Sr Sr g) PaxReadTestipaxc:[R"[SS9nURS5nUR UR S5 UR UR S5 UR URRS5S5 URS5nUR UR S 5 UR UR S5 UR URRS5S5 URS 5nUR UR S 5 UR UR S 5 UR URRS5S5 UR5 g!UR5 f=f) NrOr pax/regtype1rNrzVENDOR.umlautsuÄÖÜäöüßz pax/regtype2rz pax/regtype3r.) r.r-r*rgrjrrv pax_headersgetrWr"rSros rtest_pax_global_headers#PaxReadTest.test_pax_global_headerssAll7[9 mmN3G   W]]E 2   W]]E 2   W00445EF; =mmN3G   W]]B /   W]]E 2   W00445EF; =mmN3G   W]]I 6   W]]I 6   W00445EF; = IIKCIIKs EFFcv[R"[SS9nURS5nUR UR S5 UR UR S5 UR URS5 UR URS5 UR [UR5[5 UR [URS5S5 UR [URS5S5 UR5 g!UR5 f=f) NrOrz pax/regtype4r{g^ Aatimectime) r.r-r*rgrjrlrrrrrr rWr s rtest_pax_number_fields"PaxReadTest.test_pax_number_fieldssll7[9 mmN3G   W\\4 0   W[[# .   W[[# .   W]]L 9   T'--0% 8   U7#6#6w#?@, O   U7#6#6w#?@, O IIKCIIKs C:D&&D8c SnSS0nUGHYnURUS9 [R"[S[RSS9n[R "5nSUlS UlX%lURU5 UR5 [[S 5nUR5nURS U5 URS U5nSSS5 [[S 5nUR5 URW5 SSS5 UR![R"S 5 [R"[SS9 SSS5 SSS5 GM\ g!UR5 f=f!,(df  N=f!,(df  N=f!,(df  NS=f!,(df  GM=f)N) s foo=bar s0 s1 s2 s3 = s4 =a s1000000 foo=bar s 0 foo=bar s -12 foo=bar s$000000000000000000000000036 foo=bar rNr)headerrrOrrQrrrs 11 foo=bar r)z)method tar: ReadError\('invalid header'\)r)subTestr.r-r PAX_FORMATrRrrr rYrWrirr9rZrQrBr<)r"pax_header_replacementsr  replacementrSr\rrs rtest_pax_header_bad_formats'PaxReadTest.test_pax_header_bad_formatssH # en 2K[1ll7C8J8J,79 )A"AFAE$/MKKNIIK'4(A668DMM/48<<ED) '4(AJJLGGDM)++G,=,=?klLL;?m+213IIK(( )(ml+21sk*F0:E( F0!5E=F0."F(F08FF0(E::F0= F F0 F F0 F- )F00 G r%N)r&r'r(r)rr.XHDTYPErrrrrrr2r%rrrrs+ F??L   F. (@rrc \rSrSrSrSrSrg) WriteTestBasei"c[R"5n[R"XRS9nUR [R "S55 SSS5 URURS5 UR5nA[R"5 URUR5 URX1R55 g!,(df  N=f)NrrrNz#external fileobjs must never closed) r+rr.r-r#rYrRr*rjrr gc_collectrj)r"rprSrs rtest_fileobj_no_close#WriteTestBase.test_fileobj_no_close&szz| \\$YY 73 KK. /8 &KL}}  % }}/8 7s &C C-c4[R"[UR5n[R"S5n[R [R - UlURU[R"SUR-55 SSS5 UR[S5nUR[UR55[R S-5 SSS5 g!,(df  Nh=f!,(df  g=f)NrNrMrr)r.r-rr#rR RECORDSIZE BLOCKSIZErlrYr+rrjrkri)r"rSr\rps rtest_eof_markerWriteTestBase.test_eof_marker2s \\'499 -&A'''*;*;;AF KK2::dQVVm4 5. YYw %   S-w/A/AA/E F& % . - & %sA0C84;D 8 D Dr%N)r&r'r(r)r$r)r2r%rrr!r!"s  0 Grr!c\rSrSrSrSrSrSrSrSr Sr \ R"\ "\S 5S 5S 5r\R"S 5rS rSrSSjr\R"S5rSrSrSrSrSrSrg) WriteTesti@rXcSn[R"[UR5n[R"U5nUR U5 UR 5 [R"[5nURUR5SUS5 UR 5 g!UR 5 f=f!UR 5 f=f)Nd0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789rz!failed to store 100 char filename) r.r-rr#rRrYrWrjr:)r"rrSr\s rtest_100_char_nameWriteTest.test_100_char_nameDs !ll7DII. %A KKN IIKll7#    S\\^A.7 9 IIK IIK IIKs'B0;$C0CCc[R"[UR5n[R R [S5n[US5nURS5 SSS5 URU5 UR5 UR[R R[5SS5 g!,(df  Nd=f!UR5 f=f)Nrkr)aaarztarfile is empty) r.r-rr#rzr{r|ryrQrrW assertGreatergetsize)r"rSr{rps r test_tar_sizeWriteTest.test_tar_sizeXsll7DII. 77<<0DdD!T 6"" GGDM IIK 277??73Q" $ "! IIKs#0CC)C CCC*cR[R"[UR5n[R R [S5n[US5 SSS5 URU5nURURS5 [US5nURS5 SSS5 URU5nURURS5 UR5 g!,(df  N=f!,(df  N]=f!UR5 f=f)Nrkr)rr2r) r.r-rr#rzr{r|ry gettarinforjrlrQrW)r"rSr{rorps rtest_file_sizeWriteTest.test_file_sizefsll7DII. 77<<0DdD!"nnT*G   W\\1 -dD!T 6""nnT*G   W\\1 - IIK"! "! IIKs<0DC2ADD,5D2 D<D D DD&c[RR[S5n[R"U5 [ R "[UR5nURU5nURURS5 UR5 [R"U5 g!UR5 f=f![R"U5 f=f)N directoryr)rzr{r|ryrr.r-rr#r8rjrlrWr rr"r{rSros rtest_directory_sizeWriteTest.test_directory_sizevsww||G[1  ",,w 2C ...  q1 OOD ! OOD !s#%C "-B7C 7C  C C$cl[RR[S5n[R"U5 [ [RRUS5S5R 5 [ [RRUS5S5R 5 [R "[UR5n[RRS5nSS/Ul URU5 SSS5 /nUR5H>nUR![RR#UR$5S5 M@ UR'U/SQ5 UR 5 [(R*"[RRUS55 [(R*"[RRUS55 [(R,"U5 g!,(df  GN=f!UR 5 f=f![(R*"[RRUS55 [(R*"[RRUS55 [(R,"U5 f=f)Nr<1r2z os.listdirr)r<rArB)rzr{r|ryrr-rWr.rr#rrr return_valuerrappendsplitrrjr rr)r"r{rS mock_listdirpathsms rtest_ordered_recursion WriteTest.test_ordered_recursionsww||G[1  RWW\\$ $c*002 RWW\\$ $c*002 ",,w 2C ]]((6,14c L-GGDM7)ALLqvv!6r!:;*  (?@   RWW\\$4 5   RWW\\$4 5 OOD !76   RWW\\$4 5   RWW\\$4 5 OOD !s>,%H3H1H  A0H<H3 HHH00H33BJ3ch[R"[UR5n[R R [S5n[US5nURS5 SSS5 UR[R"U55nURU5nURUR[5 URURUR5 URUR S5 SSS5 g!,(df  N=f!,(df  g=f)Nrkr)r2r)r.r-rr#rzr{r|ryrQr8r r,rtrrurjrl)r"rSr{rprotarinfo2s rtest_gettarinfo_pathlike_name'WriteTest.test_gettarinfo_pathlike_names \\'499 -77<<0DdD!T 6""nnY%7%7%=>G~~d+H  ! !',, 4   W\\8== 9   W\\1 -. -!!. -s$1D#D)B D# D D## D1rrcV[RR[S5n[RR[S5n[ US5nUR S5 SSS5 [R "X!5 [R"[UR5nURU5 URU5nURURS5 UR5 [ R""U5 [ R""U5 g!,(df  N=f![anURSU-5 SnANSnAff=f!UR5 f=f![ R""U5 [ R""U5 f=f)Nr link_targetr)r2 os.link(): %sr)rzr{r|ryr-rQrPermissionErrorskipTestr.rr#r8rjrlrWr r)r"rtargetrprNrSros rtest_link_sizeWriteTest.test_link_sizes"ww||GV,g}5 &$ 4 JJv   / GGF ! #,,w 2C v&...  q1   V $   T "#  / MM/A- . . /   V $   T "sHD)0D:%E:->E%+E:) D7: E"EE"%E77E::.F(c[RR[S5n[R"SU5 [ R "[UR5nURU5nURURS5 UR5 [R"U5 g!UR5 f=f![R"U5 f=f)NsymlinkrPr)rzr{r|ryrXr.r-rr#r8rjrlrWr rr=s rtest_symlink_sizeWriteTest.test_symlink_sizesww||GY/ =$' #,,w 2C ...  q1   T "   T "s#%C #-B8C 8C  C C%cJ[RR[5n[R "[UR 5nURURUS5 URU5 URUR5/S5 [R"[5 URU5 SSS5 URUR5/S5 UR5 g!,(df  N@=f!UR5 f=f)Nzarchive name must be absolutezadded the archive to itself)rzr{rvrr.r-r#rjrrr:r change_cwdryrW)r"dstnamerSs r test_add_selfWriteTest.test_add_selfs''//'*ll7DII.    SXXw3 5 GGG    S\\^R1 3%%g. /   S\\^R1 3 IIK /. IIKs% A)D3C?)D? D  DD"c[RR[S5n[R"U5 SH8n[RRX5n[ R "U5 M: Sn[R"[URSS9nURUSUS9 UR5 UR[5 URUSSSU5 SSS5 [R"[S 5nUH;nURUR S 5 URUR"S 5 M= UR[%UR'55S 5 UR5 [ R("U5 g!UR5 f=f!,(df  N=f!UR5 f=f![ R("U5 f=f) Nru)rNrbazc~[RRUR5S:XagSUlSUlU$)NrrrN)rzr{basenamerrrrs rru%WriteTest.test_filter..filters377##GLL1U:! % rrOr empty_dir)arcnameruTrvrrNr)rzr{r|ryrr create_empty_filer.r-rr#rrWrH TypeErrorrjrrrkrr)r"tempdirrrurSros r test_filterWriteTest.test_filtersf'',,w1  &-ww||G2++D1. ,,w KHC VD ""9-dD&A.,,w,C "G$$W[[#6$$W]]E: #  S^^%5!6:   W % .-   W %sUA%G"F$3%GF9.#GA*G <G$F66G9 GG GGG7Nc[RR[S5nU(d[R "U5 O[R "U5 [R"[UR5nURXAS9 UR5 [R"[S5nUR5nUR5 U(d[R"U5 O[R"U5 UR!UR"U=(d UR%[R&S55 g!UR5 f=f!UR5 f=f)NrNrfrvr)rzr{r|ryr rgrr.r-rr#rrWr[rrrjrr9sep)r"r{cmp_pathdirrNrSr\s r_test_pathnameWriteTest._test_pathnamesggll7E*  ' ' , HHSMll7DII.  GGCG & IIKll7C(  A IIK   S ! OOC  !FT\\"&&#-FG IIK IIKs?E:E'E$'E9c[RR[S5n[RR[S5n[R"U5 [RRUS5n[RRUS5n[ US5nUR S5 SSS5 [R"X45 [R "US5nURUSS9 URUSS9 SSS5 [R "USS 9nURUS S 9 SSS5 [R"U5 [R"U5 g!,(df  N=f!,(df  N{=f![a URS 5 Ntf=f!,(df  N~=f![R"U5 [R"U5 f=f) N testsymlinksztestsymlinks.tarsourcerXrz something rmrrrrz&extractall failed with symlinked files)rzr{r|ryrr-rQrXr.rrOSErrorrr rr)r"ri temparchive source_file target_filerrSs rtest_extractall_symlinks"WriteTest.test_extractall_symlinks#sn'',,w7ggll7,>?   &'',,wx8K'',,wy9Kk#&! &' JJ{ 0k3/3 X6 Y70ka8CHNN*9#;9   [ )   W %!'&0/HIIFGH 98   [ )   W %ss A G ,E8>5G 3!F G 1F;3FG 8 FG FG F85F;7F88F;; G G .G:cURS5 UR[RRSSS55 UR[RRSSS55 UR[RRSS55 UR[RRSSS55 UR[RRSSSS55 UR[RRSSSS55 UR[RRSSSS55 UR[RRSS55 UR[RRSSS55 UR[RRSSSS55 UR[RRSSSS55 URS[R-[R-S-5 URS[R-[R-SSS9 g)NrN.r..T)rp)rqrzr{r|rnr!s rtest_pathnamesWriteTest.test_pathnames>s E" BGGLLU;< BGGLLe<= BGGLLe45 BGGLLeS9: BGGLLeS%@A BGGLLeT5AB BGGLLeT5AB BGGLLu56 BGGLLud;< BGGLLuc5AB BGGLLudEBC EBFFNRVV3e;< EBFFNRVV3UErc[RS:XaURSS5 gURSS5 URSS5 g)NrzC:\foorNz/fooz///foo)rrrqr!s rtest_abs_pathnamesWriteTest.test_abs_pathnamesOs> <<7 "    5 1    .   % 0rcH[R"[5 [R"[ UR 5nURS5 UR5 [R"[ S5nUHJnURS:wdMURURRS5UR5 ML UR5 SSS5 g!UR5 f=f!UR5 f=f!,(df  g=f)Nr~rv./) r r\ryr.r-rr#rrWrr1rr"rSr\s rtest_cwdWriteTest.test_cwdVs  ! !' *,,w 2C   ,,w,C Avv}(9(9$(?H + *   + *sA&DC)+D?C>9C>D)C;;D>DD D!c ^[[[4Hm"U4SjS[R5nU"5n[ R "U5 URT5 [R"[URU[RSS0S9 SSS5 SSS5 URUR5 M g!,(df  N6=f!,(df  N?=f)Nc&>\rSrSrSrU4SjrSrg)8WriteTest.test_open_nonwritable_fileobj..BadFileiiTc:>UR(a SUlTegNFfirst)r"rexctypes rrQ>WriteTest.test_open_nonwritable_fileobj..BadFile.writekszz%* % "rrN)r&r'r(r)rrQr2)rsrBadFileris&&rrnonr)rsrr )rwEOFError RuntimeErrorr+rr check_no_resource_warningrHr.r-rr#rr*rj)r"rrrs @rtest_open_nonwritable_fileobj'WriteTest.test_open_nonwritable_fileobjgs,6G &"** & A99$?!!'* Wdii$+$6$6*/)9;+@   QXX &!7+*@?s$C!7CC C C C' c,[R"[UR5nUR [ 5nUR [5 URU5 SSS5 SSS5 g!,(df  N=f!,(df  g=fr ) r.r-rr#r8r*rHrrYr s rtest_missing_fileobjWriteTest.test_missing_fileobjzs[ \\'499 -nnW-G"":. G$/. -... -s#+BA4#B4 B >B Br%r)r&r'r(r)rr/r5r9r>rIrMrrrrzrUr rrYr^rjrqr{rrrrrr2r%rrr,r,@s F( $ "", .V,:<#<#,"" ## #$"&PH:""&#&4F"1"'&%rr,c\rSrSrSrg) GzipWriteTestir%Nrr%rrrrrrrc\rSrSrSrg) Bz2WriteTestir%Nrr%rrrrrrrc\rSrSrSrg) LzmaWriteTestir%Nrr%rrrrrrrc\rSrSrSrSrSr\R"\ RS:g=(a \ "\ S5S5\R"\R=(d \R S5S 55rS rg) StreamWriteTestiw|Nc^[R"[UR5nUR 5 UR (agUR 5n[[S5nUR 5nSSS5 URW5nURURS5 O.UR[5nUR 5nSSS5 URWRS5[RS5 g!,(df  N=f!,(df  NP=f)Nrzfound trailing datarLzincorrect zero padding) r.r-rr#rW decompressorri decompressr* unused_datarjcountr')r"rSdecrprs rtest_stream_padding#StreamWriteTest.test_stream_paddingsll7DII.   ##%Cgt$yy{%>>$'D   S__.C D7#tyy{$ E*G,>,>0 2%$ $#s'D D D D,rumaskzMissing umask implementationz$Emscripten's/WASI's umask is a stub.c[RR[5(a[R "[5 [R "S5n[R"[UR5nUR5 [R"[5RS-nURUSS5 [R "U5 g![R "U5 f=f)Nrizwrong file permissions)rzr{existsrr rrr.r-r#rWrrrj)r"original_umaskrSr#s rtest_file_modeStreamWriteTest.test_file_modes 77>>' " "   W %% %,,w 2C IIK777#++e3D   T5*B C HH^ $BHH^ $s A/C C8r%)r&r'r(r)rrrrrrrrrzrr is_emscriptenis_wasirr2r%rrrrsp FL2 0IWR5I79 __0. % 9 %rrc\rSrSrSrSrg)GzipStreamWriteTestic [R"[UR5R 5 [ R "[5RSS9n[RR[5U;deg)zN Ensure the source directory is not included in the tar header per bpo-41316. zlatin-1rN) r.r-rr#rWrr read_textrzr{dirname)r"payloads r test_source_directory_not_leaked4GzipStreamWriteTest.test_source_directory_not_leakedsV  Wdii(..0,,w'1191Ewww'w666rr%N)r&r'r(r)rr2r%rrrrs7rrc>\rSrSr\(a \R OSrSrg)Bz2StreamWriteTestiNr%)r&r'r(r)r>BZ2Decompressorrr2r%rrrrs*-3&&4Lrrc>\rSrSr\(a \R OSrSrg)LzmaStreamWriteTestiNr%)r&r'r(r)rGLZMADecompressorrr2r%rrrrs,04((dLrrc*\rSrSrSrSrSrSrSrg)_CompressedWriteTestisFAnd we move to Bristol where they have a special, Very Silly candidatec8[R"5n[R"[UR UUS9nUR [R"S5[R"UR55 SSS5 U$!,(df  U$=f)NrerN) r+rr.r-rr#rYrRru)r"rfrptarfls r_compressed_tar$_CompressedWriteTest._compressed_tarskzz| \\'499d(57:? MM'//%0"**T[[2I J7 77 s AB  BcrURU5nURUR5SSSU-5 g)Nrrs BZh%d1AY&SYrrjrr"rfrps r_test_bz2_header%_CompressedWriteTest._test_bz2_headers7##M2 2.'-7 9rclURU5nURUR5SSS5 g)Nrsrrs r_test_gz_header$_CompressedWriteTest._test_gz_headers/##M2 !,o>rr%N) r&r'r(r)rurrrr2r%rrrrs&F9 ?rrc\rSrSrSrSrSrg)Bz2CompressWriteTestirXcjURS5 URS5 URS5 gNr rr!s rtest_compression_levels,Bz2CompressWriteTest.test_compression_levels, a  a  a rr%Nr&r'r(r)rrr2r%rrrrs F!rrc\rSrSrSrSrSrg)Bz2CompressStreamWriteTestircjURS5 URS5 URS5 grrr!s rr2Bz2CompressStreamWriteTest.test_compression_levelsrrr%Nrr%rrrrs F!rrc\rSrSrSrSrSrg)GzCompressWriteTestirXcjURS5 URS5 URS5 grrr!s rr+GzCompressWriteTest.test_compression_levels, Q Q Qrr%Nrr%rrrrs F rrc\rSrSrSrSrSrg)GzCompressStreamWriteTestircjURS5 URS5 URS5 grrr!s rr1GzCompressStreamWriteTest.test_compression_levelsrrr%Nrr%rrrrs F rrcH\rSrSrSr\R "5S5rSrg)CompressLevelRaisesicSn[R"5nUR[5 [R "[ SX!S9 SSS5 g!,(df  g=f)NrrXre)r+rrHrhr.r-rrs rtest_compresslevel_wrong_modes2CompressLevelRaises.test_compresslevel_wrong_modess< zz|   y ) LL$ J* ) )s A Ac[R"5nUR[5 [R "[ SUSS9 SSS5 UR[5 [R "[ SUSS9 SSS5 UR[5 [R "[ SUSS9 SSS5 g!,(df  N=f!,(df  NY=f!,(df  g=f)Nzw:bz2rrerzw|bz2)r+rrHrr.r-rr-s rtest_wrong_compresslevels-CompressLevelRaises.test_wrong_compresslevelsszz|   z * LL'4q A+   z * LL'4r B+   z * LL'4r B+ * + * * * * *s#C$CC$ C C!$ C2r%N) r&r'r(r)rr requires_bz2rr2r%rrrrs'K  CCrrcd\rSrSrSrSSjrSSjrSrSrSr S r S r S r S r S rSrSrg) GNUWriteTestic.[U5S-S-nUS-$)Nrr)rk)r"rblockss r_lengthGNUWriteTest._lengthsQ3"|rNcSn[U5[R:aUS- nX0RU5- nUb5[U5[R:aUS- nX0RU5- nU$)Nr)rkr. LENGTH_NAMEr LENGTH_LINK)r"rrrs r _calc_sizeGNUWriteTest._calc_sizesi t9w** * SLE \\$' 'E  D G,?,? ? SLE \\$' 'E rc[R"U5nU(aX#l[RUl[R "[ S5n[RUlURU5 URX5nURnURXVS5 UR5 [R "[ 5nUR5nURUS5 URUR UR S5 URURURS5 UR5 g!UR5 f=f!UR5 f=f)Nrz%GNU longname/longlink creation failedzunable to read longname member)r.rRrLNKTYPErr-rrrrYrrrjrWr[r.r)r"rrrorSr5r6members r_testGNUWriteTest._test%s//$' # "??GLll7C(  ++CJ KK ,BB   R%L M IIKll7# XXZF  4 6   W\\6;;4 6   W--v4 6 IIK IIK IIKsAEA0E+E(+E=c&URS5 g)Nlongnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnamrr!s rtest_longname_1023GNUWriteTest.test_longname_1023Bs 12rc&URS5 g)Nlongnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnamerr!s rtest_longname_1024GNUWriteTest.test_longname_1024Es 23rc&URS5 g)Nlongnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longnam/longname_rr!s rtest_longname_1025GNUWriteTest.test_longname_1025Hs 34rc(URSS5 g)Nrlonglnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnkrr!s rtest_longlink_1023GNUWriteTest.test_longlink_1023Ks 69:rc(URSS5 g)Nrlonglnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlinkrr!s rtest_longlink_1024GNUWriteTest.test_longlink_1024Ns 6:;rc(URSS5 g)Nrlonglnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlink_rr!s rtest_longlink_1025GNUWriteTest.test_longlink_1025Qs 6; :345;<=345rrc\rSrSrSrSrSrg)DeviceHeaderTestiarXc>[RR[S5n[R"U5 [ R "[UR5n[ R"SS9n[ R"SS9n[ RUl [ RUl URU5 URU5 UR5 [ R "[S5nURS5nURS5nUR5 UR!UR"S5 UR!UR$S5 UR!UR"S5 UR!UR$S5 [ [S5nUR'5nSSS5 WUR(UR*n XR(UR*n [-SS 5n UR!XS 5 UR!XS 5 [.R0"U5 g!UR5 f=f!UR5 f=f!,(df  N=f![.R0"U5 f=f) Ndevice_header_testmy_block_devicermy_regular_filervrriIiYs00000000000000s)rzr{r|ryrr.r-rr#rRBLKTYPErREGTYPErYrWrgrjrrrir offset_dataslicer r) r"rirS input_blk input_reg output_blk output_reginfiler#buf_blkbuf_regdevice_headerss r*test_headers_written_only_for_device_files;DeviceHeaderTest.test_headers_written_only_for_device_fileses'',,w(<= # &,,w 2C #OO1BC #OO1BC !( !(  I& I& ,,w,C  ]]+<=  ]]+<=    Z00! 4   Z00! 4   Z00! 4   Z00! 4gt$kkm%*++J,B,BCG++J,B,BCG#31N   W46F G   W4j A   W %3  %$   W %sV%J"A4I +J"I$BJ4I3A-J IJI00J3 J=JJr%N)r&r'r(r)rr:r2r%rrr(r(as F'&rr(c\rSrSrSr\R R\S5r Sr \ S5r \ S5r SrSrS rS rS rS rS rg) CreateTestizx: spameggs42c8[R"[5 gr )r rrr!s rrTCreateTest.setUps!rc[URS5nURS5 SSS5 g!,(df  g=f)Nr)r2)r- file_pathrQ)clsrps r setUpClassCreateTest.setUpClasss* #-- &$ JJv ' & &s 2 AcD[R"UR5 gr )r rrBrCs r tearDownClassCreateTest.tearDownClasss'rc[R"[UR5nUR UR 5 SSS5 UR [5nUR5nSSS5 UR[W5S5 URSUS5 g!,(df  Nm=f!,(df  NP=fNrr>r) r.r-rr#rrBr0r:rjrkrr"tobjnamess r test_createCreateTest.test_creates \\'499 - HHT^^ $.\\' "dMMOE# UQ' lE!H- . -# "sB)B:) B7: Cc>[R"[UR5nUR UR 5 SSS5 UR [5 [R"[UR5nSSS5 UR[5nUR5nSSS5 UR[W5S5 URSUS5 g!,(df  N=f!,(df  N~=f!,(df  Na=frK) r.r-rr#rrBrHFileExistsErrorr0r:rjrkrrLs rtest_create_existingCreateTest.test_create_existings \\'499 - HHT^^ $.   /<<3D0\\' "dMMOE# UQ' lE!H-. -0 /# "s#C,&C="D, C:= D  DcxUR[S5nURUR5 SSS5 UR[5nUR 5nSSS5 UR [ W5S5 URSUS5 g!,(df  Nm=f!,(df  NP=fNxrr>r)r0rrrBr:rjrkrrLs rtest_create_taropenCreateTest.test_create_taropens \\'3 '4 HHT^^ $(\\' "dMMOE# UQ' lE!H- ( '# "sBB+ B(+ B9c8UR[S5nURUR5 SSS5 UR [ 5 UR[S5 SSS5 SSS5 UR[5nUR 5nSSS5 UR[W5S5 URSUS5 g!,(df  N=f!,(df  N=f!,(df  N=f!,(df  Nr=frV) r0rrrBrHrRr:rjrkrrLs rtest_create_existing_taropen'CreateTest.test_create_existing_taropens \\'3 '4 HHT^^ $(   /gs+,0\\' "dMMOE# UQ' lE!H-( ',+0 /# "s;CC:'C))C:D  C&) C7 3C:: D Dc [R"[R"[5UR 5nUR UR[5 URUR[RR[55 UR[R"UR55 UR5nSSS5 UR[!W5S5 UR#SUS5 UR%[5nUR5nSSS5 UR[!U5S5 UR#SUS5 g!,(df  N=f!,(df  NP=frK)r.r-r r,rr#rtrrurjrzr{rvrrBr:rkrr0rLs rtest_create_pathlike_name$CreateTest.test_create_pathlike_names \\),,W5tyy AT  ! !$))S 1   TYY(@ A HHY''7 8MMOE B UQ' lE!H- \\' "dMMOE# UQ' lE!H-B A# "sBE.$E?. E<? F cUR[R"[5S5nUR UR [ 5 URUR [RR[55 UR[R"UR55 UR5nSSS5 UR[W5S5 URSUS5 UR[5nUR5nSSS5 UR[U5S5 URSUS5 g!,(df  N=f!,(df  NP=frV)r0r r,rrtrrurjrzr{rvrrBr:rkrrLs r!test_create_taropen_pathlike_name,CreateTest.test_create_taropen_pathlike_names \\),,W5s ;t  ! !$))S 1   TYY(@ A HHY''7 8MMOE < UQ' lE!H- \\' "dMMOE# UQ' lE!H-< ;# "sBEE0 E-0 E>r%N)r&r'r(r)rrzr{r|ryrBrT classmethodrDrHrOrSrXr[r^rar2r%rrr=r=sf F Wl3I"((. .. . . .rr=c\rSrSrSrSrg)GzipCreateTestic [R"[URSS9nUR UR 5 SSS5 [R"[SSS9nSSS5 g!,(df  N3=f!,(df  g=f)Nrrezr:gzr.r-rr#rrBr"rMs rtest_create_with_compresslevel-GzipCreateTest.test_create_with_compresslevelsZ \\'499A >$ HHT^^ $? \\'6 ;t < ;? > ; ;A.#A?. A<? B r%Nr&r'r(r)rir2r%rrrererrec\rSrSrSrSrg) Bz2CreateTestic [R"[URSS9nUR UR 5 SSS5 [R"[SSS9nSSS5 g!,(df  N3=f!,(df  g=f)Nrrer:bz2rgrhs rri,Bz2CreateTest.test_create_with_compresslevelsZ \\'499A >$ HHT^^ $? \\'7! < = <? > <  > AFb  J ]  ]Cj * *-2#J 7 8rr%r ) r&r'r(r)rrrrr2r%rrrr7s0@258rrc>\rSrSrSrSrSrSrSrSr Sr S r g ) UnicodeTestic&URS5 g)NrO_test_unicode_filenamer!s rtest_iso8859_1_filename#UnicodeTest.test_iso8859_1_filenames ##K0rc&URS5 g)Nutf7rr!s rtest_utf7_filenameUnicodeTest.test_utf7_filenames ##F+rc&URS5 g)Nutf-8rr!s rtest_utf8_filenameUnicodeTest.test_utf8_filenames ##G,rc[R"[SURUSS9nSnUR [R "U55 UR 5 [R"[US9nURUR5SRU5 UR 5 g!UR 5 f=f!UR 5 f=f)NrrrrQerrorsrrr) r.r-rrrYrRrWrjrr)r"rQrSrs rr"UnicodeTest._test_unicode_filenamesll7C $,X? !D KK- . IIKll7X6    S^^-a055t < IIK IIK IIKs'B79-C 7C  Cct[R"[SURSSS9n[R"5nSUlUR [URU5 SUlSUl UR [URU5 UR5 g!UR5 f=f)NrrrrrrN) r.r-rrrRrrH UnicodeErrorrYrrWr s rtest_unicode_filename_error'UnicodeTest.test_unicode_filename_errorsll7C $+H> oo'G)GL   lCKK A GL*GM   lCKK A IIKCIIKs A,B%%B7c[R"[SSSS9nUHnUR[ UR 5[ 5 UR[ UR5[ 5 UR[ UR5[ 5 UR[ UR5[ 5 M UR5 g!UR5 f=f)NrvrOrrQr) r.r-r*rerrrurrrvrWrs rtest_unicode_argument!UnicodeTest.test_unicode_argumentsll7C$/B  d166lC0 d1::.4 d177mS1 d177mS1  IIKCIIKs B-CC-c4[R"S5nSUlSUl[R"[ SUR SS9nURU5 UR5 [R"[ SS9nURS5nURURS5 URURS5 UR [R:warUR5 [R"[ SS9nURS5nURURS5 URURS5 UR5 g!UR5 f=f!UR5 f=f) NrNrrrO)r#rrQrru ) r.rRrrvr-rrrYrWrgrjr)r"r\rSs rtest_uname_unicodeUnicodeTest.test_uname_unicodes" OOE "  ll7T[[$/1  KKN IIKll7[9  e$A   QWWn 5   QWWn 5{{g000 ll7W=MM%(  *>?  *>? IIK IIK IIKs E0CF0FFr%N) r&r'r(r)rrrrrrrr2r%rrrrs%1,-   rrcp\rSrSr\R rSrSrSr Sr Sr Sr SS jr S rS rSS jrS rg)UstarUnicodeTesti cURS5 URS[5 URS5 URS[5 gNr.e01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890ud01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567ÿue012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678ÿ_test_ustar_namerr!s rtest_unicode_name1#UstarUnicodeTest.test_unicode_name1 B /0 5zB ?@ @*MrcRURS5 URS[5 gNud012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345ÿÿue0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456ÿÿrr!s rtest_unicode_name2#UstarUnicodeTest.test_unicode_name2 " AB BJOrcURS5 URS[5 URS5 URS[5 g)Na01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789a0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123/40123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012ÿ/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123ÿ/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789rr!s rtest_unicode_longname1'UstarUnicodeTest.test_unicode_longname1& sD NO NPZ[ PQ QS]^rc\URS[5 URS[5 g)Nu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901ÿ/20123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901ÿÿ/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789rr!s rtest_unicode_longname2'UstarUnicodeTest.test_unicode_longname2, s& PR\] SU_`rc~URS[5 URS5 URS[5 g)Nu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901ÿÿ/20123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567ÿu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678ÿrr!s rtest_unicode_longname3'UstarUnicodeTest.test_unicode_longname30 s5 TV`a ^_ _aklrcRURS5 URS[5 g)Nu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345ÿÿu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456ÿÿrr!s rtest_unicode_longname4'UstarUnicodeTest.test_unicode_longname45 s# `a acmnrNc[R"[SURSS9n[R"U5nUcUR U5 OUR X#R U5 SSS5 UcH[R"[SSS9nUHnURXR5 O SSS5 gg!,(df  NZ=f!,(df  g=f)Nrrrrvr) r.r-rrrRrYrHrjrr"rexcrSr\s rr!UstarUnicodeTest._test_ustar_name9 s \\'3t{{W MQT%A{ A!!#{{A6 N ;gsW=A$$T662>= N M>=sAC%C C C!cURS5 URS[5 URS5 URS[5 gr_test_ustar_linkrr!s rtest_unicode_link1#UstarUnicodeTest.test_unicode_link1H rrcRURS5 URS[5 grrr!s rtest_unicode_link2#UstarUnicodeTest.test_unicode_link2N rrc[R"[SURSS9n[R"S5nXlUcUR U5 OURX#R U5 SSS5 UcH[R"[SSS9nUHnURXR 5 O SSS5 gg!,(df  NZ=f!,(df  g=f)NrrrrNrvr) r.r-rrrRrrYrHrjrs rr!UstarUnicodeTest._test_ustar_linkR s \\'3t{{W MQT&AJ{ A!!#{{A6 N ;gsW=A$$T::6>= N M>=sAC%C C C'r%r )r&r'r(r)r.rrrrrrrrrrrrr2r%rrrr sG  ! !F N P _ am o N P rrc2\rSrSr\R rSrSrg)GNUUnicodeTestib cSH:up[R"[USS9nURU5nSSS5 M< g![a UR S5 N*f=f!,(df  Mo=f)N))rupax/bad-pax-)rOupax/bad-pax-äöürrz%unable to read bad GNU tar pax headerr.r-r*rgrrr"rQrrSr\s rtest_bad_pax_header"GNUUnicodeTest.test_bad_pax_headerf sqG d+A88< GIIEFG 88(A#AA A#A  A## A2 r%N) r&r'r(r)r.rrrr2r%rrrrb s   F Grrc6\rSrSr\R rSrSrSr g)PAXUnicodeTestit NcSH:up[R"[USS9nURU5nSSS5 M< g![a UR S5 N*f=f!,(df  Mo=f)N))rupax/hdrcharset-)rOupax/hdrcharset-äöürrz)unable to read POSIX.1-2008 binary headerrrs rtest_binary_header!PAXUnicodeTest.test_binary_header{ sq?NHg%68;>K d+A88? KIIIJK 88rr%) r&r'r(r)r.rrrrr2r%rrrrt s   F#' Krrc*\rSrSrSrSSjrSrSrg)AppendTestBasei c[Ul[RR UR5(a![ R "UR5 ggr )rr*rzr{rr rr!s rrTAppendTestBase.setUp s7 77>>$,, ' '   T\\ * (rc[R"[SS9nURS5nSUlUR U5n[R"URU5nUR X45 SSS5 SSS5 SSS5 g!,(df  N=f!,(df  N(=f!,(df  g=f)NrOrrerN)r.r-r*rgrrhrY)r"r#srcr\rrSs r_create_testtarAppendTestBase._create_testtar s \\'K 8C o.AAF#q\\$,,5KK%6$9 865$#9 8s;*B3"B"&B8B"B3 B B"" B0 ,B33 CcURSUR-5 UR[R[R [ S5 g)NrXr)rr rHr.r<r-rr!s rtest_append_compressed%AppendTestBase.test_append_compressed s7 TDKK/0 '++W\\7CHr)r*N)rX)r&r'r(r)rTrrr2r%rrrr s+ &Irrct\rSrSrSrSSjrS/S4SjrSrSrSr S r S r S r S r S rSrSrSrSrg) AppendTesti Nc[R"URSUS9nUR[R"S55 SSS5 g!,(df  g=f)NrrRr)r.r-r*rYrR)r"rsrSs r _add_testfileAppendTest._add_testfile s9 \\$,,W = KK. /> = =s &A Arc[R"URUS9nURUR 5U5 SSS5 g!,(df  g=f)NrR)r.r-r*rjr:)r"rNrsrSs rrAppendTest._test s8 \\$,, 8C   S\\^U 39 8 8s !A  AcDUR5 UR5 gr )r rr!s rtest_non_existingAppendTest.test_non_existing s  rc[R"URS5R5 UR 5 UR 5 g)NrX)r.r-r*rWr rr!s r test_emptyAppendTest.test_empty s2 T\\4(..0  rc[R"S5nURU5 URS5 UR US9 g)NsrrR)r+rr rrr-s rtest_empty_fileobjAppendTest.test_empty_fileobj s7zz,' 4  !  4  rc8UR5 [URS5nUR5nSSS5 [R "W5nUR U5 URS5 URSS/US9 g!,(df  NY=f)NrrrNr)rNrs) rr-r*rir+rr rrrs r test_fileobjAppendTest.test_fileobj sr  $,, %99;D&zz$ 4  !  % 6 & %s B  BcfUR5 UR5 URSS/S9 g)NrNr)rN)rr rr!s r test_existingAppendTest.test_existing s,   % (rc[URS5nURU5 SSS5 UR[R UR 5 g!,(df  N9=frG)r-r*rQrHr.r<r )r"rrps r _test_errorAppendTest._test_error sH $,, % JJt & '++T-?-?@& %s A A*c&URS5 g)Nrr!r!s r test_nullAppendTest.test_null s rc&URS5 g)N r$r!s rtest_incompleteAppendTest.test_incomplete  $rcn[R"S5R5nURU5 g)NrNr.rRrSr!r"rs rtest_premature_eofAppendTest.test_premature_eof s'u%++- rct[R"S5R5nURUS-5 g)NrNr(r-r.s rtest_trailing_garbage AppendTest.test_trailing_garbage s,u%++-  *+rc&URS5 g)Nsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar$r!s r test_invalidAppendTest.test_invalid r+rr%r )r&r'r(r)rr rrrrrrr!r%r)r/r2r5r2r%rrr r  sS!0!'44 ! 7)A %,%rr c\rSrSrSrg)GzipAppendTesti r%Nrr%rrr8r8 rrr8c\rSrSrSrg) Bz2AppendTesti r%Nrr%rrr:r: rrr:c\rSrSrSrg)LzmaAppendTesti r%Nrr%rrr<r< rrr<c&\rSrSrSrSrSrSrg) LimitsTesti c[R"S5nUR[R5 [R"S5nUR [ UR[R5 [R"S5nUR[R5 [R"S5nUR [ UR[R5 [R"S5nUR [ UR[R5 [R"S5nSUlUR [ UR[R5 [R"S5nSUlUR [ UR[R5 g) Nr.ra123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longnamea1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/1234567/longname123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/longnamerr )r.rRrSrrHrrrrs rtest_ustar_limitsLimitsTest.test_ustar_limits s4//"34 g**+//"9: *gmmW5I5IJ//":; g**+//">? *gmmW5I5IJ//";< *gmmW5I5IJ//*-4 *gmmW5I5IJ//&)   *gmmW5I5IJrc~[R"S5nUR[R5 [R"S5nSUlUR[R5 [R"S5nSUlUR [UR[R5 gNr@rrl)r.rRrSrrrrHrrs rtest_gnu_limitsLimitsTest.test_gnu_limits s~//";< g(()//*-4 g(()//&)+  *gmmW5G5GHrc^[R"S5nUR[R5 [R"S5nSUlUR[R5 [R"S5nSUlUR[R5 grE)r.rRrSrrrrs rtest_pax_limitsLimitsTest.test_pax_limits sr//";< g(()//*-4 g(()//&)+  g(()rr%N)r&r'r(r)rBrFrIr2r%rrr>r> sK> I *rr>c\rSrSrSrSrSrSrSrSr \ R"\ R"5S5\ R"\"\S 5S 5\ R R#S 5S 555rS rg)MiscTesti! cHUR[R"SSSS5S5 UR[R"SSSS5S5 UR[R"SSS5S5 UR[R"S SS5S5 g) NrNrrsfoofoobarrr~sfoobar)rjr.stnntsr!s rtest_char_fieldsMiscTest.test_char_fields# s UAwA) + Xq'8D ! %5wI  ]GXF rcUR[R"S5S5 UR[R"S5S5 UR[R"S5S5 UR[R"S5S5 UR[R"S 5S 5 UR[R"S 5S 5 UR[R"S 5S5 UR[R"S5S5 UR[R"S5S5 g)N0000001r7777777 rArrLrs )rjr.ntir!s rtest_read_number_fields MiscTest.test_read_number_fields- s ^4a8 ^4i@ %HI# % %HI# % %HI  %HI  %HI+ - U+Q/ \2A6rc UR[R"S5S5 UR[R"S5S5 UR[R"S[RS9S5 UR[R"S[RS9S 5 UR[R"S [RS9S 5 UR[R"S [RS9S 5 UR[R"S[RS9S5 UR[R"S[RS9S 5 UR[R"S[RS9S5 UR[R"[R"S[RS95S5 g)NrrUrWrVrArrXrZrYrr[r]r\r_r^gYg0Bsgr)rjr.itnrr`r!s rtest_write_number_fields!MiscTest.test_write_number_fieldsA sa Q8 Y/@ Z8J8JK< > Z8J8JK< > R0B0BC< > T'2D2DE< > %7,3,>,>@< > VG4F4FG< > ]7;M;MN< > W[[g>P>P%QRTUVrcUR[5 [R"SS[R5 SSS5 UR[5 [R"SS[R5 SSS5 UR[5 [R"SS[R 5 SSS5 UR[5 [R"SS[R 5 SSS5 g!,(df  N=f!,(df  N=f!,(df  Nu=f!,(df  g=f)NrrNrAll)rHrr.rdrrr!s rtest_number_field_limits!MiscTest.test_number_field_limitsX s   z * KKAw33 4+   z * KK Aw';'; <+   z * KK7+=+= >+   z * KK q'*<*< =+ * + * * * * * * *s/'D'D#'D4"'E D # D14 E Ec@1Skn[R"U[US9 g)N>/NULgrprdr`rQpwdrPmainr.CHRTYPErrr/SYMTYPEXGLTYPErversionAREGTYPECONTTYPEFIFOTYPEfilemoder( GNU_MAGIC GNU_TYPES PAX_FIELDSr'rr POSIX_MAGIC copyfileobj ExFileObject calc_chksums LENGTH_PREFIX REGULAR_TYPESEOFHeaderErrorGNUTYPE_SPARSEPAX_NAME_FIELDSSOLARIS_XHDTYPESUPPORTED_TYPESEmptyHeaderErrorGNUTYPE_LONGLINKrrsymlink_exceptionInvalidHeaderErrorTruncatedHeaderErrorSubsequentHeaderError) not_exported)r check__all__r.)r"rs r test__all__MiscTest.test__all__b s =  T7Frc@[RR[RR[5SS5nUR [ R5n[ R"S54n[RRR[ RSUS9 [ R"U5 SSS5 SSS5 URS[!WR"55 g!,(df  N<=f!,(df  NE=f)Nrrzlzma module is not availablerI)r z? - method xz: CompressionError('lzma module is not available') )rzr{r|rrrHr.r<CompressionErrorrrrrr/r-rru exception)r"fnameexcinfor s r.test_useful_error_message_when_modules_missing7MiscTest.test_useful_error_message_when_modules_missingq s RWW__X68IK[\   w00 1W,,-KLME$$++GOOXSX+Y U#Z2 O !! " ZY2 1s%"AD1C>D> D D Dzrequires symlink supportchmodzmissing os.chmodos.chmodc^[RR[S5mU4SjnX!l[RR[S5n[ 5nUR SSS9 UR S[RSS9 UR SUS9 SSS5 [R"U5 WR5RTS S 9 [R"U5 [R"T5 g!,(df  Np=f![R"U5 [R"T5 f=f) N test127987c>[RRU5n[RRUT/5T:wa [ SU5eg)Nz8should not try to chmod anything outside the destination)rzr{realpath commonpath Exception)r{r#ry target_pathris rmock_chmod_side_effectRMiscTest.test_deferred_directory_attributes_update..mock_chmod_side_effect sH''**40Kww!!;"89WD Z\ghhEroutside_tree_dirrWr~ symlink_to ?rwsrwsrwtrr#rSr)rzr{r|ryr  ArchiveMakerrr.rmakedirsr-rr r)r" mock_chmodrrarcris @r)test_deferred_directory_attributes_update2MiscTest.test_deferred_directory_attributes_update} s '',,w 5 i"877<<1CD ^s GGCCG ( GGCgooLG A GGC$4G 5 $% & HHJ ! !wu ! =   - .   W %^   - .   W %s AD ?D D.E r%N)r&r'r(r)rRrarerirrrrr can_symlinkrrzrrrr2r%rrrLrL! s 7(W.> G  ..02LM W-/AB ]]$&%CN&rrLc\rSrSrSrSrSrSrSrSr Sr S r S r S r S rS rSrSrSrSrSrSrSrSrSrSrg)CommandLineTesti c[R"SS/UQ70UD6up4nUR[RR 5S5$)N-mr. )r assert_python_okr9rzlinesepr)r"argsryrcrerrs r tarfilecmdCommandLineTest.tarfilecmd sJ$55dI@@8>@ {{2::,,.66rc2[R"SS/UQ76$)Nrr.)r assert_python_failure)r"rs rtarfilecmd_failure"CommandLineTest.tarfilecmd_failure s224JTJJrcf[R"SSS9[R"SSS9/nUR[RU5 [ R "US5nUH0nURU[RRU5S9 M2 SSS5 g!,(df  g=f)Ntokenize_tests.txt tokenizedatar9tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txtrrm) rr`rr rr.r-rrzr{rc)r"tar_namefilesrtardatas rmake_simple_tarfile#CommandLineTest.make_simple_tarfile s!!"6)79!!#>)79:  (((3 \\(C (B w(8(8(AB!) ( (s "7B"" B0cUR[RU5 [R"US5n[R "S5nUR U[R"S5S9 [R "S5nUR U[R"S5S9 SSS5 g!,(df  g=f)NrbenignrrR../evil) rr rr.r-rRrYr+r)r"rrrevils rmake_evil_tarfile!CommandLineTest.make_evil_tarfile s~  (((3 \\(C (B__X.F JJvrzz#J 7??9-D JJtRZZ_J 5 ) ( (s A5B66 CcUR5upnURUS5 URSUR55 URSUR55 URSUR55 URSS5upnURUS5 UR UR 5S5 g)Nrsusageserrorsrequired-lr)rrjrlowerrstrip)r"rrrs r test_bad_useCommandLineTest.test_bad_use s..0  c" h , h , k399;/..tR8  c" CIIK-rcv[H/nSH&nURX!5nURUS5 M( M1 g)N)-tz--testr) testtarnamesrrjr"roptrs rtest_test_command!CommandLineTest.test_test_command s4$H%ooc4  c*&%rc x[H0nSH'nURUSUSS9nURSU5 M) M2 g)N-vz --verboserrPYTHONIOENCODINGsis a tar archive. )rrrrs rtest_test_command_verbose)CommandLineTest.test_test_command_verbose sB$H(ooc47>&@ 4c:)%rc [R"SSS9nURSU5up#nURSU5 UR US5 UR US5 [ HnUR US9 [US 5nUR5nSSS5 [[S 5nURWSS 5 SSS5 URS[5up#nUR US5 UR US5 [R"[5 SSS5 M g!,(df  N=f!,(df  N=f![R"[5 f=f!,(df  GM=f) N zipdir.ziprrr is not a tar archive.rr)rrr)r) rr`rrrjrrr-rirrQr r)r"zipnamerrrrrrs rtest_test_command_invalid_file.CommandLineTest.test_test_command_invalid_file s,""<8IJ..tW=  /5 c" Q$Hx0(D)Q668D*.gt,Tc +-#'#:#:4#ILBS$$S#.$$R+$$W-10%))-, $$W-10sU9 E3D2E3 E0EAE E32 E <E3 E EE00E33 F c[Hn[R"5n[R"US5nUR SS9 SSS5 SSS5 WR 5RSS5nSH$nURXQSS9nURXd5 M& M g!,(df  Ne=f!,(df  Nn=f)NrvFrrr)rz--listr rrcaptured_stdoutr.r-rrrrrjr"rr\rrrrs rtest_list_command!CommandLineTest.test_list_command s$H((*a\\(C0BGGEG*1+zz|**74FGH%ooc7>&@  /& %00+*s"B7B&B7& B4 0B77 C c [Hn[R"5n[R"US5nUR SS9 SSS5 SSS5 WR 5RSS5nSH&nURUSUSS9nURXd5 M( M g!,(df  Ng=f!,(df  Np=f) NrvTrrrrrrrrs rtest_list_command_verbose)CommandLineTest.test_list_command_verbose s$H((*a\\(C0BGGDG)1+zz|**74FGH(ooc47>&@  /) %00+*s"B9B(B9( B6 2B99 C c[R"SSS9nURSU5up#nURSU5 UR US5 UR US5 g)Nrrrrrrr)rr`rrrjr"rrrrs rtest_list_command_invalid_file.CommandLineTest.test_list_command_invalid_file sZ""<8IJ..tW=  /5 c" Qrc[R"SSS9[R"SSS9/nSH{nUR"U[/UQ76nUR US5 [ R "[5nUR5 SSS5 [R"[5 M} g!,(df  N-=f![R"[5 f=f)Nrrrr)-cz--creater) rr`rrrjr.r-rr rr"rrrrSs rtest_create_command#CommandLineTest.test_create_command s!!"6)79!!#>)79: $C *ooc7;U;  c*\\'*cNN$+  )$+*  )s$AB>5B-B>- B; 7B>>Cc[R"SSS9[R"SSS9/nSHnUR"US[/UQ7SS06nUR S U5 [ R "[5nUR5 SSS5 [R"[5 M g!,(df  N-=f![R"[5 f=f) Nrrrrrrrrs file created.) rr`rrrr.r-rr rrs rtest_create_command_verbose+CommandLineTest.test_create_command_verbose s!!"6)79!!#>)79: %C *ooc4@5@7>@ /5\\'*cNN$+  )% +*  )s$AC9B1 C1 B? ;CCc[R"SSS9/nUR"S[/UQ76nUR US5 [ R "[5nUR5 SSS5 [R"[5 g!,(df  N)=f![R"[5 f=f)Nrrrrr) rr`r dotlessnamerjr.r-rr r)r"rrrSs r$test_create_command_dotless_filename4CommandLineTest.test_create_command_dotless_filename s!!"6~NO *//$ )79: "7H5H== +"S=8??:oodH=u=%%h/3NN$0  *6 0/  *s$;CCC C CC+clUR[5 SHin[R"[5 UR U[5nSSS5 UR WS5 [R"[5 Mk g!,(df  N?=f![R"[5 f=f)N)-ez --extractrrrr r tarextdirrrjrr"rrs rtest_extract_command$CommandLineTest.test_extract_commandA sx   )$C ,'' 2//#w7C3  c*  + %22  +"BB B B BB3c lUR[5 SHin[R"[5 UR US[SS9nSSS5 UR SW5 [R"[5 Mk g!,(df  N?=f![R"[5 f=f)Nrrrr file is extracted.)rrr rr rrrr s rtest_extract_command_verbose,CommandLineTest.test_extract_command_verboseK s   )$C ,'' 2//#tW;B*DC3 4c:  +%22   +rc UR[5 [RR [ S5n[R "[ 5 [R"U5 URS[SSS5 URS[SSSSS9nURS U5 SSS5 [R"[ 5 g!,(df  N)=f![R"[ 5 f=f) Ndestrrz--filterrrrrr) rrrzr{r|r rr rrrrr)r"destdirrs rtest_extract_command_filter+CommandLineTest.test_extract_command_filterV s w''',,y&1  (##G,''g(,(2F<oodG&*&0/7>&@ 4c:-   Y '-,   Y 's%C#+AC/C# C C##C?c\UR[5 [R"[5 UR S[S5nSSS5 UR WS5 [R"[5 g!,(df  N;=f![R"[5 f=f)Nrspamdirrr )r"rs r(test_extract_command_different_directory8CommandLineTest.test_extract_command_different_directoryi sr   ) (##I.oodGY?/   S# &   Y ' /.   Y 's"BA> B> B BB+c,[R"SSS9n[R"[5 UR SU5up#nSSS5 UR SW5 URWS5 URWS5 g!,(df  NE=f)Nrrrrrrr)rr`r rr rrrjrs r!test_extract_command_invalid_file1CommandLineTest.test_extract_command_invalid_filer sv""<8IJ    *224ALBS+ /5 c" Q + *s B Br%N)r&r'r(r)rrrrrrrrrrrrrrrrr rrrrr2r%rrrr sm7 K C6.+ ;.( 0 0  ** * '+", ,(&( rrc8\rSrSrSrSrSrSrSrSr Sr g ) ContextManagerTesti{ c[R"[5nURURS5 SSS5 UR WRS5 g!,(df  N+=f)Nzclosed inside runtime contextcontext manager failed)r.r-r*r*rjr1r=s r test_basicContextManagerTest.test_basic} sF \\' "c   SZZ)H I#  $<=# "s A A+c[R"[5nUR5 UR [ 5 U SSS5 SSS5 g!,(df  N=f!,(df  g=fr )r.r-r*rWrHrwr=s r test_closedContextManagerTest.test_closed sKll7#   w '( '( 's$A'AA' A$ A'' A5cDUR[5n[R"[5n[ e!,(df  O=fSSS5 O!,(df  O=fUR WR[ S5 URWRS5 g)Nz)wrong exception raised in context managerr") rHrr.r-r*rwrtrr1rj)r"rrSs rtest_exception!ContextManagerTest.test_exception sl   y )Sg&# '&&* ) ) cmmWI K  $<=sA8 A A A!c[R"[S5n[e!,(df  O =f! O=fUR [ R R[5SS5 URWRS5 g)Nrrz-context manager wrote an end-of-archive blockr") r.r-rrrjrzr{r4r1rjr=s r test_no_eofContextManagerTest.test_no_eof sd gs+s,+   11? A  $<=s5$ 2559c[R"[S5 SSS5 UR[R R [5SS5 g!,(df  NC=f)Nrrz-context manager wrote no end-of-archive block)r.r-rrrzr{r4r!s rtest_eofContextManagerTest.test_eof sF\\'3 ' ( BGGOOG4a? A( 's A A)c2[[S5n[R"USS9n[e!,(df  O =f! O=fUR UR S5 UR WR S5 SSS5 g!,(df  g=f)Nr)rrrzexternal file object was closedr")r-rr.rr*rjr1rws rrContextManagerTest.test_fileobj sp'4 D \\$S9S#O:9    T[[*K L OOCJJ(@ A! s3BA/ = ABAA=B Br%N) r&r'r(r)r#r&r)r,r/rr2r%rrr r { s"> > >A Brr zrequires os.link to be missingcB\rSrSrSr\R "\"\RS5S5S5r \R "\"\RS5S5S5r \R "\"\S5S5S 5r \R "\"\S5S5S 5r S rg ) LinkEmulationTesti c0URRU[SS9 [[R R [U5S5nUR5nSSS5 UR[W5[5 g!,(df  N.=f)Nrrtr) rSrxryr-rzr{r|rirjrrm)r"rrrs r_test_link_extraction'LinkEmulationTest._test_link_extraction sc w? "'',,w-t 4668D5 4.95 4s B Bislinkz3Skip emulation - has os.path.islink but not os.linkc&URS5 g)Nrr6r!s rtest_hardlink_extraction1+LinkEmulationTest.test_hardlink_extraction1  ""?3rc&URS5 g)Nrr:r!s rtest_hardlink_extraction2+LinkEmulationTest.test_hardlink_extraction2  ""#>?rrXz Skip emulation if symlink existsc&URS5 g)Nrr:r!s rtest_symlink_extraction1*LinkEmulationTest.test_symlink_extraction1 r=rc&URS5 g)Nrr:r!s rtest_symlink_extraction2*LinkEmulationTest.test_symlink_extraction2 rArr%N)r&r'r(r)r6rrrrzr{r;r?rCrFr2r%rrr4r4 s :__WRWWh/JL4L4__WRWWh/JL@L@__WR+79494__WR+79@9@rr4c&\rSrSrSrSrSrSrg)Bz2PartialReadTesti c^^"U4SjS[R5m[R"[R "S5R 55n[[U5S-5H"n[R"T"USU5US9 M$ g![Ra M>f=f)Nc>>^\rSrSrSrUU4SjrUU4SjrSrU=r$)9Bz2PartialReadTest._test_partial_input..MyBytesIOi Fc>UR(a [S5eUR5[UR 55:HUl[ TU]U5$)Nz(infinite loop detected in tarfile.open())hit_eofAssertionErrorrrkrsuperri)r"r MyBytesIO __class__s rri>Bz2PartialReadTest._test_partial_input..MyBytesIO.read sK<<(*:;;#yy{c$--/.BB Y2155rc,>SUl[TU] "U6$r)rNrPr)r"rrQrRs rr>Bz2PartialReadTest._test_partial_input..MyBytesIO.seek s$ Y2D99r)rN) r&r'r(r)rNrirr2 __classcell__)rRrQs@rrQrL sG 6  : :rrQrNrrr) r+rr>compressr.rRrSrangerkr-r<)r"r#rrWrQs @r_test_partial_input&Bz2PartialReadTest._test_partial_input s : :||GOOE288:;s4y1}%A  YtBQx%8tD&$$  s1BB,+B,c&URS5 gNrvrYr!s rtest_partial_input%Bz2PartialReadTest.test_partial_input s   %rc&URS5 g)Nrqr]r!s rtest_partial_input_bz2)Bz2PartialReadTest.test_partial_input_bz2 s   )rr%N)r&r'r(r)rYr^rar2r%rrrIrI s(&*rrIcSSKnSSKnURS5SS:wagUR S5SS:wagg![a gf=f)NrFrootT)rnrm ImportErrorgetpwuidgetgrgid)rnrms rroot_is_uid_gid_0rh sS ||AqV# ||AqV#  s= A  A chownzmissing os.chowngeteuidzmissing os.geteuidc\rSrSr\S5r\\S55r\RRS5\RRS5\RRS5S555r \RRS5\RRS5\RRS5S555r \R"\"5S 5\RRS5\RRS5\RRS5S 5555r\RRS5S 5rS rg )NumericOwnerTesti c[R"S5nUSS[RU4USS[RS4USS[RU4/n[R "[ S5nUHNupgpn [R"U5n X{lXl S U l S U l Xl URX5 MP SSS5 [ $!,(df  [ $=f) NscontentcbMLXWrrd)r+rr.r/rr-rrRrrrrvrrY) filename_1 dirname_1 filename_2rprwrrrrtypcontentsr\s r_make_test_archive#NumericOwnerTest._make_test_archive szz*%b"goot<b"goot<b"goot<\\'3 '516-3XOOD)   a*27(( 's 0AC C&c## SUlSnSnUnUn[RRX!5n[R UUU5n[ R"U5nXsXE4v SSS5 g!,(df  g=f7f)Nrznumeric-owner-testfilerp)rCrzr{r|rlryr.r-) mock_geteuidrrrtrurv tar_filenamers r _setup_testNumericOwnerTest._setup_test# sx%& !(  WW\\'1 (:::;D;EG \\, '5Y: :( ' 'sAA?A.% A?. A<8A?zos.chownrz os.geteuidcURU5upEnnURU[SSS9 URU[SSS9 SSS5 [RR [W5n[RR [W5n UR [RRUSS5[RRU SS5/SS9 g!,(df  N=f) NTr numeric_ownerrurnrorrrs any_order) r~rxryrzr{r|assert_has_callsrrcall) r"r|r mock_chownrrtrBrv f_filename_1 f_filename_2s rtest_extract_with_numeric_owner0NumericOwnerTest.test_extract_with_numeric_owner9 s   l +0<10: MM*gT!0  2 MM*wd!0  2 ,ww||GZ8 ww||GZ8 ##X]]%7%7 b"%M%-]]%7%7 b"%M%'/3 $ 4, +s 1C$$ C2c DURU5upEnnUR[SSS9 SSS5 [RR [W5n[RR [W5n [RR [W5n UR [RRUSS5[RRU SS5[RRU SS 5/SS 9 g!,(df  N=f) NTrrrnrorprqrrrsr) r~rryrzr{r|rrrr) r"r|rrrrtrurvr f_dirname_1rs r"test_extractall_with_numeric_owner3NumericOwnerTest.test_extractall_with_numeric_ownerN s   l +0<90:   WD$3  5, ww||GZ8 ww||GY7 ww||GZ8 ##X]]%7%7 b"%M%-]]%7%7 R%L%-]]%7%7 b"%M%'/3 $ 4, +s D Dz uid=0,gid=0 must be named "root"cURU5upE nURU[SSS9 SSS5 [RR [W5nUR USS5 g!,(df  NF=f)NFrrr)r~rxryrzr{r|assert_called_with)r"r|rrrrtrBrs r"test_extract_without_numeric_owner3NumericOwnerTest.test_extract_without_numeric_ownerg sk  l +/H1a MM*gU!0  2, ww||GZ8 %%lAq9, +s A-- A;c URU5up# nUR[URU[SS5 SSS5 g!,(df  g=f)NFT)r~rHrhrxry)r"r|rrtrBs rtest_keyword_only"NumericOwnerTest.test_keyword_onlyw sE   l +/H1a   i#mmZ% O, + +s -A Ar%N)r&r'r(r)rryrr~rrrrrrrhrrr2r%rrrlrl sf.;;(]]$ ]]$ ]]&4'%%4$]]$ ]]$ ]]&4'%%4,*,;= ]]$ ]]$ ]]& :'%%= :]]&O'Orrlc2\rSrSrSrSrSrSrSrSr g) ReplaceTestsi~ c2URRS5nURSS9nURURS5 URURS5 URURRS5RS5 g)Nrez misc/otherr,)rSrgr9rjrr"rreplaceds rtest_replace_nameReplaceTests.test_replace_name sv##O4>>|>4  5 o6 ++O<AA( *rc&URRS5nUR5nSURS'UR URSS5 UR URRS5RSS5 g)Nr not-barrvrrSrgr9r rjrs rtest_replace_deepReplaceTests.test_replace_deep s{##N3>>#(1W% ++G4e<  HH  ~ . : :7 CU Lrc$URRS5nURSS9nSURS'UR URSS5 UR URRS5RSS5 g)Nr F)deeprrvrrs rtest_replace_shallow!ReplaceTests.test_replace_shallow s##N3>>u>-(1W% ++G4i@  HH  ~ . : :7 CY Prc4URRS5nSHenURUS9 UR"S0US0D6nUR [ X25S5 UR [ X5S5 SSS5 Mg g!,(df  My=f)Nre)rrr#rrrrrv attr_namer%)rSrgrr9rjr{r)r"rrrs rtest_replace_allReplaceTests.test_replace_all s##O4:I 2!>>>Y,=>  !=tD##GF$>E32:22s A B B cURRS5nUR[5 UR SS9 SSS5 g!,(df  g=f)Nrei[)r)rSrgrHrhr9)r"rs rtest_replace_internal"ReplaceTests.test_replace_internal s>##O4   y ) NN)N ,* ) )s A  Ar%N) r&r'r(r)rrrrrr2r%rrrr~ s*LPF-rrcx\rSrSrSr\S5r\S5rSr\ S5r Sr Sr S r S rS rS rS rSrg)NoneInfoExtractTestsi Nc4^[R"[SSS9n[R"[ 5S- TlSUl[5nTRc(UR[R"S[S95 URTR TRS9 SSS5 UR5 [!U4S j[R"TR 5R#S 555Tlg!,(df  Nf=f) NrvrOrPextractall_ctrlrignore)actioncategoryrtc3Z># UH nURTR5v M" g7fr ) relative_to control_dir).0prCs r 2NoneInfoExtractTests.setUpClass.. s) A? MM#// * *?s(+**/*)r.r-r*rrryrrrextraction_filter enter_contextwarningscatch_warningsrrrWsetglob control_paths)rCrSrs` rrDNoneInfoExtractTests.setUpClass sll7{C!,,w/2CC [B$$,  !8!8#.@"BC NN3??33H3HN I   A\\#//277? AA [s AD  DcD[R"UR5 gr )shutilrrrGs rrH"NoneInfoExtractTests.tearDownClass s coo&rc*^[U4Sj[R"T5RS555nURS:Xa.SH(nUR [R"U55 M* UR URU5 g)Nc3F># UHnURT5v M g7fr )r)rrr<s rr;NoneInfoExtractTests.check_files_present.. s$;9 MM) $ $9s!rr)rrr)rrrrrdiscardrjr)r"r< got_pathsr{s ` rcheck_files_present(NoneInfoExtractTests.check_files_present sv;\\),11&9;;   ! !V +J!!',,t"45K ++Y7rc'# [R"[5S- nSURlURR 5HnUHn[ X4S5 M M [R"U5 URRUSS9 URU5 Uv SSS5 g!,(df  g=f7f)Nextractall_nonerrrt) rrryrSrrsetattrr rrr)r" attr_namesrrrs rextract_with_none&NoneInfoExtractTests.extract_with_none sll7#&77hh))+F' 40(,   $ HH  O  <  $ $S )I% $ $sA;C=0B6- C6 CCc@[R"[5R5RnUR S5n[R"U5R S5H`nURUS9 UR5RnURUR5RU5 SSS5 Mb SSS5 g![a UR5(deN7f=f!,(df  M=f!,(df  g=f)Nrrr) rrryrst_mtimerrrassertGreaterEqualrw is_symlink)r"nowrr{rs rtest_extractall_none_mtime/NoneInfoExtractTests.test_extractall_none_mtime sll7#((*33  # #G , S)..v6\\t\,K $ 4 4 // 0D0DcJ-,7- , #"#00! 1"-,- ,sH8D<C=>C*C= D C: 7C=9C: :C== D D Dc[R"[5R5Rn[R"[5S- nUR S5 UR5RnUR S5n[R"U5RS5HnURUS9 UR5(a+URUR5RU5 O?UR5(a*URUR5RU5 SSS5 M SSS5 g!,(df  M=f!,(df  g=f)N regular_filerr#rr) rrryrr write_textrrris_dirrjis_file)r"dir_moderregular_file_moderr{s rtest_extractall_none_mode.NoneInfoExtractTests.test_extractall_none_mode s<<(--/77||G,~= #(--/77  # #F +s S)..v6\\t\,{{}}(()<)'.'K)T9J'KH!%!7!7 ;D+"H%)'4%8A$'KK$<&9"H?>&632. -, &9%8"H"H?>! G$8$88  32s,F$E?D:&E?.F$,E- .E ?E E E- ! F$: E E? EE  E*&E- - E< 7F$?F!F$F!!F$$ F4 c D S1S1S1S1S1S1SS1SS14GHnURUS9 [R"[SS 9n[R "[R "5S S S 9n[R"[S U5 UR5 SSS5 UR5HnUHn[XES5 M M [R "[R "5S S S 9n[R"[S U5 UR5 SSS5 [UR5R5R!5UR5R5R!55GH4upxUS1:Xa0["R$"SU5(aUR'US5 M=US1:Xa0["R$"SU5(aUR'US5 MtUS1:Xa0["R$"SU5(aUR'US5 MUS1:XabUR)S5(aLUR!S5upUR!S5upUR'X5 UR+U S5 GMUS1:XabUR-S5(aLUR!S5upUR!S5upUR'X5 UR+U S5 GM}US1:XabUR)S5(aLUR!S5upUR!S5upUR'X5 UR'U S5 GMUS1:XabUR-S5(aLUR!S5upUR!S5upUR'X5 UR'U S5 GMOUSS1:XabUR)S5(aLUR!S5upUR!S5upUR'X5 UR'U S5 GMUSS1:XabUR-S5(aLUR!S5upUR!S5upUR'X5 UR'U S5 GM#UR'Xx5 GM7 SSS5 SSS5 GM g!,(df  GNH=f!,(df  GN=f!,(df  N@=f!,(df  GM =f)Nrr#rrrrv)rrOrrrrrs 2003-01-\d\ds ????-??-??s\d\d:\d\d:\d\ds??:??:??s.([r-][w-][x-]){3}s ??????????)tarfile/lars/foo//s[0-9]+)/tarfile/users/bar1000/sNone/100)r r r r)rrrr)rr.r-r*r+r~rrrrrrrrrrrErematchrjrrendswith) r"rrStio_prevrrtio_newrgotexp_user exp_groupgot_user got_groups rrNoneInfoTests_Misc.test_list7 sA $9vh%#9wi!7+eW-=?J,,*,5,,w=++BJJL'4P&&sHh?HHJ@!nn.F%/ 48&0/**2::<$O&&sHg>HHJ?%():)C)C)E)K)K)M)0)9)B)B)D)J)J)L&NMH!gY.288PRZ5[5[((k:#x/BHH2H5>5>((m<#y0X5H5H<6>6>.6nnT.B+.1iio+((>((9=#y0X5F5F=6?6?.6nnT.B+.1iio+((<((I>#w.83F3F%4(4(.6nnT.B+.1iio+((>((7;#w.83D3Dg3O3O.6nnT.B+.1iio+((<((G<#w'77H((7;#'77H65? @? ?>>=65sVTAS>S A9S>S, #N!S>T S) $S>, S; 6S>> T T T r%N)r&r'r(r)rrr2r%rrrr s =8A8rrc@USSn[RSS.US[RSS.US-[RS[R[R-[RS.US-[R SS.US-[R SS.US -[RS[R[R-[RS.US -[RSS.US -[RSS.US -[RS[R[R-[RS .US-n[R"U5SSUSS:XdeU$)z~Inverse of `stat.filemode` (for permission bits) Using mode strings rather than numbers makes the later tests more readable. rNr)rv-)rr)rWrrSrrrrh)rWrr\TrN)rS_IRUSRS_IWUSRS_IXUSRS_ISUIDS_IRGRPS_IWGRPS_IXGRPS_ISGIDS_IROTHS_IWOTHS_IXOTHS_ISVTXrw)r#str_moderesults r_filemode_to_intr2z s ABxH 1 %hqk 2 1 %hqk 2 3 1 t||+  &qk + +  1 %hqk 2  3  1 %hqk 2  3 1 t||+  &qk + + 1 %hqk 2 3 1 %hqk 2 3 1 t||+  &qk + + $ ==  $QR 00 0 MrcH\rSrSrSrSrSrSrSSSSSSS.SjrS r S r g) ri zHelper to create a tar file with specific contents Usage: with ArchiveMaker() as t: t.add('filename', ...) with t.open() as tar: ... # `tar` is now a TarFile with 'filename' in it! c X[R"5Ul[U5Ulgr )r+rrdict tar_kwargs)r"rys rrArchiveMaker.__init__ s::<v,rcj[R"SSURS.URD6UlU$)Nrrr%)r.r/rr6tar_wr!s r __enter__ArchiveMaker.__enter__ s)__S#txxS4??S  rcURR5 URR5UlSUlgr )r9rWrrrx)r"rs r__exit__ArchiveMaker.__exit__ s- ))+ rN)rr hardlink_tor#rlcontentc [U5n[R"U5R"S0UD6n Ub0[ U[5(aUR 5n[ U5nUbXilUc[U R5nU(a[U5U l Ub [Rn[U5U l Ub [Rn[U5U l URS5(aUc[RnUbX)lU R#5(a[$R&"U5n OSn UR(R+X5 g)abAdd a member to the test archive. Call within `with`. Provides many shortcuts: - default `type` is based on symlink_to, hardlink_to, and trailing `/` in name (which is stripped) - size & content defaults are based on each other - content can be str or bytes - mode should be textual ('-rwxrwxrwx') (add more! this is unstable internal test-only API) Nrr%)rur.rRr9rrrkrlrr2r#rqrrrrrr!r+rr9rY) r"rrrr?r#rlr@ryrorss rrArchiveMaker.add s 4y//$'//9&9  '3''!..*w?BBrcU$r r%rGs rrHrH srcV\rSrSr\R "\5S- r\S- r\ SS.Sj5r S.Sjr S r S/S jr S rS r\S 5r\\R&S55r\S5r\S5rSr\S5r\S5r\S5r\S5r\S5r\S5r\S5rSrSr Sr!Sr"Sr#Sr$Sr%\&RN"\(RRS :HS!5S"5r*\&RN"\(RRS :HS!5S#5r+S$r,S%r-S&r.S'r/S(r0S)r1S*r2S+r3S,r4S-r5g)0TestExtractionFiltersi outerdirrT) check_flagc## [R"UR5 URS- nURS5 UR UR US9 SUlSUl[URRS55Ul URRUR 5 URRU5 Uv UR5 UR(a UR eURUR[55 U(a!URUR5S5 OUS:XdeSSS5 g![a&nXPlSUl[5Ul SnANSnAff=f!UR5 f=f!,(df  g=f7f) aExtracts `tar` to `self.destdir` and allows checking the result If an error occurs, it must be checked using `expect_exception` Otherwise, all resulting files must be checked using `expect_file`, except the destination directory itself and parent directories of other files. When checking directories, do so before their contents. A file called 'flag' is made in outerdir (i.e. outside destdir) before extraction; it should not be altered nor should its contents be read/copied. flagz capture mertNFrTr)r rrLrrrraised_exceptionreraise_exceptionrrexpected_pathsrrrWrjr)r"rSrurM flag_pathrs r check_context#TestExtractionFilters.check_context s[   . .I   . 7t||F; )-%).&&)$--*<*!F-E%A7F-FBF- F>% F/F F-FF-F**F-- F;7F>NcxUR(a URe[R"[RR UR U- 55nURXpR5 URRU5 Ub[R"5(ag[RS:waS[R"[R"UR5R 55nUR#X5 Uc;[%U[&5(a&UR)S5(a[*R,nUbZUR U- R/5n[R"U5n X:wa UR1UR3U 55 OU[*R8:XdUc UR1UR;55 OU[*R,:Xa UR1UR=55 OsU[*R>:Xa UR1URA55 O?U[*RB:Xa UR1URE55 O [GU5eUb*UR#UR5RHU5 Ub UR#URK5U5 URLHn URROU 5 M g![4an U R7SU <SU<35 eSn A ff=f)z'Check a single file. See check_context.Nntrz expected=z, got=)(rPrrrzr{normpathrrrRremover can_chmodrrrwS_IMODErrjrrurr.rreadlinkr1samefileradd_noter/rrrvis_fiforqrNotImplementedErrorrrparentsr) r"rrrr#rlr@r{rrrNparents r expect_file!TestExtractionFilters.expect_filesB  '' '||BGG,,T\\D-@AB d//0 ""4(   3 3 5 5"''T/-- TYY[-@-@ ABC   S '  J J c[5nSn[RS:XaSnOS[R;ag[R "UR RS5nSn[[UR55U-nXF- [U5U--nSU-nO [S5eSnSn UHn UR[RRX5[R S S 9 UR[RRX5US 9 [RRX5n[RRX5n M [RR"/UQS P76n S /[U5-n URU [RR"U 6S 9 URS[RRU S 5S 9 URS[RRSS5S9 URSSS9 URSSS9 SSS5 UR#S5 UR%WR'5SSS9 [RS:XaUR)[*[,45 OUR.(aUR)[05 O_UR3W5 UR5SSS9 UR5SSS9 UR5S[R6S9 UR5SUS 9 SSS5 SSS5 SHn UR#U 5 UR%WR'5U S9 UR)[8[045n[;U[85(a[[RS:XaUR=UR>S5 O*URAURB[BRD5 SSS5 SSS5 M g!,(df  GN=f!,(df  N=f!,(df  GN=f!,(df  NP=f!,(df  GM*=f)Nabcdefghijklmnoprddddddddddddddddddddddddd PC_PATH_MAXrdz1Need to guess component length for {sys.platform}r drwxrwxrwxrrllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllrescapeflaglinkrOr? overwrite)r@zescape/newfilenewrF)rurMz ../newfilerfrrvrt)rr)#rrrrzpathconf_namespathconfrLrbrkrurr`rr{r|r.rrrTr-rnrCrRrPrrircrqrwrrwinerrorrjerrno ENAMETOOLONG)r"rsteps component max_path_len path_sep_lendest_len component_lenr{ step_pathilinkpathparent_segmentsrurs rtest_realpath_limit_attack0TestExtractionFilters.test_realpath_limit_attacksY ^s 'E||w&$ ""3"33!{{4==+?+?O  s4<<01L@!-!8c%j<>W X -/ )*]^^DI T5GOO)+ T-)Dww||D4GGLL6 ww||4U4G4H#fs5z1O GGH)GG H GGHh)EG F GGJBGGLL6,JG K GGJ G 4 GG$eG 4ORll?+  O,1!3||w&%%'8/&JK&&%%h/$$Y/  [ A  u =   @   ;3, $Ff%t'9'9#((*V'9'T++Wh,?@c7++||w. cllK@((E4F4FG(U%%$s^T33,+"(U'T%%sVH,P  P00B7P'P0 Q,B Q8Q P P- )P00 P? Q Q Q# c~[R"5(Ga;[RR [ S5n[R "U5 [R"S[RR US55 [[RR USSS5S5 SSS5 [RR[RR US55(aSnOQ[RR[RR USS55(aSnO [S 5e[5nURSSS 9 URS SS 9 URS 5 SSS5 URWR5S 5 [R"5(a2URSSS 9 URSSS 9 URS5 O"URS5 URS 5 SSS5 URUR5S5 [R"5(a!UR[ R"S5 O"URS5 URS 5 SSS5 URUR5S5 [R"5(aIW(a!UR[ R"S5 OCUR[ R$S5 O"URS5 URS 5 SSS5 g!,(df  GN=f!,(df  GN=f!,(df  GNh=f!,(df  N=f!,(df  g=f)Nresolution_testr~r}rrkrTFz#Could not determine link resolutionrzcurrent/parentr~rrbrzcurrent/rSrrzS'current/parent' would link to ['"].*outerdir['"], which is outside the destination)r rrzr{r|ryrrXr-rrOrrrTrcrnr.rr)r"testpathdotdot_resolves_earlyrs rtest_parent_symlink2*TestExtractionFilters.test_parent_symlink2s  " "ww||G->?H HHX  JJsBGGLL9= >bggll8YfEsKLww~~bggll8V<==)-% XtV DEE).%$%JKK ^s GGI#G . GG$G 6 GGM "   O <$$&&  s ;  d ;  +  ,  /=   E 2$$&&%%77,-   ,  /3   F 3$$&&())#;;01))#??01   ,  /%4 3_LK^= <3 24 3s?7M'!2M9;A/N ANBN.' M69 N N N+. N<c[5nURSURS9 URS5 SSS5 URWR 5S5 [ R "5(a,URSURS9 URS5 OURS5 SSS5 URUR 5S5 [ R "5(a!UR[RS5 OURS5 SSS5 URUR 5S5 UR[RS 5 SSS5 g!,(df  GNN=f!,(df  N=f!,(df  N{=f!,(df  g=f) Nrbrr~rrrSrr&'parent' is a link to an absolute path) rrrLrTr-r rrcrnr.rAbsoluteLinkErrorrs rtest_absolute_symlink+TestExtractionFilters.test_absolute_symlinkMsD^s GGHG 7 GGM "   O <$$&&  dmm D  +  / =   E 2$$&&%%77,-   /3   F 3  ! !))8 :4 3+^= <3 24 3s1,E>AFA F!!F2> F  F! F/2 Gcz[5nURSURS- S9 SSS5 URWR 5S5 UR [ S5 SSS5 URUR 5S5 UR [ S5 SSS5 URUR 5S5 UR [RS5 SSS5 g!,(df  N=f!,(df  N=f!,(df  Nz=f!,(df  g=f) NrbrNrrz.*foo. not foundrSrr) rrrLrTr-rnrr.rrs rtest_absolute_hardlink,TestExtractionFilters.test_absolute_hardlinkks^s GGH$--%*?G @   O <  ! !(,> ?=   E 2  ! !(,> ?3   F 3  ! !))8 :4 3^= <3 24 3s/C9D D!D,9 D D D), D:c[5nURSSS9 SSS5 URWR5SS9 [R "5(aF[ UR[5(aUR[5 OURSSS9 OSSS5 SHLnURWR5U5 UR[RS5 SSS5 MN g!,(df  N=f!,(df  Nr=f![a Nf=f!,(df  M=f)N../mooz ..//tmp/moorrrtrvzH'../moo' would be extracted to '.*moo', which is outside the destination) rrrTr-r rrrPrRrnrcr.rrrs rtest_sly_relative0(TestExtractionFilters.test_sly_relative0|s^s GGHG 7 ##CHHJ#G((**!$"7"7II--o>((m(LH&$F##CHHJ7%%77,-87$1^ HG    87sGDD"A"D%D"!D2 D DD"D"" D/.D/2 E cZ[5nURS5 URSSS9 SSS5 URWR5S5 UR S[ R S9 [R"5(aUR SS S9 SSS5 S HLnURUR5U5 UR[ RS 5 SSS5 MN g!,(df  N=f!,(df  Nr=f!,(df  M=f) Nztmp/z tmp/../../mooztmp/../..//tmp/moorrtmprfrztmp/../../tmp/moorvzU'tmp/../../moo' would be extracted to ['"].*moo['"], which is outside the destination) rrrTr-rcr.rr rrnrrrs rtest_sly_relative2(TestExtractionFilters.test_sly_relative2s^s GGFO GGO0DG E   O <   U  9$$&&  6I J= $F##CHHJ7%%33$%87$^= < 87s$"C9A D  !D9 D D D* c f[5nURSSS9 URS[RR SS5S9 URS[RR S SS5S 9 SSS5 S HnUR WR 5U5 URSSS9 URSSS9 [R"5(aURSSS S 9 OURSSS9 SSS5 M g!,(df  N=f!,(df  M=f)Ntargetdir/targetrrlinkdir/hardlink targetdirrTrlinkdir/symlinkrrrSrrz../targetdir/targetrlr rrrzr{r|rTr-rcr rrrs rtest_deep_symlink'TestExtractionFilters.test_deep_symlinks ^s GG&QG / GG&BGGLLX5'G ( GG%"'',,k83-G . 5F##CHHJ7  !3! <  !3! <((**$$%6Q0E%G$$%6Q$?875^87sA.D&AD! D! D0 cB[5nURSSS9 URS[RR SS5S9 URSSS 9 URS [RR S S 5S 9 URS[RR SS5S 9 SSS5 SHnUR WR 5U5 URSSS 9 URS SS 9 URSSS 9 [R"5(a#URSSSS9 URSSSS9 O URSSS 9 URSSS 9 SSS5 M g!,(df  N=f!,(df  M=f)Nrhardlinkrsymlink2linkdir hardlink2rrrrrrTrzlinkdir/hardlink2rXrrrrrs r test_chains!TestExtractionFilters.test_chainss{^s GG%*G = GGJ277<<;,(G ) GG&QG / GG&BGGLLh4WG X GG'RWW\\)Y5WG X 5F##CHHJ7  !3! <  !3! <  !41 =((**$$%6Q0:%<$$Za0C%E$$%6Q$?$$Za$8875^87sB+E>#BF> F  F c [5nURS5 URS5 URS[RR SS5S9 URS[RR SSS 5S9 URSS S9 URS [RR SS 5S 9 SSS5 UR WR 5S5 [R"5(d UR[R5 O~[RS:Xa UR[R5 OJUR[RS5nURUR [R5 SSS5 SHnUR#U5 UR UR 5U5 [R"5(d4UR%S5 UR%S5 UR%S5 ORUR%S5 UR%S5 UR%SSS9 UR%S SS9 UR%SS S9 SSS5 SSS5 M g!,(df  GN=f!,(df  GN=f!,(df  N?=f!,(df  GM0=f)Nz a/t/dummyzb/crr\rzc/escaper link_hererboomrrrrzJlink 'boom' would be extracted as a copy of 'c/escape', which was rejected)rSrzc/z a/t/escapez../../link_here)rrrzr{r|rTr-r rrnr.rrrLinkFallbackErrorrt __cause__rrc)r"rrNrus rtest_sneaky_hardlink_fallback3TestExtractionFilters.test_sneaky_hardlink_fallbacks2 ^s GGK GGDM GGCBGGLLc$:G ; GGJ277<<d8C,EG F GGCCG ( GGF S((CG D"   F 3((**%%779(%%g&I&IJ))--78%%akk&-&I&IK4"-Ff%t'9'9#((*f'M ,,..$$[1$$T*$$T*$$[1$$T*$$\>O$P$$V8I$J$$SS$9(N%%-E^"4 3$(N'M%%s>B>J1B9J1!K)B!K K J.1 K K K K$ c [5nURS[RR SSSSS5S9 URSSS9 SSS5 SHnUR WR 5U5 [R"5(a8URSSS9 US:XaURSSS9 OURSS S9 OSSS5 M g!,(df  N=f!,(df  M=f) Nrrrz link-hererrrrzlink/link/../../link-here) rrrzr{r|rTr-r rrcrrs rtest_exfiltration_via_symlink3TestExtractionFilters.test_exfiltration_via_symlinks ^s GGHffdDR])^G _ GGFtG ,5F##CHHJ7((**$$V$='((k(J((4O)Q875 ^ 87sAC:AC, C), C; c[5nURSSS9 URSSS9 URSSS9 URSS S9 SSS5 S HnURWR5U5n[R "5(dUR S5 OGUS :Xa!UR SS S9 UR SSS9 O UR SS S9 UR SSS9 [RS :wa9URR5RnURUS -S 5 SSS5 M g!,(df  GN=f!,(df  GM=f)Nza/pwnr~rza/pwn/rrzx/../za/xz../rrrr) rrrTr-r rrcrrrLrrr)r"rruccrs rtest_chmod_outside_dir,TestExtractionFilters.test_chmod_outside_dir0s: ^s GGGG , GGHG ?  5F##CHHJ72  (  )  )  ) 875 ^87sAC ;AC C C- c R [5nURSSS9 URSSS9 URSSS9 URSS S9 URS S S9 URS S S9 URSSS9 SSS5 [RR [ S5n[ US5 SSS5 [R"U5R[R-[R-[R-n[R"X#5 [R"U5RnU[R-(aSOSnU[R-(aSOSnU[R-(aSOSn[R""U5 [R$"U5 [R"U5R[R-[R-[R-n[R"X#5 [R"U5RnU[R-(aSOSn U[R-(aSOSn U[R-(aSOSn [R&"U5 UR)WR 5S5 UR+SSUSUSU3S9 UR+SSS9 UR+SSS9 UR+SS S9 UR+S S S9 UR+S SU SU 3S9 UR+SSU SU SU 3S9 SSS5 UR)UR 5S5 UR+SSS9 UR+SSS9 UR+SSS9 UR+SS S9 UR+S S S9 UR+S SS9 UR+SSS9 SSS5 UR)UR 5S5 [R,"[R."UR0R5R55n UR+SSS9 UR+SSS9 UR+SS S9 UR+SS!S9 UR+S S"S9 UR+S U S9 UR+SU S9 SSS5 g!,(df  GNw=f!,(df  GNO=f![a<nUR[[SS5:XaUR!S5 SnAGN'eSnAff=f![R""U5 f=f!,(df  GN=f!,(df  GN=f!,(df  g=f)#Nall_bitsrr perm_bitsz ?rwxrwxrwxexec_group_otherz ?rw-rwxrwxread_group_onlyz ?---r-----no_bitsz ?---------rz ?---rwsrwtz dir_all_bits/ztmp.filerEFTYPErz?chmod() failed with EFTYPE: regular users cannot set sticky bitr\rWrrz?rwrz?---rwrSz ?rwxr-xr-xz ?rw-r-xr-xz ?---r-xr-xrz ?rw-r--r--z ?rw-r-----z ?rw-------)rrrzr{r|ryr-rrr/r+r'rrwrr{rSrrrrTrcrwr[rL) r"r tmp_filenamenew_modergot_mode_t_file _suid_file _sgid_file_t_dir _suid_dir _sgid_dirnormal_dir_modes r test_modes TestExtractionFilters.test_modes`s^s GGJ\G 2 GGKlG 3 GG&\G : GG%LG 9 GGILG 1 GGFG . GGO,G 7ww||GZ8 , $ % $ -55,,')-68< EH 0ww|,44H&5cCG!)DLL!8sJ!)DLL!8sJ IIl # GGL)11ll#%)\\248LLA (77<(00!DLL0s$t||3C# $t||3C#      O <   Z$' |2j\G9"M  O   [|  <   /l  C   .\  B   Y\  :   VF9+Rx*H  I   _$' {"YKr&"J  L=   E 2   Zl  ;   [|  <   /l  C   .\  B   Y\  :   V,  7   _<  @3   F 3"mmDLL ""$,,-./O   Zl  ;   [|  <   /l  C   .\  B   Y\  :   V/  :   _?  C4 3E^% $ 99x ;;MM#HII  IIl #= <3 24 3s}A1S,4S>?AUT)A4UB U4 A1V&B=V, S;> T  U0U UUUUU14 V V V&c.[5nURS[RS9 SSS5 SHanUR WR 5U5 [ [S5(aURS[RS9 OSSS5 Mc UR WR 5S5 UR[RS5 SSS5 g!,(df  N=f!,(df  M=f!,(df  g=f)NrNrf)rrSmkfiforz'foo' is a special file) rrr.rvrTr-rrzrcrnSpecialFileErrorrrs r test_pipeTestExtractionFilters.test_pipes ^s GGE 0 0G 1-F##CHHJ72x(($$U1A1A$B 87-   F 3  ! !(() +4 3^874 3s#C#6C49!D# C14 D  Dc[R[R[R4GHn[R"S5nXl[R "US5nURX25 [R"US5nURUR U5 UR[R5n[R"US5 SSS5 URWRR[R5 URURRR S5 GM! g!,(df  Nx=f)NrNr)r.rvrpr.rRrfully_trusted_filterre tar_filterrjrHr data_filterrtrror)r" special_typerotrustedrSrs rtest_special_files(TestExtractionFilters.test_special_filess$,,goowNLooe,G'L227B?G MM' +$$Wb1C   SXX| 4""7#;#;<##GR0=  ! !",,"6"6 H   R\\1166 >O=>+"77D h0,+ * *s AA-- A;c[RR[SS9nUR 5Hgn[R "US5nURURUR5 URURUR5 Mi SSS5 g![ a Mf=f!,(df  g=fNrOrr) r.r/r-r*rrUnicodeEncodeErrorrerrrs rtest_tar_filter%TestExtractionFilters.test_tar_filters__ ! !'K ! @C>>+&11'2>H hmmW\\: hmmW\\: ,A @* A @s/B9B(AB9( B62B95B66B99 Cc[RR[SS9nUR 5Hgn[R "US5nURURUR5 URURUR5 Mi SSS5 g![R [4a Mf=f!,(df  g=fr) r.r/r-r*rr FilterErrorrrerrrs rtest_data_filter&TestExtractionFilters.test_data_filters__ ! !'K ! @C>>+&227B?H hmmW\\: hmmW\\: ,A @ ++-?@ A @s/C B(AC (CC CC  Crzrequires native bytes pathsc[R"[R5n[R"US5nUR UR UR 5 [R"US5nUR UR UR 5 [R"S5nUR[[RUS5 UR[[RUS5 [R"S5nUR[[RUS5 UR[[RUS5 g)Nrztest) r.rRr TESTFNrrerrrHrr)r"rors rtest_filter_unencodable-TestExtractionFilters.test_filter_unencodables//)"2"23%%gr2 hmmW\\2&&w3 hmmW\\2//*- *g&8&8'2F *g&9&97BG//(+ ,g.@.@'2N ,g.A.A7BOrcZ[SSS9nURS5 SSS5 [R"5nWR SSSS9nUR UR 5S /5 UR[5 UR[RS 9 SSS5 UR [R"5/5 UR SSS SS 9n[R"5nUR[RS 9 SSS5 UR [R"5/5 UR!S WR#55 SSS5 g!,(df  GNR=f!,(df  N=f!,(df  N=f!,(df  g=f)Nrrru r surrogatepassr)rQrrrrtr)rQrrdebugztarfile: UnicodeEncodeError )rrr rr-rjr:rHrrr.rrzlistdirrcaptured_stderrrr)r"rrrSstderrs rtest_extract_unencodable.TestExtractionFilters.test_extract_unencodables>73D E GG( )F    !S((GO&')C   S\\^hZ 8""#56g&8&897   RZZ\2 .((GO&'q2C((*fg&8&89+   RZZ\2 . MM8&//:K L" !F E 76 +*" !sIE(AFE: AF4F A F( E7: F F F F F*cp[5nURS5 SSS5 [R"S[45 UR WR 5S5 URS5 SSS5 SSS5 g!,(df  Nn=f!,(df  N(=f!,(df  g=f)zEnsure the default filter warnsrNNz Python 3.14)rrr check_warningsrrTr-rcrs rtest_default_filter_warns/TestExtractionFilters.test_default_filter_warnss ^s GGEN  + + 235##CHHJ5  '655^6555s/B!B'"B4B' B B$ B'' B5c[R"[S5nSnX!lUR US5 UR S5 SSS5 g!,(df  g=f)Nrvc(URS:XaU$gNrer,ror{s r strict_filterSTestExtractionFilters.test_change_default_filter_on_instance..strict_filter!||.rre)r.r/r*rrTrc)r"rSr#s r&test_change_default_filter_on_instance.strict_filter+r%rrvrre)r.r/r*rrrrTrc)r"r#rSs r#test_change_default_filter_on_class9TestExtractionFilters.test_change_default_filter_on_class*sw  oogs+   w0C+M:<##C.  1/<<..<.TarSubclassi7c(URS:XaU$gr!r,r"ror{s rrcTestExtractionFilters.test_change_default_filter_on_subclass..TarSubclass.extraction_filter8s<TRUTR5 URS:XaURSS9$URS:XagU$)N move_thismovedr, ignore_this)rerrr9)ror{r"s r custom_filter?TestExtractionFilters.test_custom_filter..custom_filterIsF MM$ -||{*G44||},Nrr;r=keepr<rq)r"r>rs` rtest_custom_filter(TestExtractionFilters.test_custom_filterHs ^s GGK GGM " GGFO   M :   W %   V $; : ^; :s4B.#B+ B(+ B9c [5nURS5 SSS5 URWR5S5 UR [ 5 SSS5 g!,(df  NM=f!,(df  g=f)NrNzbad filter name)rrrTr-rnrrs rtest_bad_filter_name*TestExtractionFilters.test_bad_filter_nameYsU ^s GGEN    ,= >  ! !* -? >^ > >sA$A5$ A25 Bc "SS5n[5nURS5 URSSS9 URS5 SSS5 U"5nURWR5U5 UR S5 SSS5 SSS5 UR WR S5 UR URS5 g!,(df  N=f!,(df  N`=f!,(df  Ni=f) Nc&\rSrSrSrSrSrSrg)BTestExtractionFilters.test_stateful_filter..StatefulFiltericcSUlU$r))num_files_processedr!s rr:LTestExtractionFilters.test_stateful_filter..StatefulFilter.__enter__ds+,( rc[R"X5nU=RS- slU$![Ra gf=f)Nr)r.rr rJr1s r__call__KTestExtractionFilters.test_stateful_filter..StatefulFilter.__call__hsI %11'@G((A-(**  s/AAcSUlg)NT)done)r"exc_infos rr=KTestExtractionFilters.test_stateful_filter..StatefulFilter.__exit__ps   r)rPrJN)r&r'r(r)r:rMr=r2r%rrStatefulFilterrHcs   !rrSgoodbadrrrT)rrrTr-rcrjrJrP)r"rSrr>s rtest_stateful_filter*TestExtractionFilters.test_stateful_filter_s ! ! ^s GGFO GGEcG * GGFO ##CHHJ >  (? ::A> ++T2^ ?> s/3C!C58C$ C5 C!$ C2 .C55 DcD SnSnSnSnSn[5nURS5 SSS5 URWRSS9U5 SSS5 URURSS9U5 SSS5 URURSS9U5 SSS5 URURSS9U5 UR [ R 5 SSS5 URURSS9U5 UR [5 SSS5 URURS S9U5 SSS5 URURS S9U5 UR [ R5 SSS5 URURS S9U5 UR [5 SSS5 URURS S9U5 UR [ R 5 SSS5 URURS S9U5 UR [5 SSS5 URURS S9U5 UR [ R5 SSS5 URURS S9U5 UR [ R5 SSS5 URURS S9U5 UR [5 SSS5 URURS S9U5 UR [ R 5 SSS5 URURS S9U5 UR [5 SSS5 URURS S9U5 UR [5 SSS5 g!,(df  GN=f!,(df  GN=f!,(df  GN=f!,(df  GN=f!,(df  GNR=f!,(df  GN'=f!,(df  GN=f!,(df  GN=f!,(df  GN=f!,(df  GN{=f!,(df  GNP=f!,(df  GN=f!,(df  GN=f!,(df  GN=f!,(df  GN=f!,(df  GN[=f!,(df  g=f) Nc.[R"S5e)Nzfailed with ExtractError)r. ExtractErrorr"s rextracterror_filterBTestExtractionFilters.test_errorlevel..extracterror_filter~s&&'AB Brc.[R"S5e)Nzfailed with FilterError)r.r r"s rfiltererror_filterATestExtractionFilters.test_errorlevel..filtererror_filters%%&?@ @rc[S5e)Nzfailed with OSError)rwr"s roserror_filter=TestExtractionFilters.test_errorlevel..oserror_filters/0 0rc.[R"S5e)Nzfailed with base TarError)r.TarErrorr"s rtarerror_filter>TestExtractionFilters.test_errorlevel..tarerror_filters""#>? ?rc[S5e)Nzfailed with ValueError)rr"s rvalueerror_filter@TestExtractionFilters.test_errorlevel..valueerror_filters56 6rrkrrvrrzboo!) rrrTr-rnr.rdrr rwrZrh)r"r[r^rarerhrs rtest_errorlevel%TestExtractionFilters.test_errorlevel}s C A 1 @ 7^s GGFO   A 68K L M  A 68J K L  A 6 G H  A 6 H  ! !'"2"2 3I  A 68I J  ! !* -K   A 68K L M  A 68J K  ! !'"5"5 6L  A 6 G  ! !' *H  A 6 H  ! !'"2"2 3I  A 68I J  ! !* -K   A 68K L  ! !'"6"6 7M  A 68J K  ! !'"5"5 6L  A 6 G  ! !' *H  A 6 H  ! !'"2"2 3I  A 68I J  ! !* -K   F ;=O P  ! !) ,Q Pq^ M LL KH GI HK J M LL KH GI HK J M LL KH GI HK J Q PsO1P<P%P' P9Q Q; Q/R? RR% R7 S S S-S?T1 P P P$' P69 Q Q Q,/ Q> R R"% R47 S S S*- S<? T T)rRrPrQ)NNNNN)r~)6r&r'r(r)rrryrLrrrTrcrirnrsrzrHrr rrrrrrrrrrrrrrrrrrr rrrrrrrr&r+r4r7rArDrVrjr2r%rrrKrK s ||G$z1HG7;'1'1RBF'+*0X %/K20000d""FH#FHPT0T0l::::" - -D%%&@@.9921:1:f,@@>* ND`+$ ?1 ; ;__S\\W,.KL PM P__S\\W,.KLMMM(( . 2 .- %". 3#$  I,,a0 \\!S !S ,AAF KK2::m4 5" !" !" ! " !s&"AG50H(AH5 H H H&c0[R"US5$r\)r.r-)r"r{s rr-OverwriteTests.opens||D#&&rc8URURSS9 g)Nrrt)rtestdir)r"ars rrOverwriteTests.extractalls dll? ;rr%N)r&r'r(r)rzr{r|ryryrcrDr-rr2r%rrrmrms2ggll7O4G66*'rGrr{rvrryr r`r*r|r7r?rFrrrmrr requires_gzipr4rr< requires_lzmarCrKr\TestCaserbrrrrr!r#r%r'rorrrrrr:r<r>r@rFrHrJrLrarcrjrlrrrrrr!r,rrrrrrrrrrrrrrr(r=rerortrzrrr|rrrrrrr r8r:r<r>rLrr rr4rIrhrlrrrrrrrr2rrrHrKrmr}rr&ror%rrrs 0  "&($ ''//)** +i 7 o %   =1B C 77<<!1 2 '',,w 1 2 g/ 0 '',,w *ggll7I. GG )) %%%  &&&  %%% w -X-UHh//Un -  w   - Y1x**Y1x 8X  '8  8X Z1XZ1zi.~i.V #X%6%6 x!183D3D  g/1B1B  x!183D3D <^X%6%6<| >    > /NH,=,=/ X'<  G%:  X'< &1Wh//&1P >  , , > 1x1B1B1"^EXx00^EB6O6Op9,(*;*;9xT@,(*;*;T@nGGG<~% x00~%B  Hi  7I  Hi (%mX%6%6(%V7(O78/8;(O;?7?,!7$8(:K:K!!*>! (%98;L;L  *> C(++C$O58$$O5d+&}h&7&7+&\W. 1 1W.tXzGZ%Xz%(*( WR(*KL'18$$'1M'1TH8<H8VNNbL{H$5$5L^G[("3"3G$K[("3"3K(II(>%!2!2>%@ X~x/@/@  G^X->->  X~x/@/@ 8*""8*vs&x  s&la h''a H7B**7Bt V$&FG@("3"3@H@B*("3"3*>  WR)+=> WR+-ABwOx((wOC?wOt%-8X..%-Pd8dL 4h6G6G((<(0(9(9(3X5F5F#7#+#4#4^8**^8@8D3D3V ???CY-H--Y-x<^22H4E4E<@ "" z MMON D D C DsH$` )`.`)3`8 ```&%`&)`54`58aa