a 4êdg_”ã@sHddlmZddlmZmZddlZddlZddlmZm Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlmZddlZddlZe d¡ZddlmZmZmZdadd „ZGd d „d ejƒZGd d „d eƒZGdd„deƒZ Gdd„deƒZ!Gdd„deƒZ"Gdd„deƒZ#dd„Z$e%dkrDe$ƒdS)é)Úsupport)Ú bigmemtestÚ_4GN)ÚBytesIOÚDEFAULT_BUFFER_SIZE)ÚunlinkÚbz2)ÚBZ2FileÚ BZ2CompressorÚBZ2DecompressorcCs8tdurtt d¡ƒatr*tjdg|dSt |¡SdS)NZbunzip2)Úinput)Úhas_cmdline_bunzip2ÚboolÚshutilÚwhichÚ subprocessÚ check_outputrÚ decompress)Údata©rú)/usr/local/lib/python3.9/test/test_bz2.pyÚext_decompresss rc @sÐeZdZdZgd¢Zd e¡ZdZdZdZ dZ e dƒZ e   ej e  ej e¡¡d ¡¡D]TZeed ƒ*Ze e ee ƒe d …¡7Z Wd ƒn1s–0Ye dkrXq®qXeje d d Zdd„Zdd„Zd S)ÚBaseTestzBase for other testcases.)s root:x:0:0:root:/root:/bin/bash sbin:x:1:1:bin:/bin: sdaemon:x:2:2:daemon:/sbin: sadm:x:3:4:adm:/var/adm: slp:x:4:7:lp:/var/spool/lpd: s sync:x:5:0:sync:/sbin:/bin/sync s-shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown s!halt:x:7:0:halt:/sbin:/sbin/halt s"mail:x:8:12:mail:/var/spool/mail: s"news:x:9:13:news:/var/spool/news: s#uucp:x:10:14:uucp:/var/spool/uucp: s operator:x:11:0:operator:/root: s!games:x:12:100:games:/usr/games: s,gopher:x:13:30:gopher:/usr/lib/gopher-data: s(ftp:x:14:50:FTP User:/var/ftp:/bin/bash s#nobody:x:65534:65534:Nobody:/home: s.postfix:x:100:101:postfix:/var/spool/postfix: s-niemeyer:x:500:500::/home/niemeyer:/bin/bash s>postgres:x:101:102:PostgreSQL Server:/var/lib/pgsql:/bin/bash s6mysql:x:102:103:MySQL server:/var/lib/mysql:/bin/bash s#www:x:103:104::/var/www:/bin/false ósBZh91AY&SY.ÈN>_€@ÿðn?çÿà0™ªÀF†Œ#&ƒFš¦Ð¦“MQ§¨€4hh$¤i4ñ4SÒˆåÍ9gd6 é›ÕŠ™÷.KŽvû÷xw»ß¡’ñÝ|/";¢ºŸÕ±#A¶ö³oÉÅy\ëOç…š¼¶f8•2Õ×"%‰>V,÷¦z⟣ß"ÖE)I©^ÊórÐU’2ò6ì¶í‹ÃUÅ0¤ú^’¬DFŠ—Öþݸ½š£€ankR‹åØ3]©Æ‚fö¹"6l$¸j@Àаl1..ºkƒls¼ôÁ¾øE¸ ¨k„Ónú¬Q±%yªv´àzõé̹zn7.Gü]ÉáB@»!8`sBZh9rE8Psthis is not a valid bzip2 fileriz*.pyÚrbNé©Ú compresslevelcCst ¡\}|_t |¡dS©N)ÚtempfileÚmkstempÚfilenameÚosÚclose)ÚselfÚfdrrrÚsetUpPszBaseTest.setUpcCst|jƒdSr)rr!©r$rrrÚtearDownTszBaseTest.tearDown)Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú TEXT_LINESÚjoinÚTEXTÚDATAÚ EMPTY_DATAÚBAD_DATAZ test_sizeÚ bytearrayÚBIG_TEXTÚglobr"ÚpathÚescapeÚdirnameÚ__file__ZfnameÚopenZfhÚreadintoÚ memoryviewrÚcompressÚBIG_DATAr&r(rrrrr$s  & 8rc@sòeZdZdZd}dd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Zd:d;„Zdd?„Z!d@dA„Z"dBdC„Z#dDdE„Z$dFdG„Z%dHdI„Z&dJdK„Z'dLdM„Z(dNdO„Z)dPdQ„Z*dRdS„Z+dTdU„Z,dVdW„Z-dXdY„Z.dZd[„Z/d\d]„Z0d^d_„Z1d`da„Z2dbdc„Z3ddde„Z4dfdg„Z5dhdi„Z6djdk„Z7dldm„Z8dndo„Z9dpdq„Z:drds„Z;dtdu„Zdzd{„Z?d|S)~Ú BZ2FileTestzTest the BZ2File class.rrcCsJt|jdƒ*}| |j|¡| |¡Wdƒn1s<0YdS)NÚwb)r:r!Úwriter0)r$ÚstreamsÚsuffixÚfrrrÚcreateTempFile[szBZ2FileTest.createTempFilecCs„| ttd¡| tttjd¡| tttjd¡| tttjd¡|jtttjdd|jtttjdd| tttjdd ¡dS) Ngw¾Ÿ/Ý^@ÚzÚrxZrbtrré Úré)Ú assertRaisesÚ TypeErrorr Ú ValueErrorr"Údevnullr'rrrÚ testBadArgs`szBZ2FileTest.testBadArgscCsZ| ¡t|jƒ4}| t|jtƒ¡| | ¡|j¡Wdƒn1sL0YdSr© rEr r!rKrLÚreadÚfloatÚ assertEqualr/©r$Úbz2frrrÚtestReadks zBZ2FileTest.testReadcCsL|jd|jdt|jƒ}| t|j¡Wdƒn1s>0YdS)Nr©rBrC)rEr2r r!rKÚOSErrorrQrTrrrÚtestReadBadFileqs zBZ2FileTest.testReadBadFilecCsb|jddt|jƒ8}| t|jtƒ¡| | ¡|jd¡Wdƒn1sT0YdS©Né©rBrPrTrrrÚtestReadMultiStreamvs  zBZ2FileTest.testReadMultiStreamcCsˆtj}t|jƒt_zh|jddt|jƒ8}| t|j t ƒ¡|  |  ¡|j d¡Wdƒn1sh0YW|t_n|t_0dSrZ) Ú _compressionÚ BUFFER_SIZEÚlenr0rEr r!rKrLrQrRrSr/)r$Z buffer_sizerUrrrÚtestReadMonkeyMultiStream|s   6z%BZ2FileTest.testReadMonkeyMultiStreamcCsN|j|jdt|jƒ"}| | ¡|j¡Wdƒn1s@0YdS)N)rC©rEr2r r!rSrQr/rTrrrÚtestReadTrailingJunk‰s z BZ2FileTest.testReadTrailingJunkcCsT|jd|jdt|jƒ&}| | ¡|jd¡Wdƒn1sF0YdS)Nr[rWrbrTrrrÚtestReadMultiStreamTrailingJunkŽs z+BZ2FileTest.testReadMultiStreamTrailingJunkcCsZ| ¡t|jƒ4}| t|jtƒ¡| | d¡d¡Wdƒn1sL0YdS)Nrr)rEr r!rKrLrQrRrSrTrrrÚ testRead0“s zBZ2FileTest.testRead0cCsb| ¡t|jƒ<}d}| d¡}|s(q2||7}q| ||j¡Wdƒn1sT0YdS)NrrH©rEr r!rQrSr/©r$rUÚtextÚstrrrrÚtestReadChunk10™s   zBZ2FileTest.testReadChunk10cCsj|jddt|jƒ@}d}| d¡}|s,q6||7}q| ||jd¡Wdƒn1s\0YdS)Nr[r\rrHrfrgrrrÚtestReadChunk10MultiStream¤s    z&BZ2FileTest.testReadChunk10MultiStreamcCsR| ¡t|jƒ,}| | d¡|jdd…¡Wdƒn1sD0YdS)Néd)rEr r!rSrQr/rTrrrÚ testRead100¯s zBZ2FileTest.testRead100cCsr| ¡t|jƒL}| ¡}| t|ƒd¡| |j |¡¡|  |  ¡|j¡Wdƒn1sd0YdS©Nr) rEr r!ÚpeekÚassertNotEqualr`Ú assertTruer/Ú startswithrSrQ)r$rUÚpdatarrrÚtestPeek´s  zBZ2FileTest.testPeekcCs¸| ¡t|jƒ’}d}t|ƒ}| | |¡|¡| ||jd|…¡t|jƒ|}tt|jƒƒ}| | |¡|¡| |d|…|j| d…¡Wdƒn1sª0YdS)Né€)rEr r!r3rSr;r/r`)r$rUÚnÚbrrrÚ testReadInto¼s zBZ2FileTest.testReadIntocCsb| ¡t|jƒ<}| t|jd¡|jD]}| | ¡|¡q*Wdƒn1sT0YdSr©rEr r!rKrLÚreadliner-rS©r$rUÚlinerrrÚ testReadLineÈs   zBZ2FileTest.testReadLinecCsj|jddt|jƒ@}| t|jd¡|jdD]}| | ¡|¡q2Wdƒn1s\0YdSrZryr{rrrÚtestReadLineMultiStreamÏs   z#BZ2FileTest.testReadLineMultiStreamcCsX| ¡t|jƒ2}| t|jd¡| | ¡|j¡Wdƒn1sJ0YdSr©rEr r!rKrLÚ readlinesrSr-rTrrrÚ testReadLinesÖs zBZ2FileTest.testReadLinescCs`|jddt|jƒ6}| t|jd¡| | ¡|jd¡Wdƒn1sR0YdSrZrrTrrrÚtestReadLinesMultiStreamÜs  z$BZ2FileTest.testReadLinesMultiStreamcCsL| ¡t|jƒ&}| tt|ƒƒ|j¡Wdƒn1s>0YdSr©rEr r!rSÚlistÚiterr-rTrrrÚ testIteratorâs zBZ2FileTest.testIteratorcCsT|jddt|jƒ*}| tt|ƒƒ|jd¡Wdƒn1sF0YdSrZrƒrTrrrÚtestIteratorMultiStreamçs  z#BZ2FileTest.testIteratorMultiStreamcCs:| ¡t|jƒ}| ¡| tt|¡| t|j¡dSr)rEr r!r#rKrMÚnextr€rTrrrÚtestClosedIteratorDeadlockìs  z&BZ2FileTest.testClosedIteratorDeadlockcCsŒt|jdƒ*}| t|j¡| |j¡Wdƒn1s<0Yt|jdƒ&}| t|  ¡ƒ|j¡Wdƒn1s~0YdS)NÚwr© r r!rKrLrAr/r:rSrrQ©r$rUrDrrrÚ testWriteõs *zBZ2FileTest.testWritecCsªt|jdƒH}d}|j|d|dd…}|s2qF| |¡|d7}qWdƒn1sZ0Yt|jdƒ&}| t| ¡ƒ|j¡Wdƒn1sœ0YdS)NrŠrrHrr)r r!r/rAr:rSrrQ)r$rUrvrirDrrrÚtestWriteChunks10üs (zBZ2FileTest.testWriteChunks10cCsŒtj|jdd}t|jddd}| |j¡Wdƒn1sB0Yt|jdƒ }| | ¡|¡Wdƒn1s~0YdS)Nr[rrŠr) rr=r/r r!rAr:rSrQ)r$ZexpectedrUrDrrrÚ testWriteNonDefaultCompressLevels *z,BZ2FileTest.testWriteNonDefaultCompressLevelcCsžt|jdƒ*}| t|j¡| |j¡Wdƒn1s<0Y| t|jdg¡t|jdƒ&}| t |  ¡ƒ|j ¡Wdƒn1s0YdS)NrŠÚar) r r!rKrLÚ writelinesr-rMr:rSrrQr/rŒrrrÚtestWriteLiness *zBZ2FileTest.testWriteLinescCsˆt|jdƒ}| d¡Wdƒn1s,0Yt|jdƒ2}| t|jd¡| t|jdg¡Wdƒn1sz0YdS)NrŠsabcrIóa)r r!rArKrXr‘rTrrrÚtestWriteMethodsOnReadOnlyFiles (z*BZ2FileTest.testWriteMethodsOnReadOnlyFilecCsÖt|jdƒ*}| t|j¡| |j¡Wdƒn1s<0Yt|jdƒ*}| t|j¡| |j¡Wdƒn1s‚0Yt|jdƒ*}| t|  ¡ƒ|jd¡Wdƒn1sÈ0YdS)NrŠrrér‹rŒrrrÚ testAppend!s**zBZ2FileTest.testAppendcCsh| ¡t|jƒB}| t|j¡| d¡| | ¡|jdd…¡Wdƒn1sZ0YdS©Né–) rEr r!rKrLÚseekrSrQr/rTrrrÚtestSeekForward+s   zBZ2FileTest.testSeekForwardcCsv|jddt|jƒL}| t|j¡| t|jƒd¡| |  ¡|jdd…¡Wdƒn1sh0YdS)Nr•r\r˜) rEr r!rKrLr™r`r/rSrQrTrrrÚtestSeekForwardAcrossStreams2s   z(BZ2FileTest.testSeekForwardAcrossStreamscCsf| ¡t|jƒ@}| d¡| dd¡| | ¡|jdd…¡Wdƒn1sX0YdS©Niôéjÿÿÿri^)rEr r!rQr™rSr/rTrrrÚtestSeekBackwards9s    zBZ2FileTest.testSeekBackwardscCs|jddt|jƒf}t|jƒd}|dkrB|t| |¡ƒ8}q&| dd¡| | ¡|jdd…|j¡Wdƒn1s‚0YdS)Nr•r\rlrrriÎÿÿÿ)rEr r!r`r/rQr™rS)r$rUZreadtorrrÚtestSeekBackwardsAcrossStreams@s   z*BZ2FileTest.testSeekBackwardsAcrossStreamscCsf| ¡t|jƒ@}| dd¡| | ¡|jt|jƒdd…¡Wdƒn1sX0YdS)Nrr•r˜)rEr r!r™rSrQr/r`rTrrrÚtestSeekBackwardsFromEndIs  z$BZ2FileTest.testSeekBackwardsFromEndcCsd|jddt|jƒ:}| dd¡| | ¡|jddd…¡Wdƒn1sV0YdS)Nr•r\iüÿÿ)rEr r!r™rSrQr/rTrrrÚ%testSeekBackwardsFromEndAcrossStreamsOs   z1BZ2FileTest.testSeekBackwardsFromEndAcrossStreamscCsf| ¡t|jƒ@}| d¡| | ¡t|jƒ¡| | ¡d¡Wdƒn1sX0YdS©NéðIr© rEr r!r™rSÚtellr`r/rQrTrrrÚtestSeekPostEndUs   zBZ2FileTest.testSeekPostEndcCsn|jddt|jƒD}| d¡| | ¡t|jƒd¡| | ¡d¡Wdƒn1s`0YdS©Nr[r\r£rr¤rTrrrÚtestSeekPostEndMultiStream\s    z&BZ2FileTest.testSeekPostEndMultiStreamcCsp| ¡t|jƒJ}| d¡| d¡| | ¡t|jƒ¡| | ¡d¡Wdƒn1sb0YdSr¢r¤rTrrrÚtestSeekPostEndTwicecs    z BZ2FileTest.testSeekPostEndTwicecCsx|jddt|jƒN}| d¡| d¡| | ¡t|jƒd¡| | ¡d¡Wdƒn1sj0YdSr§r¤rTrrrÚtestSeekPostEndTwiceMultiStreamks     z+BZ2FileTest.testSeekPostEndTwiceMultiStreamcCsb| ¡t|jƒ<}| d¡| | ¡d¡| | ¡|j¡Wdƒn1sT0YdS)Nrr©rEr r!r™rSr¥rQr/rTrrrÚtestSeekPreStartss   zBZ2FileTest.testSeekPreStartcCsj|jddt|jƒ@}| d¡| | ¡d¡| | ¡|jd¡Wdƒn1s\0YdS)Nr•r\rrr«rTrrrÚtestSeekPreStartMultiStreamzs    z'BZ2FileTest.testSeekPreStartMultiStreamc Csz| ¡t|jdƒD}t|ƒ}z | | ¡| ¡¡W| ¡n | ¡0Wdƒn1s^0Y| t|j¡dS)Nr) rEr:r!r rSÚfilenor#rKrM)r$ZrawfrUrrrÚ testFilenos2zBZ2FileTest.testFilenocCsìtt|jƒƒ}z0| | ¡¡| ¡| | ¡¡W| ¡n | ¡0| t|j¡ttƒdƒ}z|  | ¡¡W| ¡n | ¡0| t|j¡t|jƒ}dd„|_t|ƒ}z|  | ¡¡W| ¡n | ¡0| t|j¡dS)NrŠcSsdS)NFrrrrrÚrz*BZ2FileTest.testSeekable..) r rr0rqÚseekablerQr#rKrMÚ assertFalse)r$rUÚsrcrrrÚ testSeekable‹s&   zBZ2FileTest.testSeekablecCsœtt|jƒƒ}z0| | ¡¡| ¡| | ¡¡W| ¡n | ¡0| t|j¡ttƒdƒ}z|  | ¡¡W| ¡n | ¡0| t|j¡dS©NrŠ) r rr0rqÚreadablerQr#rKrMr²rTrrrÚ testReadable¥s zBZ2FileTest.testReadablecCsœtt|jƒƒ}z0| | ¡¡| ¡| | ¡¡W| ¡n | ¡0| t|j¡ttƒdƒ}z|  | ¡¡W| ¡n | ¡0| t|j¡dSrµ) r rr0r²ÚwritablerQr#rKrMrqrTrrrÚ testWritable¶s zBZ2FileTest.testWritablecCs&| ¡tdƒD]}t|jƒ}~qdS)Ni')rEÚranger r!)r$ÚiÚorrrÚ testOpenDelÇs  zBZ2FileTest.testOpenDelcCs| ttd¡dS)Nz /non/existent)rKrXr r'rrrÚtestOpenNonexistentÍszBZ2FileTest.testOpenNonexistentcCsÂd}t|jdƒ}| |¡Wdƒn1s00Yt|jƒ}| ¡}Wdƒn1sb0Y| |dg¡t|jƒ}t| ¡ƒ}Wdƒn1s¦0Y| |dg¡dS)Ns,BZh91AY&SYÙb‰]€ !šh3M<]ÉáBCeŠ%tr@sTest)r:r!rAr r€rSr„)r$rrDrUÚlinesZxlinesrrrÚtestReadlinesNoNewlineÐs( & *z"BZ2FileTest.testReadlinesNoNewlinecCsîd}t|jdƒ}| d¡Wdƒn1s00Yt|jdƒ}| ¡z(|Wdƒn1sj0YWntyˆYn 0| d¡z8t|jdƒ}ddWdƒn1sÀ0YWntyÞYn 0| d¡dS)Nr@sxxxrz4__enter__ on a closed file didn't raise an exceptionrrz1/0 didn't raise an exception)r r!rAr#rMZfailÚZeroDivisionError©r$rDrrrÚtestContextProtocolÜs"( "  * zBZ2FileTest.testContextProtocolc sŠdd‰d}t|jdƒ^‰‡‡fdd„‰‡fdd„t|ƒDƒ}t |¡Wdƒn1s^0YWdƒn1s|0YdS) Nó1irHr@cstdƒD]}ˆ ˆ¡qdS©Nr[)rºrA)r»)rrDrrÚcompös z'BZ2FileTest.testThreading..compcsg|]}tjˆd‘qS))Útarget)Ú threadingÚThread)Ú.0r»)rÆrrÚ ùrz-BZ2FileTest.testThreading..)r r!rºrZ start_threads)r$ZnthreadsÚthreadsr)rÆrrDrÚ testThreadingñs zBZ2FileTest.testThreadingcCs>| ¡t|jdƒ}|d}t|jƒR}| |¡| t|ƒ|jd|d…¡| | ¡|j|d…¡Wdƒn1s€0Yt|jƒD}|  ¡| t|ƒ|jd¡| |  ¡|jd¡Wdƒn1sÞ0Yt|jƒ6}|  ¡|  t t|¡| |  ¡g¡Wdƒn1s00YdS)Nrr•r) rEr`r-r r!rQrSrˆr/rzr€rKÚ StopIteration)r$ZlinelenZhalflenrUrrrÚtestMixedIterationAndReadsýs  8 4 z&BZ2FileTest.testMixedIterationAndReadscCs¶d}d}t|jdƒ}| |¡Wdƒn1s40Yt|jdƒ}| |¡Wdƒn1sj0Yt|jƒ$}| | ¡||¡Wdƒn1s¨0YdS)Ns¸ foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoos¸ barbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarrŠr)r r!rArSrQ)r$Zdata1Zdata2rUrrrÚtestMultiStreamOrderings(( z#BZ2FileTest.testMultiStreamOrderingcCsä|j}z| d¡}Wnty0| d¡Yn0t|dƒ}| |j¡Wdƒn1s^0Yt|dƒ"}| | ¡|j¡Wdƒn1sš0Yt|dƒ"}| | ¡|j¡Wdƒn1sÖ0YdS)NÚasciiz%Temporary file name needs to be ASCIIr@r) r!ÚencodeÚUnicodeEncodeErrorZskipTestr rAr0rSrQ)r$Z str_filenameZbytes_filenamerDrrrÚtestOpenBytesFilenames  * 0 z!BZ2FileTest.testOpenBytesFilenamecCs‚t |j¡}t|dƒ}| |j¡Wdƒn1s80Yt|dƒ"}| | ¡|j¡Wdƒn1st0YdS)Nr@r)ÚpathlibÚPathr!r rAr0rSrQ)r$r!rDrrrÚtestOpenPathLikeFilename's   * z$BZ2FileTest.testOpenPathLikeFilenamecCshtjdtdƒdd}| t|ƒtj¡tt|ƒƒ}|  |  d¡d¡dt }|  |j j ¡|d¡dS)z-Decompressed data buffering should be limitedóg€„>Aé rrz)Excessive amount of data was decompressedN)rr=ÚintZ assertLessr`r^r_r rrSrQrÚassertLessEqualÚ_bufferÚrawr¥)r$ZbombÚdecompZ max_decomprrrÚtestDecompressLimited.s ÿz!BZ2FileTest.testDecompressLimitedc Cs†t|jƒh}t|ƒ4}| t|jtƒ¡| | ¡|j¡Wdƒn1sN0Y|  |j ¡Wdƒn1sx0YdSr) rr0r rKrLrQrRrSr/r²Úclosed©r$ÚbiorUrrrÚtestReadBytesIO<s   0zBZ2FileTest.testReadBytesIOc Cs’t|jƒt}t|ƒL}| ¡}| t|ƒd¡| |j |¡¡|  |  ¡|j¡Wdƒn1sf0YWdƒn1s„0YdSrn) rr0r rorpr`rqr/rrrSrQ)r$rârUrsrrrÚtestPeekBytesIOCs   zBZ2FileTest.testPeekBytesIOc Cstƒv}t|dƒ*}| t|j¡| |j¡Wdƒn1sB0Y| t| ¡ƒ|j¡|  |j ¡Wdƒn1s‚0YdSrµ) rr rKrLrAr/rSrÚgetvaluer²ràrárrrÚtestWriteBytesIOKs  *zBZ2FileTest.testWriteBytesIOc Csˆt|jƒj}t|ƒB}| t|j¡| d¡| | ¡|jdd…¡Wdƒn1s\0YWdƒn1sz0YdSr—) rr0r rKrLr™rSrQr/rárrrÚtestSeekForwardBytesIOSs    z"BZ2FileTest.testSeekForwardBytesIOc Cs†t|jƒh}t|ƒ@}| d¡| dd¡| | ¡|jdd…¡Wdƒn1sZ0YWdƒn1sx0YdSrœ)rr0r rQr™rSr/rárrrÚtestSeekBackwardsBytesIOZs     z$BZ2FileTest.testSeekBackwardsBytesIOc Csô|jdd…}tt|ƒƒ}| t|j¡Wdƒn1s>0Ytt|ƒƒ:}| | t|jƒ¡|j¡| t|jd¡Wdƒn1s”0Yt dƒD]H}tt|d|…ƒƒ }| t|jd¡Wdƒq¦1sä0Yq¦dS)Néöÿÿÿré) r0r rrKÚEOFErrorrQrSr`r/rº)r$Z truncatedrDr»rrrÚtest_read_truncatedas,. zBZ2FileTest.test_read_truncatedcCspt dgd¢¡}t|ƒ|j}ttƒdƒ2}| | |¡|¡| | ¡|¡Wdƒn1sb0YdS)NÚQ)rr•rJér[rŠ)Úarrayr`Úitemsizer rrSrAr¥)r$ÚqZLENGTHrDrrrÚtest_issue44439ns zBZ2FileTest.test_issue44439N)rr)@r)r*r+r,rErOrVrYr]rarcrdrerjrkrmrtrxr}r~rr‚r†r‡r‰rrŽrr’r”r–ršr›ržrŸr r¡r¦r¨r©rªr¬r­r¯r´r·r¹r½r¾rÀrÃrÍrÏrÐrÔr×rßrãrärærçrèrìròrrrrr?Xsz                r?c@sJeZdZdd„Zdd„Zdd„Zejee ddd d d „ƒƒZ d d „Z dS)ÚBZ2CompressorTestcCsBtƒ}| t|j¡| |j¡}|| ¡7}| t|ƒ|j¡dSr)r rKrLr=r/ÚflushrSr©r$Úbz2crrrrÚ testCompressxs   zBZ2CompressorTest.testCompresscCs.tƒ}| d¡}|| ¡7}| ||j¡dS©Nr)r r=rôrSr1rõrrrÚtestCompressEmptyStrings  z)BZ2CompressorTest.testCompressEmptyStringcCshtƒ}d}d}|j|d|dd…}|s.qF|| |¡7}|d7}q|| ¡7}| t|ƒ|j¡dS)NrrrHr)r r/r=rôrSr)r$rörvrrirrrÚtestCompressChunks10…s  z&BZ2CompressorTest.testCompressChunks10rlr•©ÚsizeZmemusecCsxtƒ}d|}z| |¡}|| ¡7}Wd}nd}0t |¡}z.| t|ƒ|¡| t| d¡ƒd¡Wd}nd}0dS)Nóxr)r r=rôrrrSr`Ústrip)r$rürörÚ compressedrrrÚtestCompress4G’s   z BZ2CompressorTest.testCompress4Gc CsPttjdƒD]<}| t¡t tƒ|¡Wdƒq1s@0YqdS©Nr)rºÚpickleÚHIGHEST_PROTOCOLrKrLÚdumpsr ©r$ÚprotorrrÚ testPickle¤s zBZ2CompressorTest.testPickleN) r)r*r+r÷rùrúrÚskip_if_pgo_taskrrrrrrrrróws  róc@seZdZdd„Zdd„Zdd„Zdd„Zd d „Zej e e d d d dd„ƒƒZ dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zejdd„ƒZdS)ÚBZ2DecompressorTestcCs| ttd¡dS)Né*)rKrLr r'rrrÚtest_Constructor«sz$BZ2DecompressorTest.test_ConstructorcCs2tƒ}| t|j¡| |j¡}| ||j¡dSr)r rKrLrr0rSr/©r$Úbz2drhrrrÚtestDecompress®s z"BZ2DecompressorTest.testDecompresscCsXtƒ}d}d}|j|d|dd…}|s.qF|| |¡7}|d7}q| ||j¡dS)NrrrHr)r r0rrSr/)r$r rhrvrirrrÚtestDecompressChunks10´s z*BZ2DecompressorTest.testDecompressChunks10cCs:tƒ}d}| |j|¡}| ||j¡| |j|¡dS)Nsthis is unused data)r rr0rSr/Ú unused_data)r$r rrhrrrÚtestDecompressUnusedDataÀs z,BZ2DecompressorTest.testDecompressUnusedDatacCs6tƒ}| |j¡}| t|jd¡| t|jd¡dS)Nsanythingr)r rr0rKrër rrrÚ testEOFErrorÇs z BZ2DecompressorTest.testEOFErrorrlgffffff @rûcCsjd}t |¡}zH|||d}t |¡}tƒ}| |¡}| ||k¡Wd}d}d}nd}d}d}0dS)Ni r)ÚrandomÚ randbytesrr=r rrq)r$rüÚ blocksizeÚblockrrÿr Z decompressedrrrÚtestDecompress4GÍs   þz$BZ2DecompressorTest.testDecompress4Gc CsPttjdƒD]<}| t¡t tƒ|¡Wdƒq1s@0YqdSr)rºrrrKrLrr rrrrrÞs zBZ2DecompressorTest.testPicklecCstƒ}d}g}t|jƒd}| |j|jd|…|d¡| |j¡| t|dƒ|¡| |jd|d¡| |j¡| t|dƒ|¡| |j|j|d…|d¡| t|dƒ|¡|j sð| |jd|d¡| t|dƒ|¡qÀd  |¡}| ||j ¡| |j d¡dS)Nrlé@©Ú max_lengthéÿÿÿÿr) r r`r>Úappendrr²Ú needs_inputrSrÛÚeofr.r4r)r$ÚbzdrÚoutZlen_rrrÚtestDecompressorChunksMaxsizeãs,ÿ  ÿ z1BZ2DecompressorTest.testDecompressorChunksMaxsizecCsŠtƒ}g}| |j|jdd…ddd¡| | dd¡¡| | |jdd…d¡¡| | |jdd…¡¡| d |¡|j¡dS)Nrlrrrr•éié©r rSrr0rr.r/©r$rr rrrÚtest_decompressor_inputbuf_1sÿÿz0BZ2DecompressorTest.test_decompressor_inputbuf_1cCs¤tƒ}g}| |j|jdd…ddd¡| | d¡¡| | |jdd…d¡¡| | |jdd…d¡¡| | |jdd…¡¡| d |¡|j¡dS)NéÈrrrir•é,r$r%rrrÚtest_decompressor_inputbuf_2sÿÿz0BZ2DecompressorTest.test_decompressor_inputbuf_2cCsttƒ}g}| | |jdd…d¡¡| | |jdd…d¡¡| | |jdd…¡¡| d |¡|j¡dS)Nr'r[r(r)r rrr0rSr.r/r%rrrÚtest_decompressor_inputbuf_3-s z0BZ2DecompressorTest.test_decompressor_inputbuf_3cCs6tƒ}| t|j|jd¡| t|j|jd¡dS)Né)r rKÚ Exceptionrr2)r$rrrrÚ test_failure=sz BZ2DecompressorTest.test_failurecCsHt td¡}tƒ}|ƒ}tdƒD] }| ¡q |j|ƒ|ddddS)NÚgettotalrefcountrlrrH)Zdelta)rZ get_attributeÚsysr rºÚ__init__ZassertAlmostEqual)r$r.rZ refs_beforer»rrrÚtest_refleaks_in___init__Cs    z-BZ2DecompressorTest.test_refleaks_in___init__N)r)r*r+r rrrrrrrrrrr!r&r)r*r-Z refcount_testr1rrrrr ªs   r c@s\eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dS)ÚCompressDecompressTestcCs"t |j¡}| t|ƒ|j¡dSr)rr=r/rSr)r$rrrrr÷Ns z#CompressDecompressTest.testCompresscCst d¡}| ||j¡dSrø)rr=rSr1©r$rhrrrrùRs z.CompressDecompressTest.testCompressEmptyStringcCst |j¡}| ||j¡dSr©rrr0rSr/r3rrrrVs z%CompressDecompressTest.testDecompresscCst d¡}| |d¡dSrø)rrrSr3rrrÚtestDecompressEmptyZs z*CompressDecompressTest.testDecompressEmptycCst |j¡}| |d¡dSrø)rrr1rSr3rrrÚtestDecompressToEmptyString^s z2CompressDecompressTest.testDecompressToEmptyStringcCs| ttj|jdd…¡dS)Nré)rKrMrrr0r'rrrÚtestDecompressIncompletebsz/CompressDecompressTest.testDecompressIncompletecCs| ttj|j¡dSr)rKrXrrr2r'rrrÚtestDecompressBadDataesz,CompressDecompressTest.testDecompressBadDatacCs&t |jd¡}| ||jd¡dSrÅr4r3rrrÚtestDecompressMultiStreamhsz0CompressDecompressTest.testDecompressMultiStreamcCs$t |j|j¡}| ||j¡dSr©rrr0r2rSr/r3rrrÚtestDecompressTrailingJunklsz1CompressDecompressTest.testDecompressTrailingJunkcCs,t |jd|j¡}| ||jd¡dSrÅr:r3rrrÚ%testDecompressMultiStreamTrailingJunkpsz| |j|¡}Wdƒn1sp0YWdƒq1sŽ0YqdS)N)rGr@rK)rr!r:rKÚFileExistsError)r$rDrDrrrÚ test_x_mode±s  zOpenTest.test_x_modecCsÚ| t|jƒd¡"}| | ¡|j¡Wdƒn1s:0Y| t|jƒd¡"}| | ¡|j¡Wdƒn1s~0Y|j d¡}| t|jƒd¡ }| | ¡|¡Wdƒn1sÌ0YdS)NrIrrÑrL)r:rr0rSrQr/rM)r$rDrhrrrÚ test_fileobjºs00 zOpenTest.test_fileobjcCst| t|j|jd¡| t|j|jd¡|jt|j|jddd|jt|j|jddd|jt|j|jddd dS) NZwbtZxbtrzutf-8©ÚencodingÚignore)ÚerrorsrI©Únewline)rKrMr:r!r'rrrÚtest_bad_paramsÃs ÿ ÿ ÿ ÿ ÿzOpenTest.test_bad_paramscCsæ|j d¡}| dtj¡}|j|jddd}| |¡Wdƒn1sL0Yt|jdƒ.}t|  ¡ƒ d¡}|  ||¡Wdƒn1s–0Y|j|jddd }|  |  ¡|¡Wdƒn1sØ0YdS)NrÑrIrJz utf-16-lerUrrL) r/rMrNr"rOr:r!rArrQrS)r$rhrPrDrErrrÚ test_encodingÐs (*zOpenTest.test_encodingcCs€| |jd¡}| d¡Wdƒn1s.0Y|j|jdddd }| | ¡d¡Wdƒn1sr0YdS)Nr@sfooÿbarrLrÑrW)rVrXZfoobar)r:r!rArSrQrÂrrrÚtest_encoding_error_handlerÜs (z$OpenTest.test_encoding_error_handlercCs|j d¡}|j|jddd}| |¡Wdƒn1s>0Y|j|jddd"}| | ¡|g¡Wdƒn1s‚0YdS)NrÑrJrIrYrLú )r/rMr:r!rArSr€)r$rhrDrrrÚ test_newlineäs  (zOpenTest.test_newlineN)r)r*r+r,r:rFrHrQrSrTr[r\r]r_rrrrr=us    r=cCst ttttt¡t ¡dSr)rZ run_unittestr?rór r2r=Ú reap_childrenrrrrÚ test_mainísûraÚ__main__)&ÚtestrZ test.supportrrrïZunittestÚiorrr"rr5rrÕrrrrÈrr^r/Ú import_modulerr r r r rZTestCaserr?rór r2r=rar)rrrrÚsD    4#3$(x