a ze@sddlZddlZddlZddlmZddlmZddlmZddl Z ddl Z ddl Z ddl Z ddl mZddlmZz ddlZWneydZYn0z ddlZWneydZYn0z ddlZWneydZYn0z ddlZWneydZYn0ddZejejd Zed Zed Zejed Zejed Z ejedZ!ejedZ"ejedZ#dZ$dZ%GdddZ&e'GdddZ(e)GdddZ*e+GdddZ,Gddde&Z-Gddde-e j.Z/Gdd d e(e/Z0Gd!d"d"e*e/Z1Gd#d$d$e,e/Z2Gd%d&d&e-e j.Z3Gd'd(d(e(e3Z4Gd)d*d*e*e3Z5Gd+d,d,e,e3Z6Gd-d.d.e-Z7Gd/d0d0e7Z8Gd1d2d2e8e j.Z9Gd3d4d4e(e8e j.Z:Gd5d6d6e*e8e j.Z;Gd7d8d8e,e8e j.ZGd=d>d>e*e=Z?Gd?d@d@e,e=Z@GdAdBdBe&e j.ZAGdCdDdDe(eAZBGdEdFdFe*eAZCGdGdHdHe,eAZDGdIdJdJe-e j.ZEGdKdLdLZFGdMdNdNeFe-e j.ZGGdOdPdPeFe-e j.ZHGdQdRdRe&ZIGdSdTdTeIe j.ZJGdUdVdVe(eJZKGdWdXdXe*eJZLGdYdZdZe,eJZMGd[d\d\eIe j.ZNGd]d^d^e(eNZOGd_d`d`e*eNZPGdadbdbe,eNZQGdcdddde j.ZRGdedfdfeIe j.ZSGdgdhdheIe j.ZTGdidjdje(eTZUGdkdldle*eTZVGdmdndne,eTZWGdodpdpeTZXe YeZedqdrGdsdtdte j.Z[GdudvdveRZ\GdwdxdxZ]Gdydzdze]e j.Z^Gd{d|d|e]e j.Z_Gd}d~d~e]e j.Z`GdddZaGdddeae j.ZbGddde(eae j.ZcGddde*eae j.ZdGddde,eae j.ZeGddde j.ZfGddde j.ZgGddde j.ZhGddde j.Zie jeZedqdGddde-e j.ZkGddde*e j.ZlddZme YeZedde YeZeddGddde j.ZnddZoddZpeqdkre rdS)N)sha256)contextmanager)Random)support) script_helpercCs t|SN)r hexdigest)datar E/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_tarfile.py sha256sum"sr z-tardirz -extract-testz testtar.tarztesttar.tar.gzztesttar.tar.bz2ztesttar.tar.xzztmp.tarZtesttarZ@e09e4bc8b3c9d9177e77256353b36c159f5f040531bbd4b024a8f9b9196c71ceZ@4f05a776071146756345ceee937b33fc5644f5a96b9780d1c7d6a32cdf164d7bc@s.eZdZeZdZejZej j Z e ddZ dS)TarTestcCs |j|jSr)prefixsuffixselfr r r mode<sz TarTest.modeN) __name__ __module__ __qualname__tarnamerioFileIOopentarfileTarFiletaropenpropertyrr r r r r 6s r c@s*eZdZeZdZerejndZe j j Z dS)GzipTestgzN) rrrgzipnamerrgzipZGzipFilerrrZgzopenrr r r r r@src@s*eZdZeZdZerejndZe j j Z dS)Bz2Testbz2N) rrrbz2namerrr$BZ2FilerrrZbz2openrr r r r r#Gsr#c@s*eZdZeZdZerejndZe j j Z dS)LzmaTestxzN) rrrxznamerrlzmaLZMAFilerrrZxzopenrr r r r r'Nsr'c@s eZdZdZddZddZdS)ReadTestr:cCstj|j|jdd|_dS)N iso8859-1rencodingrrrrtarrr r r setUpZs zReadTest.setUpcCs|jdSr)r2closerr r r tearDown^szReadTest.tearDownN)rrrrr3r5r r r r r,Vsr,c@sdeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS) UstarReadTestcCsj|jd}|j|>}|}|t||jd|t|tdWdn1s\0YdS)N ustar/regtyperegular file extraction failed) r2 getmember extractfileread assertEquallensizer sha256_regtypertarinfofobjr r r r test_fileobj_regular_fileds  z'UstarReadTest.test_fileobj_regular_filecCs|jdt|jd}ttjtdd}|}Wdn1sL0Y|j |T}t |}|}| ||d| t |dd| |dddWdn1s0YdS)Nr7rzfileobj.readlines() failedrSzOI will gladly admit that Python is not the fastest running scripting language. )r2extractTEMPDIRr9rospathjoin readlinesr:r TextIOWrapperr<r=)rrAfobj1lines1rBfobj2lines2r r r test_fileobj_readlinesms" &   z$UstarReadTest.test_fileobj_readlinescCs|jdt|jd}ttjtdd}|}Wdn1sL0Y|j |,}t t |}| ||dWdn1s0YdS)Nr7rDzfileobj.__iter__() failed)r2rGrHr9rrIrJrKrLr:listrrMr<)rrArNrOrPrQr r r test_fileobj_iters &zUstarReadTest.test_fileobj_iterc Cs*|jdtttjtdd}|}Wdn1s@0Y|jd}|j |}|}| d| d| d| dd| d| d| dd| d | d | d d| d| d |d }| ||dd d| dd| |j | d| |dd| |j d| d| d| d|}| d|}| ||d| d| t|| d| d| t|d| d| d|}| ||t|ddWdn1s0YdS)Nr7rbrzseek() 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 failedz0read() 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)r2rGrHrrIrJrKr;r9r:seekr<tellr>rLr=readline) rrBr rAtextss1s2liner r r test_fileobj_seeksr&                  zUstarReadTest.test_fileobj_seekc Cs|jdd}t|}|d}|t|tz| dWnt y`| dYn0Wdn1sv0YdS)Nr7r.dzseeking failed in text mode) r2r:rrMr;encoder<r r?r\AttributeErrorfailrrBr r r r test_fileobj_texts  zUstarReadTest.test_fileobj_textc Csl|j|L}|j| }||j|jWdn1s@0YWdn1s^0YdSr)r2r:r<name)rZlnktyperegtypeabr r r _test_fileobj_links  z UstarReadTest._test_fileobj_linkcCs|dddS)N ustar/lnktyper7rorr r r test_fileobj_link1sz UstarReadTest.test_fileobj_link1cCs|dddS)N./ustar/linktest2/lnktypeustar/linktest1/regtyperqrr r r test_fileobj_link2sz UstarReadTest.test_fileobj_link2cCs|dddS)N ustar/symtyper7rqrr r r test_fileobj_symlink1sz#UstarReadTest.test_fileobj_symlink1cCs|dddS)N./ustar/linktest2/symtypertrqrr r r test_fileobj_symlink2sz#UstarReadTest.test_fileobj_symlink2cCs|dddS)NZsymtype2r7rqrr r r test_issue14160szUstarReadTest.test_issue14160N)rrrrCrRrTrdrjrorrrurwryrzr r r r r6bs  0r6c@s eZdZdS)GzipUstarReadTestNrrrr r r r r{sr{c@s eZdZdS)Bz2UstarReadTestNr|r r r r r}sr}c@s eZdZdS)LzmaUstarReadTestNr|r r r r r~sr~c@s,eZdZddZddZddZddZd S) ListTestcCstj|j|jd|_dS)Nrr1rr r r r3szListTest.setUpcs@tjtddd}ttd|jjddWdn1sF0Y| } d| d| d | d | d | d | d | d|fdd} |d| |d| |d| |d| |d| |d d| d|dS)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/cs|jjd}|ddS)Nsurrogateescaperbackslashreplace)decoder2r0rf)rnr`rr r convsz ListTest.test_list..convsustar/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->) rrMBytesIOr swap_attrsysr2rSdetachgetvalueassertIn assertRegex assertNotIn)rtiooutrr rr test_lists2,              zListTest.test_listcCstjtddd}ttd||jjddWdn1sF0Y| }| |d| d|| d || d || d || d |dS) NrrrrTrs\?rw-r--r-- tarfile/tarfile\s+7011 \d{4}-\d\d-\d\d\s+\d\d:\d\d:\d\d ustar/\w+type ?\r?\n\?rw-r--r-- tarfile/tarfile\s+7011 \d{4}-\d\d-\d\d\s+\d\d:\d\d:\d\d ustar/\w+type ?\r?\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) rrMrrrrr2rSrrrr)rrrr r r test_list_verboses ,    zListTest.test_list_verbosecCstjtddd}dd}ttd|&|jjd||jdWdn1sV0Y| }| d || d |dS) Nrrrcss"|D]}d|jvr|VqdS)NZreg) getmembersrk)r2rAr r r members-s  z+ListTest.test_list_members..membersrF)rrrr) rrMrrrrr2rSrrrr)rrrrr r r test_list_members+s4  zListTest.test_list_membersN)rrrr3rrrr r r r rs%rc@s eZdZdS) GzipListTestNr|r r r r r8src@s eZdZdS) Bz2ListTestNr|r r r r r<src@s eZdZdS) LzmaListTestNr|r r r r r@src@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)CommonReadTestcCsttdWdn1s 0Y|tt|tttttd }|t|Wdn1s0Y|ttddS)NwbrUsinvalid) rtmpname assertFalser is_tarfilepathlibPathrrrrBr r r test_is_tarfile_erroneousFs  .z(CommonReadTest.test_is_tarfile_erroneousc Cs|t|j|tt|jt|jd }|t|Wdn1s\0Yt|jd*}|tt| Wdn1s0YdSNrU) assertTruerrrrrrrrr;rr r r test_is_tarfile_validWs .z$CommonReadTest.test_is_tarfile_validcCstt|jddWdn1s,0YzVztt|j}|Wntjyp|dYn0|| gW| n | 0dS)NrDwz&tarfile.open() failed on empty archive) rrrrreplacegetnames ReadErrorrhassertListEqualrr4rr2r r r test_empty_tarfilefs z!CommonReadTest.test_empty_tarfilecCs>|tdtd|jWdn1s00YdS)NZxxx)assertRaisesRegexFileNotFoundErrorrrrrr r r test_non_existent_tarfilewsz(CommonReadTest.test_non_existent_tarfilecCsVttdWdn1s 0Y|tjtjt|j|tjtjtdSNr)rr assertRaisesrrrrr r r test_null_tarfile}s z CommonReadTest.test_null_tarfilec Cstdd}dD]}|tdJ}||dtd}t||_|| ||Wdn1sr0Ytjtddd }z$| | dgd |W| q| 0qdS) Nrr[)arrWfoorDT)rZ ignore_zerosz3ignore_zeros=True should have skipped the %r-blocks) r randbytesrrwriterTarInfor=r>tobufrrr4)rr charrBrAr2r r r test_ignore_zeross   (z CommonReadTest.test_ignore_zerosc CsdD]}ttd2}td}d|_||tdWdn1sN0Yttd}||Wdn1s0YttH}| tj d|D]}qWdn1s0YWdn1s0Ytt}| }| tj d| |t Wdn1s40Y| tj d||Wdn1sr0YWdq1s0YqdS)N)r[iXrWiw:rrWsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazr+bzunexpected end of data)rrrrr>addfilerrtruncaterrnextrGrHr:r;)rr>r2trBr r r test_premature_end_of_archives"  0 ( > ,z,CommonReadTest.test_premature_end_of_archivec Csb|tjd@ttd}Wdn1s60YWdn1sT0YdS)Nz%file could not be opened successfullyz recursion.tar)rrrrrfindfilerr r r test_length_zero_headersz&CommonReadTest.test_length_zero_headerN) rrrrrrrrrrrr r r r rDs rc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZeeeddejdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zeed-ud.d/d0Z d-S)1MiscReadTestBasecCsdSrr rr r r requires_name_attributesz(MiscReadTestBase.requires_name_attributec Cs|t|jdt}||jttj||jd6}||jt||jt j |jWdn1sp0YWdn1s0YdSNrUfileobjr) rrrassertIsInstancerkstrrrr<rIrJabspathrrBr2r r r test_no_name_arguments z&MiscReadTestBase.test_no_name_argumentcCsnt|jd}|}Wdn1s*0Yt|}|tt|dtj||j d}| |j dS)NrUrkr) rrr;rrrrggetattrrr assertIsNonerkrrBr r2r r r test_no_name_attributes & z'MiscReadTestBase.test_no_name_attributecCst|jd}|}Wdn1s*0Yt|}d|_tj||jd}||jWdn1sv0YdS)NrUrr) rrr;rrrkrrrrr r r test_empty_name_attributes & z*MiscReadTestBase.test_empty_name_attributec Cst|jtj}t|dZ}||jttj||jd}| |jWdn1s\0YWdn1sz0YdSr) rIrrO_RDONLYrrkintrrr)rfdrBr2r r r test_int_name_attributes  z(MiscReadTestBase.test_int_name_attributec Cs|t|j}t|dt}||jttj||j d6}||jt| |jtj |jWdn1sz0YWdn1s0YdSr) rrIfsencoderrrrkbytesrrr<rJr)rrrBr2r r r test_bytes_name_attributes  z*MiscReadTestBase.test_bytes_name_attributec Cst|j}tj||jd:}||jt| |jt j t |Wdn1s\0Y||:}||jt| |jt j t |Wdn1s0Ytjj||jd:}||jt| |jt j t |Wdn1s0Y|jdkr~tj|dd:}||jt| |jt j t |Wdn1st0YdS)NrrrD)rrrrrrrrkrr<rIrJrfspathrrr)rrr2r r r test_pathlike_names : :< z#MiscReadTestBase.test_pathlike_namecCsttdWdn1s 0Y|td|td}Wdn1sX0Y|td|td}Wdn1s0Y|td|td}Wdn1s0YdS)Nrz mode must be qrwr)rrr ValueErrorrrr r r test_illegal_mode_args **z&MiscReadTestBase.test_illegal_mode_argc Cstj|j|jd}zZ||}|j}|j}||}|}Wdn1sX0YW| n | 0||j}| ||j|jd|dF}|}| |j|| | |||dWdn1s0YWdn1s0YdS)Nrr-)rrzseek back did not work) rrrrrrkoffsetr:r;r4r\r<r)rr2rrkrfr rBr r r test_fileobj_with_offsets$ ( z)MiscReadTestBase.test_fileobj_with_offsetcCs\|tjtjt|jttd(}|jtjtj||jdWdn1sN0YdSr)rrrrrrrr r r test_fail_comps   zMiscReadTestBase.test_fail_compcCs"|jd}||jtjddS)Nzmisc/dirtype-old-v7zv7 dirtype failed)r2r9r<typerDIRTYPErrAr r r test_v7_dirtype&s  z MiscReadTestBase.test_v7_dirtypecCs2z|jdWnty,|dYn0dS)Nzmisc/regtype-xstarz3failed to find misc/regtype-xstar (mangled prefix?))r2r9KeyErrorrhrr r r test_xstar_type.s z MiscReadTestBase.test_xstar_typecCsN|jD]B}|t|jdd|j|jds2q||jdd|jqdS)N鏽>zwrong mtime for %szustar/rzwrong uname for %s)r2r<rmtimerk startswithunamerr r r test_check_members7s   z#MiscReadTestBase.test_check_memberscCs||jdjdddS)Nzmisc/eofzcould not find all members)r<r2rrkrr r r test_find_members@sz"MiscReadTestBase.test_find_memberslinkMissing hardlink implementationc Cs<tjtddd}|dt|tjtj td|dt|tjtj tdttj tdd}| }Wdn1s0Y| t |t|dt|tjtj tdttj tdd}| }Wdn1s0Y| t |tWdn1s.0YdS)NrVr.) errorlevelr0r7rprUrv)rrrrGrH addCleanuprunlinkrIrJrKr;r<r r?)rr2rr r r r test_extract_hardlinkDs  & &z&MiscReadTestBase.test_extract_hardlinkc Cstjtdd}tjtd}t|zdd|D}||||D]x}tj||j }t j dkr| |j d@t|jd@dd }tj|}d ||j|||}| |j||qFW|t|n|t|0dS) Nr.r0 extractallcSsg|]}|r|qSr isdir.0rr r r `rZz4MiscReadTestBase.test_extractall..win32cSs(t|trd||Sd|SdS)Nz{} ({})z {!r} (int)) isinstancefloatformathex)rr r r format_mtimehs z6MiscReadTestBase.test_extractall..format_mtimez,tar mtime {0} != file time {1} of path {2!a})rrrrIrJrKrHmkdirrrkrplatformr<rstatst_modegetmtimerrr4rrmtree) rr2DIR directoriesrArJr Z file_mtimeerrmsgr r r test_extractallYs0      z MiscReadTestBase.test_extractallc Csd}tjtd}t|ztjtddn}||}|j ||dtj||}| tj ||j t jdkr| t|jd@dWdn1s0YWt|n t|0dS) N ustar/dirtypeZ extractdirr.rrJrri)rIrJrKrHr rrrr9rGr<rrrr r rrrrZdirtyperr2rAZ extractedr r r test_extract_directoryws   8z'MiscReadTestBase.test_extract_directoryc Csttd}t|tjtddT}dd|D}||||D]$}||j }| t j ||jqHWdn1s0YWdn1s0YdS)Nrr.rcSsg|]}|r|qSr rrr r r rrZzBMiscReadTestBase.test_extractall_pathlike_name..)rrrHrtemp_dirrrrrrkr<rIrJrr)rrr2rrArJr r r test_extractall_pathlike_names    z.MiscReadTestBase.test_extractall_pathlike_namec Csd}ttd}t|ttjtddF}||}|j ||d||}| t j ||jWdn1sx0YWdn1s0YdS)Nrrr.rr)rrrHrrrrrr9rGr<rIrJrrrr r r test_extract_pathlike_names   z+MiscReadTestBase.test_extract_pathlike_namec Cstjtd}t|d}|dWdn1s80YzVttj }z| |Wn"tj y| |j jYn 0|dWt|n t|0dS)NemptyrrZzReadError not raised)rIrJrKrHrrobject__new__rr__init__rrrclosedrhrr)rrrBr2r r r test_init_close_fobjs (  z%MiscReadTestBase.test_init_close_fobjcCsht|jH}t||D],\}}||j|j|||qWdn1sZ0YdSr)rrrzipr<rZget_info)rr2Zm1Zm2r r r test_parallel_iterationsz(MiscReadTestBase.test_parallel_iterationNz requires zlibc CsptjdP}tj|_|tjt |j Wdn1sD0YWdn1sb0YdS)Nztarfile.TarInfo.fromtarfile) unittestmockpatchzliberrorZ side_effectrrrrr)rr%r r r test_zlib_error_does_not_leaksz.MiscReadTestBase.test_zlib_error_does_not_leak)!rrrrrrrrrrrrrrrrrr$ skipUnlesshasattrrIrskip_unless_symlinkrrrrrr!r#skipIfr'r)r r r r rs6         rc@seZdZdZdS) MiscReadTestN)rrrrr r r r r.sr.c@s eZdZdS)GzipMiscReadTestNr|r r r r r/sr/c@seZdZddZdS)Bz2MiscReadTestcCs|ddS)NzBZ2File have no name attributeskipTestrr r r rsz'Bz2MiscReadTest.requires_name_attributeNrrrrr r r r r0sr0c@seZdZddZdS)LzmaMiscReadTestcCs|ddS)NzLZMAFile have no name attributer1rr r r rsz(LzmaMiscReadTest.requires_name_attributeNr3r r r r r4sr4c@s0eZdZdZddZddZddZdd Zd S) StreamReadTestr|c Cs||jD]p}|sq|j|F}z|d}WntjyN|dYn0|s"qXq"Wdq1sl0YqdS)Nr[z6simple read-through using TarFile.extractfile() failed)r2Zisregr:r;r StreamErrorrh)rrArBbufr r r test_read_throughs z StreamReadTest.test_read_throughcCsh|j}|j|}|}Wdn1s40Y|t||jd|t|tddS)Nr8) r2rr:r;r<r=r>r r?r@r r r rCs & z(StreamReadTest.test_fileobj_regular_filecCsN|j}|j|d }|tj|jWdn1s@0YdS)Nr)r2rr:rrr7r;)rZtarinfosrr r r test_provoke_stream_errors z(StreamReadTest.test_provoke_stream_errorcCstjtdd}z|j}|}|}|dur0q||d|sL|r|tj | |Wdq1sx0Yq| |}| |}|durq||d| | | dqW| n | 0dS)Nr.rzstream.next() failed.zstream.extractfile() failedzstream extraction failed)rrrr2rassertIsNotNoneZislnkZissymrr7r:r<r;r4)rZtar1Ztar2t1t2v1v2r r r test_compare_memberss* (   z#StreamReadTest.test_compare_membersN)rrrrr9rCr:r@r r r r r5s  r5c@s eZdZdS)GzipStreamReadTestNr|r r r r rA srAc@s eZdZdS)Bz2StreamReadTestNr|r r r r rBsrBc@s eZdZdS)LzmaStreamReadTestNr|r r r r rCsrCc@s4eZdZddZddZddZddZd d Zd S) DetectReadTestc CsLzt||}Wn.tjy>}z|WYd}~nd}~00|dSr)rrrrhr4)rrkrr2er r r _testfunc_files zDetectReadTest._testfunc_filec Cszz>t|d }tj|||d}Wdn1s20YWn.tjyl}z|WYd}~nd}~00|dS)NrUr)rrrrhr4)rrkrrr2rEr r r _testfunc_fileobjs  2z DetectReadTest._testfunc_fileobjcCsJ|jr|tj$tjtd|jdWdn1s<0Y|tj$tjtd|jdWdn1s|0Y|tj tj|jddWdn1s0Y|tj tj|jddWdn1s0Y||jd||jd|j||jd||jd|j||jddS)Nr-rr6rDzr:*r|*)rrrrrr)rZtestfuncr r r _test_modes's22..  zDetectReadTest._test_modescCs||jdSr)rJrFrr r r test_detect_file7szDetectReadTest.test_detect_filecCs||jdSr)rJrHrr r r test_detect_fileobj:sz"DetectReadTest.test_detect_fileobjN)rrrrFrHrJrKrLr r r r rDs  rDc@s eZdZdS)GzipDetectReadTestNr|r r r r rM=srMc@seZdZddZdS)Bz2DetectReadTestcCs|ttd}|}Wdn1s(0Ytjtddd}||Wdn1sb0Y|tddS)NrUrrV compresslevelrI)rrr;r$r&rrrFrir r r test_detect_stream_bz2As  &(z(Bz2DetectReadTest.test_detect_stream_bz2N)rrrrQr r r r rN@srNc@s eZdZdS)LzmaDetectReadTestNr|r r r r rROsrRc@seZdZd(ddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'ZdS))MemberReadTestNcKs|durP|j|,}|t||d|jWdn1sF0Yd|d<d|d<d|d<d|jvrd |d <d |d <|D]&\}}|t|||d ||jfqdS) Nwrong sha256sum for %srriuidregidzold-v7rrgnamezwrong value in %s field of %s)r2r:r<r r;rkitemsr)rrAchksumkwargsrkvr r r _test_memberUs"  zMemberReadTest._test_membercCs |jd}|j|dtddS)Nr7cr>rYr2r9r]r?rr r r test_find_regtypefs z MemberReadTest.test_find_regtypecCs |jd}|j|dtddS)Nzustar/conttyper^r_r`rr r r test_find_conttypejs z!MemberReadTest.test_find_conttypecCs|jd}|j|dddS)Nrrr>r2r9r]rr r r test_find_dirtypens z MemberReadTest.test_find_dirtypecCs|jd}|j|dddS)Nzustar/dirtype-with-sizercrdrr r r test_find_dirtype_with_sizers z*MemberReadTest.test_find_dirtype_with_sizecCs |jd}|j|ddddS)Nrprr7r>linknamerdrr r r test_find_lnktypevs z MemberReadTest.test_find_lnktypecCs |jd}|j|ddddS)Nrvrrlrhrdrr r r test_find_symtypezs z MemberReadTest.test_find_symtypecCs"|jd}|j|dddddS)Nz ustar/blktyperr>devmajordevminorrdrr r r test_find_blktype~s z MemberReadTest.test_find_blktypecCs"|jd}|j|dddddS)Nz ustar/chrtyperrVrlrmrdrr r r test_find_chrtypes z MemberReadTest.test_find_chrtypecCs|jd}|j|dddS)Nzustar/fifotyperrcrdrr r r test_find_fifotypes z!MemberReadTest.test_find_fifotypecCs |jd}|j|dtddS)Nz ustar/sparsePr_r2r9r] sha256_sparserr r r test_find_sparses zMemberReadTest.test_find_sparsecCs |jd}|j|dtddS)N gnu/sparsersr_rtrr r r test_find_gnusparses z"MemberReadTest.test_find_gnusparsecCs |jd}|j|dtddS)Ngnu/sparse-0.0rsr_rtrr r r test_find_gnusparse_00s z%MemberReadTest.test_find_gnusparse_00cCs |jd}|j|dtddS)Ngnu/sparse-0.1rsr_rtrr r r test_find_gnusparse_01s z%MemberReadTest.test_find_gnusparse_01cCs |jd}|j|dtddS)Ngnu/sparse-1.0rsr_rtrr r r test_find_gnusparse_10s z%MemberReadTest.test_find_gnusparse_10cCs |jd}|j|dtddS)Nuustar/umlauts-ÄÖÜäöüßr^r_r`rr r r test_find_umlautss z MemberReadTest.test_find_umlautscCsd}|||jdS)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)rr2r)rrkr r r test_find_ustar_longnamesz'MemberReadTest.test_find_ustar_longnamecCs |jd}|j|dtddS)Nzmisc/regtype-old-v7r^r_r`rr r r test_find_regtype_oldv7s z&MemberReadTest.test_find_regtype_oldv7cCs@|jtj|j|jdd|_|jd}|j|dtddS)Nr.r/upax/umlauts-ÄÖÜäöüßr^r_) r2r4rrrrr9r]r?rr r r test_find_pax_umlautss    z$MemberReadTest.test_find_pax_umlauts)N)rrrr]rarbrergrjrkrprqrrrvrxrzr|r~rrrrr r r r rSSs& rSc@s,eZdZddZddZddZddZd S) LongnameTestcCsV|jddd}z|j|}Wnty>|dYn0||jtjddS)N/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/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) subdirr2r9rrhassertNotEqualrrr)rrrAr r r test_read_longnames  zLongnameTest.test_read_longnamecCsf|jddd}|jddd}z|j|}WntyP|dYn0||j|ddS)Nrrrlonglinkzlonglink not foundzlinkname wrong)rr2r9rrhr<ri)rrrrAr r r test_read_longlinks zLongnameTest.test_read_longlinkcCs|jddd}|j|}|j}|jj|t|jjd}| t j t j d|dWdn1sv0YdS)Nrrrizfoo.tar)rkr) rr2r9rrr\rrr;rrrr)rrrArrBr r r test_truncated_longnames z$LongnameTest.test_truncated_longnamecCs~|jddd}|j|j}ttd@}||tj | ddd}| |j |j Wdn1sp0YdS)NrrrrUr[r.strict)rr2r9rrrr\rrZfrombufr;r<r longnametype)rrrrBrAr r r test_header_offsets  zLongnameTest.test_header_offsetN)rrrrrrrr r r r rs   rc@sJeZdZdZejZddZddZddZ dd Z d d Z e d d Z dS) GNUReadTestZgnucCs|j|ttjt|}t|d}|}Wdn1sD0Y|t |t d|| rt |}| |jd|jdS)NrUrTr[)r2rGrHrIrJrKrr;r<r ru_fs_supports_holesr Z assertLess st_blocksst_size)rrkfilenamerBr r`r r r _test_sparse_files &  zGNUReadTest._test_sparse_filecCs|ddS)Nrwrrr r r test_sparse_file_oldsz GNUReadTest.test_sparse_file_oldcCs|ddS)Nryrrr r r test_sparse_file_00szGNUReadTest.test_sparse_file_00cCs|ddS)Nr{rrr r r test_sparse_file_01szGNUReadTest.test_sparse_file_01cCs|ddS)Nr}rrr r r test_sparse_file_10szGNUReadTest.test_sparse_file_10cCstjdrtjtd}t|d,}|d| d| Wdn1sV0Yt |}t ||jd|jkSdSdS)Nlinuxz sparse-testrisxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr[F)rr rrIrJrKrHrr\rrr rrrr)rkrBr`r r r rs    &  zGNUReadTest._fs_supports_holesN)rrrrrGNUTYPE_LONGNAMErrrrrr staticmethodrr r r r rs  rc@s&eZdZdZejZddZddZdS) PaxReadTestZpaxcCstjtdd}z|d}||jd||jd||jdd|d}||jd ||jd||jdd|d }||jd ||jd ||jddW| n | 0dS) Nr.rz pax/regtype1rbarzVENDOR.umlautsuÄÖÜäöüßz pax/regtype2rz pax/regtype3r) rrrr9r<rrW pax_headersgetr4rr2rAr r r test_pax_global_headerss*   z#PaxReadTest.test_pax_global_headerscCstjtdd}z|d}||jd||jd||jd||jd|t |jt |t |j dd|t |j ddW| n | 0dS) Nr.rz pax/regtype4r^{g^ AZatimectime) rrrr9r<r>rUrVrrrrr4rr r r test_pax_number_fields5s z"PaxReadTest.test_pax_number_fieldsN) rrrrrXHDTYPErrrr r r r rsrc@seZdZddZddZdS) WriteTestBasecCst}tj||jd }|tdWdn1s>0Y||jd| }~t ||j| || dS)Nrrz#external fileobjs must never closed) rrrrrrrrr rr gc_collectr<)rrBr2r r r r test_fileobj_no_closeIs. z#WriteTestBase.test_fileobj_no_closecCstt|j@}td}tjtj|_||t d|jWdn1sT0Y|td*}| t | tjdWdn1s0YdS)NrrrUrY)rrrrr RECORDSIZE BLOCKSIZEr>rrrr<r=r;)rr2rrBr r r test_eof_markerUs  6zWriteTestBase.test_eof_markerN)rrrrrr r r r rEs rc@seZdZdZddZddZddZdd Zd d Zd d Z e e e ddddZejddZddZddZd&ddZejddZddZd d!Zd"d#Zd$d%ZdS)' WriteTestrcCszd}tt|j}z t|}||W|n |0tt}z"||d|dW|n |0dS)Nd0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789rz!failed to store 100 char filename) rrrrrrr4r<r)rrkr2rr r r test_100_char_namegs   zWriteTest.test_100_char_namecCstt|j}zXtjtd}t|d}|dWdn1sH0Y| |W| n | 0| tj tdddS)Nfileraaarztarfile is empty) rrrrrIrJrKrHraddr4Z assertGreatergetsize)rr2rJrBr r r test_tar_size{s ( zWriteTest.test_tar_sizecCstt|j}ztjtd}t|dWdn1s>0Y||}| |j dt|d}| dWdn1s0Y||}| |j dW| n | 0dS)Nrrrrrl) rrrrrIrJrKrH gettarinfor<r>rr4)rr2rJrArBr r r test_file_sizes   ( zWriteTest.test_file_sizec Csvtjtd}t|zLtt|j}z$| |}| |j dW| n | 0Wt |n t |0dS)N directoryr)rIrJrKrHr rrrrrr<r>r4rrmdirrrJr2rAr r r test_directory_sizes  zWriteTest.test_directory_sizec CsXtjtd}t|ttj|ddttj|ddztt|j }zt j d$}ddg|_ ||Wdn1s0Yg}|D]}|tj|jdq||gdW|n |0Wttj|dttj|dt|n4ttj|dttj|dt|0dS)Nr1rm2z os.listdirr)rrr)rIrJrKrHr rr4rrrr$r%r& return_valuerrappendsplitrkr<rrr)rrJr2Z mock_listdirpathsmr r r test_ordered_recursions*  (  z WriteTest.test_ordered_recursionc Cstt|j}ttd}t|d}|dWdn1sH0Y||}|t |}| |j t ||j |j ||jdWdn1s0YdS)Nrrrrl)rrrrrrrHrrrIrrrkrr<r>)rr2rJrBrAZtarinfo2r r r test_gettarinfo_pathlike_names ( z'WriteTest.test_gettarinfo_pathlike_namerrc Cstjtd}tjtd}t|d}|dWdn1sF0Yzt||Wn2ty}z|d|WYd}~n d}~00z`t t |j }z.| || |}| |jdW|n |0Wt|t|nt|t|0dS)Nr link_targetrr os.link(): %sr)rIrJrKrHrrrPermissionErrorr2rrrrr<r>r4rr)rrtargetrBrEr2rAr r r test_link_sizes& ($    zWriteTest.test_link_sizec Csxtjtd}td|zLtt|j}z$| |}| |j dW| n | 0Wt |n t |0dS)Nsymlinkrr)rIrJrKrHrrrrrrr<r>r4rrrr r r test_symlink_sizes  zWriteTest.test_symlink_sizecCstjt}tt|j}z~||j|d| ||| gdt t | |Wdn1sr0Y|| gdW|n |0dS)Nzarchive name must be absolutezadded the archive to itself)rIrJrrrrrr<rkrrr change_cwdrHr4)rdstnamer2r r r test_add_selfs      ( zWriteTest.test_add_selfc Cs8tjtd}t|z dD]}tj||}t|q dd}tjt |j dd}z|j |d|dW| n | 0| t"| |dd d|Wdn1s0Ytt d }zF|D] }||jd ||jd q|t|d W| n | 0Wt|n t|0dS)Nfilter)rrZbazcSs&tj|jdkrdSd|_d|_|S)Nrrr)rIrJbasenamerkrUr)rAr r r r s z%WriteTest.test_filter..filterr.rZ empty_dir)arcnamerTrDrrrl)rIrJrKrHr rcreate_empty_filerrrrrr4r TypeErrorr<rUrr=rr)rtempdirrkrr2rAr r r test_filters*   0 zWriteTest.test_filterNFcCstjtd}|st|n t|tt |j }z|j ||dW| n | 0tt d}z| }W| n | 0|st|n t|||j|p|tjddS)NrrrDr)rIrJrKrHrrr rrrrrr4rrrr<rkrsep)rrJZcmp_pathdirrr2rr r r _test_pathname)s       zWriteTest._test_pathnamec Cs`tjtd}tjtd}t|ztj|d}tj|d}t|d}|dWdn1sp0Yt||t|d,}|j |dd|j |ddWdn1s0Ytj|dd @}z|j |d Wnt y | d Yn0Wdn1s$0YWt |t |nt |t |0dS) NZ testsymlinksztestsymlinks.tarsourcerrz something rrY)rrz&extractall failed with symlinked files)rIrJrKrHr rrrrrrOSErrorrhrrr)rrZ temparchiveZ source_fileZ target_filerr2r r r test_extractall_symlinksFs*  ( ,2  z"WriteTest.test_extractall_symlinkscCs<|d|tjddd|tjddd|tjdd|tjddd|tjdddd|tjdddd|tjdddd|tjdd|tjddd|tjdddd|tjdddd|dtjtjd|jdtjtjddddS)Nr.rz..T)r)rrIrJrKrrr r r test_pathnames`s zWriteTest.test_pathnamescCs4tjdkr|ddn|dd|dddS)NrzC:\foorz/fooz///foo)rr rrr r r test_abs_pathnamesqs  zWriteTest.test_abs_pathnamesc Cstttt|j}z|dW|n |0ttd}z6|D]$}|j dkrN| |j d|j qNW|n |0Wdn1s0YdS)NrrDz./) rrrHrrrrrr4rkrrrr2rr r r test_cwdxs    zWriteTest.test_cwdc stttfD]rGfdddtj}|}|,tjt|j |tj ddid}Wdn1sf0Y| |j q dS)NcseZdZdZfddZdS)z8WriteTest.test_open_nonwritable_fileobj..BadFileTcs|jrd|_dSNF)firstrr exctyper r rsz>WriteTest.test_open_nonwritable_fileobj..BadFile.writeN)rrrrrr rr r BadFilesrZnonr)rrr) rEOFError RuntimeErrorrrrrrrr PAX_FORMATrr )rrrr2r rr test_open_nonwritable_fileobjs  $z'WriteTest.test_open_nonwritable_fileobj)NF)rrrrrrrrrrr$r*r+rIrrr,rrrrrrrrrr r r r rcs,   (  rc@s eZdZdS) GzipWriteTestNr|r r r r rsrc@s eZdZdS) Bz2WriteTestNr|r r r r rsrc@s eZdZdS) LzmaWriteTestNr|r r r r rsrc@s@eZdZdZdZddZeej dko.e e dddd Z dS) StreamWriteTestzw|NcCstt|j}||jrp|}ttd}|}Wdn1sL0Y||}||j dn2|t}|}Wdn1s0Y| | dtj ddS)NrUzfound trailing datarzincorrect zero padding) rrrrr4 decompressorr; decompressr unused_datar<countr)rr2ZdecrBr r r r test_stream_paddings &  &z#StreamWriteTest.test_stream_paddingrumaskzMissing umask implementationc Csttjtrtttd}zBtt|j }| t tj d@}| |ddWt|n t|0dS)Nrizwrong file permissions)rIrJexistsrrrrrrrr4r rr<)rZoriginal_umaskr2rr r r test_file_modes   zStreamWriteTest.test_file_mode) rrrrrrr$r*rr r+rIrr r r r rsrc@seZdZddZdS)GzipStreamWriteTestcCs<tt|jttjdd}tj t|vs8JdS)zf Ensure the source directory is not included in the tar header per bpo-41316. zlatin-1rN) rrrrr4rr read_textrIrJdirname)rpayloadr r r test_source_directory_not_leakedsz4GzipStreamWriteTest.test_source_directory_not_leakedN)rrrrr r r r rsrc@seZdZerejndZdS)Bz2StreamWriteTestN)rrrr$BZ2Decompressorrr r r r rsrc@seZdZerejndZdS)LzmaStreamWriteTestN)rrrr*LZMADecompressorrr r r r rsrc@speZdZddZdddZdddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZdS) GNUWriteTestcCst|dd}|dS)Nr[rV)r=)rr`Zblocksr r r _lengthszGNUWriteTest._lengthNcCsXd}t|tjkr(|d7}|||7}|durTt|tjkrT|d7}|||7}|S)Nr[)r=r LENGTH_NAMEr LENGTH_LINK)rrkrrr r r _calc_sizeszGNUWriteTest._calc_sizecCst|}|r||_tj|_ttd}z>tj|_| || ||}|j }| ||dW| n | 0tt}zD|}||d| |j|jd| |j|jdW| n | 0dS)Nrz%GNU longname/longlink creation failedzunable to read longname member)rrriLNKTYPErrr GNU_FORMATrrrrr<r4rr;rk)rrkrrAr2r>r?memberr r r _tests2       zGNUWriteTest._testcCs|ddS)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/longnamr rr r r test_longname_1023szGNUWriteTest.test_longname_1023cCs|ddS)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/longnamer rr r r test_longname_1024szGNUWriteTest.test_longname_1024cCs|ddS)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_r rr r r test_longname_1025szGNUWriteTest.test_longname_1025cCs|dddS)Nrklonglnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnkr rr r r test_longlink_1023szGNUWriteTest.test_longlink_1023cCs|dddS)Nrklonglnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlinkr rr r r test_longlink_1024szGNUWriteTest.test_longlink_1024cCs|dddS)Nrklonglnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/longlnk/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_r rr r r test_longlink_1025!szGNUWriteTest.test_longlink_1025cCs|dddS)Nr rr rr r r test_longnamelink_1023$sz#GNUWriteTest.test_longnamelink_1023cCs|dddS)Nrrr rr r r test_longnamelink_1024(sz#GNUWriteTest.test_longnamelink_1024cCs|dddS)Nrrr rr r r test_longnamelink_1025,sz#GNUWriteTest.test_longnamelink_1025)N)N)rrrrrr r rrrrrrrrr r r r rs  rc@seZdZdZddZdS)DeviceHeaderTestrc Cstjtd}t|z^tt|j}zHtj dd}tj dd}tj |_ tj |_ | || |W|n |0ttd}z |d}|d}W|n |0||jd||jd||jd||jdttd}|}Wdn1s0Y||j|j} ||j|j} tdd } || | d || | d Wt|n t|0dS) NZdevice_header_testZmy_block_device)rkZmy_regular_filerDrrUiIiYs00000000000000s)rIrJrKrHr rrrrrBLKTYPErREGTYPErr4r9r<rnror;rZ offset_dataslicerr) rrr2Z input_blkZ input_regZ output_blkZ output_regZinfiler8Zbuf_blkZbuf_regZdevice_headersr r r *test_headers_written_only_for_device_files5s:         ( z;DeviceHeaderTest.test_headers_written_only_for_device_filesN)rrrrrr r r r r1src@sneZdZdZejedZddZ e ddZ e ddZ d d Z d d Zd dZddZddZddZdS) CreateTestzx: spameggs42cCsttdSr)rrrrr r r r3eszCreateTest.setUpcCs:t|jd}|dWdn1s,0YdS)Nrr)r file_pathr)clsrBr r r setUpClasshszCreateTest.setUpClasscCst|jdSr)rrr")r#r r r tearDownClassmszCreateTest.tearDownClasscCstt|j}||jWdn1s00Y|t}|}Wdn1sb0Y|t |d| d|ddSNrVr!r) rrrrrr"rrr<r=rrtobjnamesr r r test_createqs * &zCreateTest.test_createcCstt|j}||jWdn1s00Y|ttt|j}Wdn1sh0Y|t}| }Wdn1s0Y| t |d| d|ddSr&) rrrrrr"rFileExistsErrorrrr<r=rr'r r r test_create_existingzs* , &zCreateTest.test_create_existingcCs|td}||jWdn1s.0Y|t}|}Wdn1s`0Y|t|d|d|ddSNxrVr!r)rrrr"rr<r=rr'r r r test_create_taropens * &zCreateTest.test_create_taropenc Cs|td}||jWdn1s.0Y|t<|tdWdn1sf0YWdn1s0Y|t}|}Wdn1s0Y|t|d| d|ddSr-) rrrr"rr+rr<r=rr'r r r test_create_existing_taropens* < &z'CreateTest.test_create_existing_taropencCsttt|jN}||jt| |jt j t| t|j|}Wdn1sh0Y| t|d|d|d|t}|}Wdn1s0Y| t|d|d|ddSr&)rrrrrrrrkrr<rIrJrrr"rr=rrr'r r r test_create_pathlike_names& &z$CreateTest.test_create_pathlike_namecCs|ttdN}||jt||jtj t| t|j | }Wdn1sf0Y|t|d|d|d|t}| }Wdn1s0Y|t|d|d|ddSr-)rrrrrrkrr<rIrJrrr"rr=rr'r r r !test_create_taropen_pathlike_names& &z,CreateTest.test_create_taropen_pathlike_nameN)rrrrrIrJrKrHr"r3 classmethodr$r%r*r,r/r0r1r2r r r r r _s      r c@seZdZddZdS)GzipCreateTestcCsrtjt|jdd}||jWdn1s40Ytjtddd}Wdn1sd0YdS)NrVrOzr:gzrrrrrr"rr(r r r test_create_with_compresslevels*z-GzipCreateTest.test_create_with_compresslevelNrrrr7r r r r r4sr4c@seZdZddZdS) Bz2CreateTestcCsrtjt|jdd}||jWdn1s40Ytjtddd}Wdn1sd0YdS)NrVrOr:bz2r5r6r r r r7s*z,Bz2CreateTest.test_create_with_compresslevelNr8r r r r r9sr9c@seZdZddZdS)LzmaCreateTestcCsBtjt|jdd}||jWdn1s40YdS)NrV)presetr5r6r r r test_create_with_presetsz&LzmaCreateTest.test_create_with_presetN)rrrr=r r r r r;sr;c@seZdZdZdZdZdS)CreateWithXModeTestr.N)rrrrr/r0r r r r r>sr>rrc@s4eZdZddZddZddZddZd d Zd S) HardlinkTestc Cstjtd|_tjtd|_t|jd}|dWdn1sL0Yzt|j|jWn2t y}z| d|WYd}~n d}~00t t d|_ |j |jdS)Nrrrfoorr)rIrJrKrHrrrrrrr2rrr2r)rrBrEr r r r3s($zHardlinkTest.setUpcCs&|jt|jt|jdSr)r2r4rrrrrr r r r5s  zHardlinkTest.tearDowncCs$|j|j}||jtjddS)Nzadd file as regular failed)r2rrr<rrrrr r r test_add_twices zHardlinkTest.test_add_twicecCs$|j|j}||jtjddS)Nzadd file as hardlink failed)r2rrr<rrrrr r r test_add_hardlinks zHardlinkTest.test_add_hardlinkcCs,d|j_|j|j}||jtjddS)NTzdereferencing hardlink failed)r2Z dereferencerrr<rrrrr r r test_dereference_hardlinks  z&HardlinkTest.test_dereference_hardlinkN)rrrr3r5rArBrCr r r r r?s r?c@s&eZdZdddZddZddZdS) PaxWriteTestNcCst|}|r||_tj|_tjtdtjd}z||W| n | 0tt}zJ|r~| dj}| ||dn| dj }| ||dW| n | 0dS)NrrrzPAX longlink creation failedzPAX longname creation failed) rrrirrrrrrr4rr<rk)rrkrrAr2lnr r r r  s    zPaxWriteTest._testc Cs dddddd}tjtdtj|d}z|tdW|n |0tjtd d }z||j||| d j||j D]f\}}| t |t | t |t |tjvrztj||Wqttfy|d Yq0qW|n |0dS) Nr0z1.23äöütest)rrUrrJrIr)rrr.rrz"unable to convert pax header field)rrrrrrr4r<rrrXZ assertIsNotrrPAX_NUMBER_FIELDSrrrh)rrr2keyvalr r r test_pax_global_header!s2  z#PaxWriteTest.test_pax_global_headercCsddd}tjtdtjdd}z0t}d|_d|_||_||W| n | 0tjtdd }zB| d }| |j|| |jd| |jd W| n | 0dS) NrZ123)rJrUrr.rr0rIirrr) rrrrrrkrUrrr4rr<)rrr2rr r r test_pax_extended_headerAs$    z%PaxWriteTest.test_pax_extended_header)N)rrrr rNrPr r r r rDs  rDc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS) UnicodeTestcCs|ddS)Nr._test_unicode_filenamerr r r test_iso8859_1_filename]sz#UnicodeTest.test_iso8859_1_filenamecCs|ddS)Nutf7rRrr r r test_utf7_filename`szUnicodeTest.test_utf7_filenamecCs|ddS)Nutf-8rRrr r r test_utf8_filenamecszUnicodeTest.test_utf8_filenamecCstjtd|j|dd}z d}|t|W|n |0tjt|d}z"||dj |W|n |0dS)Nrrrr0errorsrIrr) rrrrrrr4r<rrk)rr0r2rkr r r rSfs z"UnicodeTest._test_unicode_filenamecCsltjtd|jddd}zFt}d|_|t|j|d|_d|_ |t|j|W| n | 0dS)NrrrrYrIr) rrrrrrkr UnicodeErrorrrr4rr r r test_unicode_filename_errorus z'UnicodeTest.test_unicode_filename_errorcCstjtdddd}z^|D]L}|t|jt|t|jt|t|jt|t|j tqW| n | 0dS)NrDr.rr0rZ) rrrZassertIsrrkrrirrWr4rr r r test_unicode_argumentsz!UnicodeTest.test_unicode_argumentcCstd}d|_d|_tjtd|jdd}z||W|n |0tjtdd}zz| d}| |jd| |jd|jtj kr|tjtdd}| d}| |jd| |jdW|n |0dS) NrrIrr.)rrr0rru ) rrrrWrrrrr4r9r<r)rrr2r r r test_uname_unicodes*      zUnicodeTest.test_uname_unicodeN) rrrrTrVrXrSr\r^r_r r r r rQ[s rQc@sfeZdZejZddZddZddZddZ d d Z d d Z dddZ ddZ ddZdddZd S)UstarUnicodeTestcCs0|d|dt|d|dtdSNre01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890ud01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567ÿue012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678ÿ_test_ustar_namerrr r r test_unicode_name1s   z#UstarUnicodeTest.test_unicode_name1cCs|d|dtdSNud012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345ÿÿue0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456ÿÿrcrr r r test_unicode_name2s z#UstarUnicodeTest.test_unicode_name2cCs0|d|dt|d|dtdS)Na01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789a0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123/40123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012ÿ/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123ÿ/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789rcrr r r test_unicode_longname1s   z'UstarUnicodeTest.test_unicode_longname1cCs|dt|dtdS)Nu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901ÿ/20123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901ÿÿ/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789rcrr r r test_unicode_longname2s z'UstarUnicodeTest.test_unicode_longname2cCs&|dt|d|dtdS)Nu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901ÿÿ/20123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789u01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567ÿu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678ÿrcrr r r test_unicode_longname3s  z'UstarUnicodeTest.test_unicode_longname3cCs|d|dtdS)Nu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345ÿÿu01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234/0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456ÿÿrcrr r r test_unicode_longname4s z'UstarUnicodeTest.test_unicode_longname4NcCstjtd|jdd>}t|}|dur4||n|||j|Wdn1sX0Y|durtjtddd,}|D]}|||jqqWdn1s0YdS)NrrWrOrDr) rrrrrrrr<rkrrkexcr2rr r r rds  .z!UstarUnicodeTest._test_ustar_namecCs0|d|dt|d|dtdSra_test_ustar_linkrrr r r test_unicode_link1s   z#UstarUnicodeTest.test_unicode_link1cCs|d|dtdSrfrnrr r r test_unicode_link2s z#UstarUnicodeTest.test_unicode_link2cCstjtd|jddD}td}||_|dur:||n|||j|Wdn1s^0Y|durtjtddd,}|D]}|||jqqWdn1s0YdS)NrrWrOrrDr) rrrrrrirrr<rlr r r ros  .z!UstarUnicodeTest._test_ustar_link)N)N)rrrr USTAR_FORMATrrergrhrirjrkrdrprqror r r r r`s r`c@seZdZejZddZdS)GNUUnicodeTestc CsndD]d\}}tjt|dd<}z||}WntyH|dYn0Wdq1s^0YqdS)N))rWupax/bad-pax-)r.upax/bad-pax-äöürr]z%unable to read bad GNU tar pax headerrrrr9rrhrr0rkr2rr r r test_bad_pax_headers  z"GNUUnicodeTest.test_bad_pax_headerN)rrrrrrrvr r r r rssrsc@seZdZejZdZddZdS)PAXUnicodeTestNc CsndD]d\}}tjt|dd<}z||}WntyH|dYn0Wdq1s^0YqdS)N))rWupax/hdrcharset-)r.upax/hdrcharset-äöürr]z)unable to read POSIX.1-2008 binary headerrtrur r r test_binary_headers  z!PAXUnicodeTest.test_binary_header)rrrrrrr\rxr r r r rw srwc@s&eZdZddZd ddZddZdS) AppendTestBasecCs$t|_tj|jr t|jdSr)rrrIrJrrrrr r r r3$szAppendTestBase.setUprc Cstjtdd}|d}d|_||J}t|j|}|||Wdn1s\0YWdn1sz0YWdn1s0YdS)Nr.rr7r)rrrr9rkr:r)rrsrcrrr2r r r _create_testtar)s   zAppendTestBase._create_testtarcCs(|d|j|tjtjtddS)Nrrm)r{rrrrrrrr r r test_append_compressed1sz%AppendTestBase.test_append_compressedN)r)rrrr3r{r|r r r r ry!s ryc@seZdZdZdddZdgdfddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS) AppendTestNcCsFtj|jd|d }|tdWdn1s80YdS)NrmrGr)rrrrr)rrr2r r r _add_testfile8szAppendTest._add_testfilercCsDtj|j|d }|||Wdn1s60YdS)NrG)rrrr<r)rr)rr2r r r r <szAppendTest._testcCs||dSr)r~r rr r r test_non_existing@szAppendTest.test_non_existingcCs&t|jd||dS)Nr)rrrr4r~r rr r r test_emptyDszAppendTest.test_emptycCs.td}|||d|j|ddS)NsrrG)rrr~r\r rr r r test_empty_fileobjIs   zAppendTest.test_empty_fileobjcCsp|t|jd}|}Wdn1s20Yt|}|||d|jddg|ddS)NrUrrr)r)r) r{rrr;rrr~r\r rir r r test_fileobjOs&   zAppendTest.test_fileobjcCs$|||jddgddS)Nrr)r))r{r~r rr r r test_existingXszAppendTest.test_existingcCsJt|jd}||Wdn1s,0Y|tj|jdSr)rrrrrrr~)rr rBr r r _test_error_s(zAppendTest._test_errorcCs|ddS)NrZrrr r r test_nulldszAppendTest.test_nullcCs|ddS)N rrr r r test_incompletegszAppendTest.test_incompletecCstd}||dS)Nrrrrrrr r r test_premature_eofjszAppendTest.test_premature_eofcCs td}||ddS)Nrrrrr r r test_trailing_garbagensz AppendTest.test_trailing_garbagecCs|ddS)Nsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarrr r r test_invalidrszAppendTest.test_invalid)N)rrrr|r~r rrrrrrrrrrrr r r r r}5s  r}c@s eZdZdS)GzipAppendTestNr|r r r r rusrc@s eZdZdS) Bz2AppendTestNr|r r r r rxsrc@s eZdZdS)LzmaAppendTestNr|r r r r r{src@s$eZdZddZddZddZdS) LimitsTestcCstd}|tjtd}|t|jtjtd}|tjtd}|t|jtjtd}|t|jtjtd}d|_|t|jtjtd}d|_|t|jtjdS) Nrrba123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/123/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/longnamerrk )rrrrrrrrirUrr r r test_ustar_limitss          zLimitsTest.test_ustar_limitscCsXtd}|tjtd}d|_|tjtd}d|_|t|jtjdSNrrrkl)rrrrrirUrrrr r r test_gnu_limitss     zLimitsTest.test_gnu_limitscCsRtd}|tjtd}d|_|tjtd}d|_|tjdSr)rrrrrirUrr r r test_pax_limitss     zLimitsTest.test_pax_limitsN)rrrrrrr r r r rs rc@s4eZdZddZddZddZddZd d Zd S) MiscTestcCs`|tddddd|tddddd|tdddd|td ddddS) NrrrsfooZfoobarrlr@sfoobar)r<rstnntsrr r r test_char_fieldsszMiscTest.test_char_fieldscCs|tdd|tdd|tdd|tdd|td d |td d |td d|tdd|tdddS)N0000001rV7777777 rrrrs )r<rntirr r r test_read_number_fieldss&     z MiscTest.test_read_number_fieldscCs|tdd|tdd|tjdtjdd|tjdtjdd |tjd tjdd |tjd tjdd |tjdtjdd|tjdtjdd |tjdtjdd|ttjdtjdddS)NrVrrrrrErrrrrrrrrgYg0Bsgr)r<ritnrrrr r r test_write_number_fieldss4 z!MiscTest.test_write_number_fieldscCs|t tddtjWdn1s00Y|t tddtjWdn1sj0Y|t tddtjWdn1s0Y|t tddtjWdn1s0YdS)Nrrrll)rrrrrrrrr r r test_number_field_limitss . . . z!MiscTest.test_number_field_limitscCshd}tj|t|ddS)N>/pwdrZEmptyHeaderErrorZCHRTYPEZXGLTYPErZAREGTYPEZCONTTYPErZ ExFileObjectZEOFHeaderErrorrZSubsequentHeaderErrorrK copyfileobjrZGNUTYPE_LONGLINKrZTruncatedHeaderErrorZPAX_NAME_FIELDSZsymlink_exceptionversionZFIFOTYPErrZSYMTYPErZ GNU_MAGICZ REGULAR_TYPESrZInvalidHeaderErrorZ POSIX_MAGICZSUPPORTED_TYPESfilemoderZ LENGTH_PREFIXZ calc_chksumsrNULrZGNUTYPE_SPARSEgrpZSOLARIS_XHDTYPEZ GNU_TYPESZ PAX_FIELDSrmain) blacklist)rZ check__all__r)rrr r r test__all__szMiscTest.test__all__N)rrrrrrrrr r r r rs   rc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'S)(CommandLineTestcOs2tjddg|Ri|\}}}|tjdS)N-mr )rZassert_python_okrrIlineseprf)rargsrZrcrerrr r r tarfilecmd s zCommandLineTest.tarfilecmdcGstjddg|RS)Nrr)rZassert_python_failurerrr r r tarfilecmd_failure sz"CommandLineTest.tarfilecmd_failurecCsrtdtdg}|tj|t|d0}|D]}|j|tj |dq4Wdn1sd0YdS)Ntokenize_tests.txt9tokenize_tests-no-coding-cookie-and-utf8-bom-sig-only.txtrr) rrrrrrrrIrJr)rtar_namefilestfZtardatar r r make_simple_tarfile sz#CommandLineTest.make_simple_tarfilecCs||\}}}||d|d||d||d||dd\}}}||d||ddS)NrZsusageserrorsrequired-lr)rr<rlowerrstrip)rrrrr r r test_bad_use! s  zCommandLineTest.test_bad_usecCs0tD]&}dD]}|||}||dq qdS)N)-tz--testrZ) testtarnamesrr<rroptrr r r test_test_command+ s z!CommandLineTest.test_test_commandcCs6tD],}dD]"}|j|d|dd}|d|q qdS)Nz-vz --verboserrWPYTHONIOENCODINGsis a tar archive. )rrrrr r r test_test_command_verbose1 s  z)CommandLineTest.test_test_command_verbosec Cs0td}|d|\}}}|d|||d||dtD]}|j|dt|d}|}Wdn1s~0Yzttt d"}| |dd Wdn1s0Y|dt \}}}||d||dWt t n t t 0WdqD1s 0YqDdS) N zipdir.zipr is not a tar archive.rZrV)rrUrr) rrrrr<rZsubTestrr;rrr)rzipnamerrrrrr r r r test_test_command_invalid_file8 s      & 0 z.CommandLineTest.test_test_command_invalid_filec CstD]}tH}t|d}|jddWdn1s@0YWdn1s^0Y|dd}dD] }|j||dd}| ||q|qdS)NrDFrrr)rz--listr rrZcaptured_stdoutrrrSrrfrr<rrrrZexpectedrrr r r test_list_commandL s Hz!CommandLineTest.test_list_commandc CstD]}tH}t|d}|jddWdn1s@0YWdn1s^0Y|dd}dD]"}|j|d|dd}| ||q|qdS) NrDTrrrrrrrrr r r test_list_command_verboseW s H z)CommandLineTest.test_list_command_verbosecCsDtd}|d|\}}}|d|||d||ddS)NrrrrZrV)rrrrr<rrrrrr r r test_list_command_invalid_fileb s    z.CommandLineTest.test_list_command_invalid_filec Cstdtdg}dD]r}z`|j|tg|R}||dtt}|Wdn1sf0YWttqtt0qdS)Nrr)-cz--createrZ) rrrrr<rrrrrrrrr2r r r test_create_commandi s  (z#CommandLineTest.test_create_commandc Cstdtdg}dD]z}zh|j|dtg|Rddi}|d|tt}|Wdn1sn0YWttqtt0qdS)NrrrrrrWs file created.) rrrrrrrrrrr r r test_create_command_verbosev s  (z+CommandLineTest.test_create_command_verbosec Cs~tdg}z`|jdtg|R}||dtt}|Wdn1sV0YWttn tt0dS)NrrrZ) rrr dotlessnamer<rrrr)rrrr2r r r $test_create_command_dotless_filename s   (z4CommandLineTest.test_create_command_dotless_filenamec Cstjtd}tdg}z`|jd|g|R}||dt |}| Wdn1sd0YWt |n t |0dS)Nz.testtarrrrZ) rIrJrKrHrrrr<rrrr)rrrrr2r r r (test_create_command_dot_started_filename s   (z8CommandLineTest.test_create_command_dot_started_filenamec Cstdtdg}tttfD]|}|js*qzbtd|j}|jd|g|R}| |}| Wdn1sv0YWt |qt |0qdS)Nrrrr) rrrr#r'rrrrrrr)rrZfiletyperrr2r r r test_create_command_compressed s (z.CommandLineTest.test_create_command_compressedc Csv|tdD]b}zPtt||t}Wdn1s@0Y||dWttqtt0qdS)N)-ez --extractrZrrrtemp_cwd tarextdirrr<rrrrr r r test_extract_command s  *z$CommandLineTest.test_extract_commandc Cs||tdD]h}zVtt"|j|dtdd}Wdn1sF0Y|d|Wttqtt0qdS)NrrrWrs file is extracted.)rrrrrrrrrr r r test_extract_command_verbose s   $z,CommandLineTest.test_extract_command_verbosec Csn|tzRtt|dtd}Wdn1s:0Y||dWttn tt0dS)NrZspamdirrZr)rrr r r (test_extract_command_different_directory s   ,z8CommandLineTest.test_extract_command_different_directorycCsntd}tt"|d|\}}}Wdn1s<0Y|d|||d||ddS)NrrrrZrV)rrrrrrr<rr r r !test_extract_command_invalid_file s   0  z1CommandLineTest.test_extract_command_invalid_fileN)rrrrrrrrrrrrrrrrrrrrrrr r r r r s&          rc@s<eZdZddZddZddZddZd d Zd d Zd S)ContextManagerTestcCsJtt}||jdWdn1s.0Y||jddS)Nzclosed inside runtime contextcontext manager failed)rrrrr rrr r r test_basic s ,zContextManagerTest.test_basicc Csdtt}||t4|Wdn1s80YWdn1sV0YdSr)rrrr4rrrr r r test_closed s   zContextManagerTest.test_closedc Csz|t>}tt}tWdn1s00YWdn1sN0Y||jtd||j ddS)Nz)wrong exception raised in context managerr) r Exceptionrrrrr exceptionrr )rrmr2r r r test_exception s  @ z!ContextManagerTest.test_exceptioncCsjz4ttd}tWdn1s(0YWn Yn0|tjtdd||j ddS)Nrrz-context manager wrote an end-of-archive blockr) rrrrr<rIrJrrr rr r r test_no_eof s&zContextManagerTest.test_no_eofcCsFttdWdn1s"0Y|tjtdddS)Nrrz-context manager wrote no end-of-archive block)rrrrrIrJrrr r r test_eof s zContextManagerTest.test_eofc Csttdp}z6tj|dd}tWdn1s60YWn Yn0||jd||jdWdn1s0YdS)Nrrrzexternal file object was closedr)rrrrrr rrr r r r s &zContextManagerTest.test_fileobjN) rrrrrrrrrr r r r r s    rzrequires os.link to be missingc@seZdZddZeeejddddZ eeejddddZ eeed d d d Z eeed d d dZ dS)LinkEmulationTestcCs^|j|tttjt|d}|}Wdn1s@0Y|t |t dSr) r2rGrHrrIrJrKr;r<r r?)rrkrr r r r _test_link_extraction s&z'LinkEmulationTest._test_link_extractionislinkz3Skip emulation - has os.path.islink but not os.linkcCs|ddS)Nrprrr r r test_hardlink_extraction1 sz+LinkEmulationTest.test_hardlink_extraction1cCs|ddS)Nrsrrr r r test_hardlink_extraction2 sz+LinkEmulationTest.test_hardlink_extraction2rz Skip emulation if symlink existscCs|ddS)Nrvrrr r r test_symlink_extraction1 sz*LinkEmulationTest.test_symlink_extraction1cCs|ddS)Nrxrrr r r test_symlink_extraction2% sz*LinkEmulationTest.test_symlink_extraction2N) rrrrr$r-r+rIrJrrrrr r r r r s"     rc@s$eZdZddZddZddZdS)Bz2PartialReadTestc sxGfdddtjttd}tt|dD]8}ztj |d||dWq:tj ypYq:0q:dS)Ncs0eZdZdZfddZfddZZS)z9Bz2PartialReadTest._test_partial_input..MyBytesIOFcs4|jrtd|t|k|_t||S)Nz(infinite loop detected in tarfile.open())hit_eofAssertionErrorr]r=rsuperr;)rrG MyBytesIO __class__r r r;2 sz>Bz2PartialReadTest._test_partial_input..MyBytesIO.readcsd|_t|j|Sr)rrr\rrr r r\8 sz>Bz2PartialReadTest._test_partial_input..MyBytesIO.seek)rrrrr;r\ __classcell__r r)rr r0 srrrVr) rrr$compressrrrranger=rr)rrr r.r rr _test_partial_input/ s z&Bz2PartialReadTest._test_partial_inputcCs|ddS)NrDr rr r r test_partial_inputC sz%Bz2PartialReadTest.test_partial_inputcCs|ddS)Nr:r rr r r test_partial_input_bz2F sz)Bz2PartialReadTest.test_partial_input_bz2N)rrrr r r r r r r r+ srcCsZzddl}ddl}Wnty(YdS0|dddkr@dS|dddkrVdSdS)NrFrootT)rr ImportErrorgetpwuidgetgrgid)rrr r r root_is_uid_gid_0J s rchownzmissing os.chowngeteuidzmissing os.geteuidc@seZdZeddZeeddZej dej dej ddd Z ej dej dej dd d Z e e d ej dej dej dd dZej dddZdS)NumericOwnerTestc Cstd}|ddtj|f|ddtjdf|ddtj|fg}ttdX}|D]B\}}}} } t|} || _|| _ d | _ d | _ | | _ | | | qJWdn1s0YtS) NscontentcbMLXWrr)rrrrrrrrrUrVrrWrr) filename_1 dirname_1 filename_2rBrXtarflrkrUrVtypcontentsrr r r _make_test_archive_ s  ,z#NumericOwnerTest._make_test_archiveccsnd|_d}d}|}|}tj||}t|||}t|}||||fVWdn1s`0YdS)Nrznumeric-owner-testfiler)rrIrJrKrr"rr) mock_geteuidZfnamerrrrZ tar_filenamerr r r _setup_testw s zNumericOwnerTest._setup_testzos.chownzos.chmodz os.geteuidc Cs||8\}}}}|j|tdd|j|tddWdn1sH0Ytjt|}tjt|} |jtj |ddtj | ddgdddS)NTZ numeric_ownerrrrrZ any_order) r$rGrHrIrJrKassert_has_callsr$r%call) rr# mock_chmod mock_chownrr_r f_filename_1 f_filename_2r r r test_extract_with_numeric_owner s.z0NumericOwnerTest.test_extract_with_numeric_ownerc Cs||&\}}}}|jtddWdn1s60Ytjt|}tjt|} tjt|} |jtj |ddtj | ddtj | ddgdd dS) NTr%rrrrrrr&) r$rrHrIrJrKr'r$r%r() rr#r)r*rrrrr,Z f_dirname_1r-r r r "test_extractall_with_numeric_owner s,z3NumericOwnerTest.test_extractall_with_numeric_ownerz uid=0,gid=0 must be named "root"cCsb||(\}}}}|j|tddWdn1s80Ytjt|}||dddS)NFr%r)r$rGrHrIrJrKZassert_called_with)rr#r)r*rrr+r,r r r "test_extract_without_numeric_owner s.z3NumericOwnerTest.test_extract_without_numeric_ownerc CsL||.\}}}}|t|j|tddWdn1s>0YdS)NFT)r$rrrGrH)rr#rrr+r r r test_keyword_only s z"NumericOwnerTest.test_keyword_onlyN)rrrrr"rr$r$r%r&r.r/r*rr0r1r r r r rV s,             rc Cstttttgattd}|}Wdn1sB0Yt t t fD]Z}|jrVt|jt |j||jd}| |WdqV1s0YqVdS)NrUr)rrrHrImakedirsrrrr;rr#r'rr)rBr cr2r r r setUpModule s   &  r4cCstjtrttdSr)rIrJrrHrrr r r r tearDownModule s r5__main__)srrIrZhashlibr contextlibrrandomrrr$Z unittest.mockrrJrZ test.supportrr"rr'r$r*r rJrZTESTFNrHrrrrKr!r%r)rrr?rur Z requires_gziprZ requires_bz2r#Z requires_lzmar'r,ZTestCaser6r{r}r~rrrrrrr.r/r0r4r5rArBrCrDrMrNrRrSrrrrrrrrrrrrrrr r4r9r;r>r*r+r?rDrQr`rsrwryr}rrrrrrrr-rrrrr4r5rrr r r r s                   |Pw=(a*;,9' R.Z   *TQO@;TB:! v