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ÌeZdZgd¢Zd e¡ZdZdZdZdZ e dƒZ e   e j e  e j e¡¡d¡¡D]TZeed ƒ*Ze e ee ƒe d …¡7Z Wd ƒn1s’0Ye dkrTqªqTeje d d Zd d„Zdd„Zd S)ÚBaseTest)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__Ú 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îeZdZd|dd„Zdd„Zdd„Zd d „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/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Zd=d>„Z d?d@„Z!dAdB„Z"dCdD„Z#dEdF„Z$dGdH„Z%dIdJ„Z&dKdL„Z'dMdN„Z(dOdP„Z)dQdR„Z*dSdT„Z+dUdV„Z,dWdX„Z-dYdZ„Z.d[d\„Z/d]d^„Z0d_d`„Z1dadb„Z2dcdd„Z3dedf„Z4dgdh„Z5didj„Z6dkdl„Z7dmdn„Z8dodp„Z9dqdr„Z:dsdt„Z;dudv„Zd{S)}Ú BZ2FileTestrrcCsJt|jdƒ*}| |j|¡| |¡Wdƒn1s<0YdS)NÚwb)r9r!Úwriter/)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© rDr r!rJrKÚreadÚfloatÚ assertEqualr.©r$Úbz2frrrÚtestReadks zBZ2FileTest.testReadcCsL|jd|jdt|jƒ}| t|j¡Wdƒn1s>0YdS)Nr©rArB)rDr1r r!rJÚOSErrorrPrSrrrÚtestReadBadFileqs zBZ2FileTest.testReadBadFilecCsb|jddt|jƒ8}| t|jtƒ¡| | ¡|jd¡Wdƒn1sT0YdS©Né©rArOrSrrrÚtestReadMultiStreamvs  zBZ2FileTest.testReadMultiStreamcCsˆtj}t|jƒt_zh|jddt|jƒ8}| t|j t ƒ¡|  |  ¡|j d¡Wdƒn1sh0YW|t_n|t_0dSrY) Ú _compressionÚ BUFFER_SIZEÚlenr/rDr r!rJrKrPrQrRr.)r$Z buffer_sizerTrrrÚtestReadMonkeyMultiStream|s   6z%BZ2FileTest.testReadMonkeyMultiStreamcCsN|j|jdt|jƒ"}| | ¡|j¡Wdƒn1s@0YdS)N)rB©rDr1r r!rRrPr.rSrrrÚtestReadTrailingJunk‰s z BZ2FileTest.testReadTrailingJunkcCsT|jd|jdt|jƒ&}| | ¡|jd¡Wdƒn1sF0YdS)NrZrVrarSrrrÚtestReadMultiStreamTrailingJunkŽs z+BZ2FileTest.testReadMultiStreamTrailingJunkcCsZ| ¡t|jƒ4}| t|jtƒ¡| | d¡d¡Wdƒn1sL0YdS)Nrr)rDr r!rJrKrPrQrRrSrrrÚ testRead0“s zBZ2FileTest.testRead0cCsb| ¡t|jƒ<}d}| d¡}|s(q2||7}q| ||j¡Wdƒn1sT0YdS)NrrG©rDr r!rPrRr.©r$rTÚtextÚstrrrrÚtestReadChunk10™s   zBZ2FileTest.testReadChunk10cCsj|jddt|jƒ@}d}| d¡}|s,q6||7}q| ||jd¡Wdƒn1s\0YdS)NrZr[rrGrerfrrrÚtestReadChunk10MultiStream¤s    z&BZ2FileTest.testReadChunk10MultiStreamcCsR| ¡t|jƒ,}| | d¡|jdd…¡Wdƒn1sD0YdS)Néd)rDr r!rRrPr.rSrrrÚ testRead100¯s zBZ2FileTest.testRead100cCsr| ¡t|jƒL}| ¡}| t|ƒd¡| |j |¡¡|  |  ¡|j¡Wdƒn1sd0YdS©Nr) rDr r!ÚpeekÚassertNotEqualr_Ú assertTruer.Ú startswithrRrP)r$rTÚpdatarrrÚtestPeek´s  zBZ2FileTest.testPeekcCs¸| ¡t|jƒ’}d}t|ƒ}| | |¡|¡| ||jd|…¡t|jƒ|}tt|jƒƒ}| | |¡|¡| |d|…|j| d…¡Wdƒn1sª0YdS)Né€)rDr r!r2rRr:r.r_)r$rTÚnÚbrrrÚ testReadInto¼s zBZ2FileTest.testReadIntocCsb| ¡t|jƒ<}| t|jd¡|jD]}| | ¡|¡q*Wdƒn1sT0YdSr©rDr r!rJrKÚreadliner,rR©r$rTÚlinerrrÚ testReadLineÈs   zBZ2FileTest.testReadLinecCsj|jddt|jƒ@}| t|jd¡|jdD]}| | ¡|¡q2Wdƒn1s\0YdSrYrxrzrrrÚtestReadLineMultiStreamÏs   z#BZ2FileTest.testReadLineMultiStreamcCsX| ¡t|jƒ2}| t|jd¡| | ¡|j¡Wdƒn1sJ0YdSr©rDr r!rJrKÚ readlinesrRr,rSrrrÚ testReadLinesÖs zBZ2FileTest.testReadLinescCs`|jddt|jƒ6}| t|jd¡| | ¡|jd¡Wdƒn1sR0YdSrYr~rSrrrÚtestReadLinesMultiStreamÜs  z$BZ2FileTest.testReadLinesMultiStreamcCsL| ¡t|jƒ&}| tt|ƒƒ|j¡Wdƒn1s>0YdSr©rDr r!rRÚlistÚiterr,rSrrrÚ testIteratorâs zBZ2FileTest.testIteratorcCsT|jddt|jƒ*}| tt|ƒƒ|jd¡Wdƒn1sF0YdSrYr‚rSrrrÚtestIteratorMultiStreamçs  z#BZ2FileTest.testIteratorMultiStreamcCs:| ¡t|jƒ}| ¡| tt|¡| t|j¡dSr)rDr r!r#rJrLÚnextrrSrrrÚtestClosedIteratorDeadlockìs  z&BZ2FileTest.testClosedIteratorDeadlockcCsŒt|jdƒ*}| t|j¡| |j¡Wdƒn1s<0Yt|jdƒ&}| t|  ¡ƒ|j¡Wdƒn1s~0YdS)NÚwr© r r!rJrKr@r.r9rRrrP©r$rTrCrrrÚ testWriteõs *zBZ2FileTest.testWritecCsªt|jdƒH}d}|j|d|dd…}|s2qF| |¡|d7}qWdƒn1sZ0Yt|jdƒ&}| t| ¡ƒ|j¡Wdƒn1sœ0YdS)Nr‰rrGrr)r r!r.r@r9rRrrP)r$rTrurhrCrrrÚtestWriteChunks10üs (zBZ2FileTest.testWriteChunks10cCsŒtj|jdd}t|jddd}| |j¡Wdƒn1sB0Yt|jdƒ }| | ¡|¡Wdƒn1s~0YdS)NrZrr‰r) rr<r.r r!r@r9rRrP)r$ZexpectedrTrCrrrÚ testWriteNonDefaultCompressLevels *z,BZ2FileTest.testWriteNonDefaultCompressLevelcCsžt|jdƒ*}| t|j¡| |j¡Wdƒn1s<0Y| t|jdg¡t|jdƒ&}| t |  ¡ƒ|j ¡Wdƒn1s0YdS)Nr‰Úar) r r!rJrKÚ writelinesr,rLr9rRrrPr.r‹rrrÚtestWriteLiness *zBZ2FileTest.testWriteLinescCsˆt|jdƒ}| d¡Wdƒn1s,0Yt|jdƒ2}| t|jd¡| t|jdg¡Wdƒn1sz0YdS)Nr‰sabcrHóa)r r!r@rJrWrrSrrrÚ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é–) rDr r!rJrKÚseekrRrPr.rSrrrÚtestSeekForward+s   zBZ2FileTest.testSeekForwardcCsv|jddt|jƒL}| t|j¡| t|jƒd¡| |  ¡|jdd…¡Wdƒn1sh0YdS)Nr”r[r—) rDr r!rJrKr˜r_r.rRrPrSrrrÚtestSeekForwardAcrossStreams2s   z(BZ2FileTest.testSeekForwardAcrossStreamscCsf| ¡t|jƒ@}| d¡| dd¡| | ¡|jdd…¡Wdƒn1sX0YdS©Niôéjÿÿÿri^)rDr r!rPr˜rRr.rSrrrÚtestSeekBackwards9s    zBZ2FileTest.testSeekBackwardscCs|jddt|jƒf}t|jƒd}|dkrB|t| |¡ƒ8}q&| dd¡| | ¡|jdd…|j¡Wdƒn1s‚0YdS)Nr”r[rkrrœriÎÿÿÿ)rDr r!r_r.rPr˜rR)r$rTZreadtorrrÚtestSeekBackwardsAcrossStreams@s   z*BZ2FileTest.testSeekBackwardsAcrossStreamscCsf| ¡t|jƒ@}| dd¡| | ¡|jt|jƒdd…¡Wdƒn1sX0YdS)Nrœr”r—)rDr r!r˜rRrPr.r_rSrrrÚtestSeekBackwardsFromEndIs  z$BZ2FileTest.testSeekBackwardsFromEndcCsd|jddt|jƒ:}| dd¡| | ¡|jddd…¡Wdƒn1sV0YdS)Nr”r[iüÿÿ)rDr r!r˜rRrPr.rSrrrÚ%testSeekBackwardsFromEndAcrossStreamsOs   z1BZ2FileTest.testSeekBackwardsFromEndAcrossStreamscCsf| ¡t|jƒ@}| d¡| | ¡t|jƒ¡| | ¡d¡Wdƒn1sX0YdS©NéðIr© rDr r!r˜rRÚtellr_r.rPrSrrrÚtestSeekPostEndUs   zBZ2FileTest.testSeekPostEndcCsn|jddt|jƒD}| d¡| | ¡t|jƒd¡| | ¡d¡Wdƒn1s`0YdS©NrZr[r¢rr£rSrrrÚtestSeekPostEndMultiStream\s    z&BZ2FileTest.testSeekPostEndMultiStreamcCsp| ¡t|jƒJ}| d¡| d¡| | ¡t|jƒ¡| | ¡d¡Wdƒn1sb0YdSr¡r£rSrrrÚtestSeekPostEndTwicecs    z BZ2FileTest.testSeekPostEndTwicecCsx|jddt|jƒN}| d¡| d¡| | ¡t|jƒd¡| | ¡d¡Wdƒn1sj0YdSr¦r£rSrrrÚtestSeekPostEndTwiceMultiStreamks     z+BZ2FileTest.testSeekPostEndTwiceMultiStreamcCsb| ¡t|jƒ<}| d¡| | ¡d¡| | ¡|j¡Wdƒn1sT0YdS)Nrœr©rDr r!r˜rRr¤rPr.rSrrrÚtestSeekPreStartss   zBZ2FileTest.testSeekPreStartcCsj|jddt|jƒ@}| d¡| | ¡d¡| | ¡|jd¡Wdƒn1s\0YdS)Nr”r[rœrrªrSrrrÚtestSeekPreStartMultiStreamzs    z'BZ2FileTest.testSeekPreStartMultiStreamc Csz| ¡t|jdƒD}t|ƒ}z | | ¡| ¡¡W| ¡n | ¡0Wdƒn1s^0Y| t|j¡dS)Nr) rDr9r!r rRÚfilenor#rJrL)r$ZrawfrTrrrÚ 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 rr/rpÚseekablerPr#rJrLÚ assertFalse)r$rTÚsrcrrrÚ testSeekable‹s&   zBZ2FileTest.testSeekablecCsœtt|jƒƒ}z0| | ¡¡| ¡| | ¡¡W| ¡n | ¡0| t|j¡ttƒdƒ}z|  | ¡¡W| ¡n | ¡0| t|j¡dS©Nr‰) r rr/rpÚreadablerPr#rJrLr±rSrrrÚ testReadable¥s zBZ2FileTest.testReadablecCsœtt|jƒƒ}z0| | ¡¡| ¡| | ¡¡W| ¡n | ¡0| t|j¡ttƒdƒ}z|  | ¡¡W| ¡n | ¡0| t|j¡dSr´) r rr/r±ÚwritablerPr#rJrLrprSrrrÚ testWritable¶s zBZ2FileTest.testWritablecCs&| ¡tdƒD]}t|jƒ}~qdS)Ni')rDÚranger r!)r$ÚiÚorrrÚ testOpenDelÇs  zBZ2FileTest.testOpenDelcCs| ttd¡dS)Nz /non/existent)rJrWr 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)r9r!r@r rrRrƒ)r$rrCrTÚ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!r@r#rLZfailÚZeroDivisionError©r$rCrrrÚtestContextProtocolÜs"( "  * zBZ2FileTest.testContextProtocolc sŠdd‰d}t|jdƒ^‰‡‡fdd„‰‡fdd„t|ƒDƒ}t |¡Wdƒn1s^0YWdƒn1s|0YdS) Nó1irGr?cstdƒD]}ˆ ˆ¡qdS©NrZ)r¹r@)rº)rrCrrÚ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ÅrrCrÚ 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) rDr_r,r r!rPrRr‡r.ryrrJÚ StopIteration)r$ZlinelenZhalflenrTrrrÚ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!r@rRrP)r$Zdata1Zdata2rTrrrÚ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 r@r/rRrP)r$Z str_filenameZbytes_filenamerCrrrÚtestOpenBytesFilenames  * 0 z!BZ2FileTest.testOpenBytesFilenamecCs‚t |j¡}t|dƒ}| |j¡Wdƒn1s80Yt|dƒ"}| | ¡|j¡Wdƒn1st0YdS)Nr?r)ÚpathlibÚPathr!r r@r/rRrP)r$r!rCrrrÚtestOpenPathLikeFilename's   * z$BZ2FileTest.testOpenPathLikeFilenamecCshtjdtdƒdd}| t|ƒtj¡tt|ƒƒ}|  |  d¡d¡dt }|  |j j ¡|d¡dS)Nóg€„>Aé rrz)Excessive amount of data was decompressed)rr<ÚintZ assertLessr_r]r^r rrRrPrÚ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) rr/r rJrKrPrQrRr.r±Úclosed©r$ÚbiorTrrrÚtestReadBytesIO<s   0zBZ2FileTest.testReadBytesIOc Cs’t|jƒt}t|ƒL}| ¡}| t|ƒd¡| |j |¡¡|  |  ¡|j¡Wdƒn1sf0YWdƒn1s„0YdSrm) rr/r rnror_rpr.rqrRrP)r$rárTrrrrrÚtestPeekBytesIOCs   zBZ2FileTest.testPeekBytesIOc Cstƒv}t|dƒ*}| t|j¡| |j¡Wdƒn1sB0Y| t| ¡ƒ|j¡|  |j ¡Wdƒn1s‚0YdSr´) rr rJrKr@r.rRrÚgetvaluer±rßràrrrÚtestWriteBytesIOKs  *zBZ2FileTest.testWriteBytesIOc Csˆt|jƒj}t|ƒB}| t|j¡| d¡| | ¡|jdd…¡Wdƒn1s\0YWdƒn1sz0YdSr–) rr/r rJrKr˜rRrPr.ràrrrÚtestSeekForwardBytesIOSs    z"BZ2FileTest.testSeekForwardBytesIOc Cs†t|jƒh}t|ƒ@}| d¡| dd¡| | ¡|jdd…¡Wdƒn1sZ0YWdƒn1sx0YdSr›)rr/r rPr˜rRr.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é) r/r rrJÚEOFErrorrPrRr_r.r¹)r$Z truncatedrCrºrrrÚtest_read_truncatedas,. zBZ2FileTest.test_read_truncatedcCspt dgd¢¡}t|ƒ|j}ttƒdƒ2}| | |¡|¡| | ¡|¡Wdƒn1sb0YdS)NÚQ)rr”rIérZr‰)Úarrayr_Úitemsizer rrRr@r¤)r$ÚqZLENGTHrCrrrÚtest_issue44439ns zBZ2FileTest.test_issue44439N)rr)?r)r*r+rDrNrUrXr\r`rbrcrdrirjrlrsrwr|r}r€rr…r†rˆrŒrrŽr‘r“r•r™rš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ñrrrrr>Xsx                r>c@sJeZdZdd„Zdd„Zdd„Zejee ddd d d „ƒƒZ d d „Z dS)ÚBZ2CompressorTestcCsBtƒ}| t|j¡| |j¡}|| ¡7}| t|ƒ|j¡dSr)r rJrKr<r.ÚflushrRr©r$Úbz2crrrrÚ testCompressxs   zBZ2CompressorTest.testCompresscCs.tƒ}| d¡}|| ¡7}| ||j¡dS©Nr)r r<rórRr0rôrrrÚtestCompressEmptyStrings  z)BZ2CompressorTest.testCompressEmptyStringcCshtƒ}d}d}|j|d|dd…}|s.qF|| |¡7}|d7}q|| ¡7}| t|ƒ|j¡dS)NrrrGr)r r.r<rórRr)r$rõrurrhrrrÚtestCompressChunks10…s  z&BZ2CompressorTest.testCompressChunks10rkr”©ÚsizeZmemusecCsxtƒ}d|}z| |¡}|| ¡7}Wd}nd}0t |¡}z.| t|ƒ|¡| t| d¡ƒd¡Wd}nd}0dS)Nóxr)r r<rórrrRr_Ústrip)r$rûrõrÚ compressedrrrÚtestCompress4G’s   z BZ2CompressorTest.testCompress4Gc CsPttjdƒD]<}| t¡t tƒ|¡Wdƒq1s@0YqdS©Nr)r¹ÚpickleÚHIGHEST_PROTOCOLrJrKÚdumpsr ©r$ÚprotorrrÚ testPickle¤s zBZ2CompressorTest.testPickleN) r)r*r+rörørùrÚskip_if_pgo_taskrrrÿrrrrrrò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é*)rJrKr r'rrrÚtest_Constructor«sz$BZ2DecompressorTest.test_ConstructorcCs2tƒ}| t|j¡| |j¡}| ||j¡dSr)r rJrKrr/rRr.©r$Úbz2drgrrrÚtestDecompress®s z"BZ2DecompressorTest.testDecompresscCsXtƒ}d}d}|j|d|dd…}|s.qF|| |¡7}|d7}q| ||j¡dS)NrrrGr)r r/rrRr.)r$r rgrurhrrrÚtestDecompressChunks10´s z*BZ2DecompressorTest.testDecompressChunks10cCs:tƒ}d}| |j|¡}| ||j¡| |j|¡dS)Nsthis is unused data)r rr/rRr.Ú unused_data)r$r rrgrrrÚtestDecompressUnusedDataÀs z,BZ2DecompressorTest.testDecompressUnusedDatacCs6tƒ}| |j¡}| t|jd¡| t|jd¡dS)Nsanythingr)r rr/rJrêr rrrÚ testEOFErrorÇs z BZ2DecompressorTest.testEOFErrorrkgffffff @rúcCsjd}t |¡}zH|||d}t |¡}tƒ}| |¡}| ||k¡Wd}d}d}nd}d}d}0dS)Ni r)ÚrandomÚ randbytesrr<r rrp)r$rûÚ blocksizeÚblockrrþr Z decompressedrrrÚtestDecompress4GÍs   þz$BZ2DecompressorTest.testDecompress4Gc CsPttjdƒD]<}| t¡t tƒ|¡Wdƒq1s@0YqdSr)r¹rrrJrKrr 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)Nrké@©Ú max_lengthéÿÿÿÿr) r r_r=Úappendrr±Ú needs_inputrRrÚÚeofr-r3r)r$ÚbzdrÚoutZlen_rrrÚtestDecompressorChunksMaxsizeãs,ÿ  ÿ z1BZ2DecompressorTest.testDecompressorChunksMaxsizecCsŠtƒ}g}| |j|jdd…ddd¡| | dd¡¡| | |jdd…d¡¡| | |jdd…¡¡| d |¡|j¡dS)Nrkrrrr”éié©r rRrr/rr-r.©r$rrrrrÚ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&rZr'r)r rrr/rRr-r.r$rrrÚtest_decompressor_inputbuf_3-s z0BZ2DecompressorTest.test_decompressor_inputbuf_3cCs6tƒ}| t|j|jd¡| t|j|jd¡dS)Né)r rJÚ Exceptionrr1)r$rrrrÚ test_failure=sz BZ2DecompressorTest.test_failurecCsHt td¡}tƒ}|ƒ}tdƒD] }| ¡q |j|ƒ|ddddS)NÚgettotalrefcountrkrrG)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 r rrrrrrrrrr r%r(r)r,Z refcount_testr0rrrrrªs   rc@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.rRr)r$rrrrröNs z#CompressDecompressTest.testCompresscCst d¡}| ||j¡dSr÷)rr<rRr0©r$rgrrrrøRs z.CompressDecompressTest.testCompressEmptyStringcCst |j¡}| ||j¡dSr©rrr/rRr.r2rrrr Vs z%CompressDecompressTest.testDecompresscCst d¡}| |d¡dSr÷)rrrRr2rrrÚtestDecompressEmptyZs z*CompressDecompressTest.testDecompressEmptycCst |j¡}| |d¡dSr÷)rrr0rRr2rrrÚtestDecompressToEmptyString^s z2CompressDecompressTest.testDecompressToEmptyStringcCs| ttj|jdd…¡dS)Nrè)rJrLrrr/r'rrrÚtestDecompressIncompletebsz/CompressDecompressTest.testDecompressIncompletecCs| ttj|j¡dSr)rJrWrrr1r'rrrÚtestDecompressBadDataesz,CompressDecompressTest.testDecompressBadDatacCs&t |jd¡}| ||jd¡dSrÄr3r2rrrÚtestDecompressMultiStreamhsz0CompressDecompressTest.testDecompressMultiStreamcCs$t |j|j¡}| ||j¡dSr©rrr/r1rRr.r2rrrÚtestDecompressTrailingJunklsz1CompressDecompressTest.testDecompressTrailingJunkcCs,t |jd|j¡}| ||jd¡dSrÄr9r2rrrÚ%testDecompressMultiStreamTrailingJunkpsz| |j|¡}Wdƒn1sp0YWdƒq1sŽ0YqdS)N)rFr?rJ)rr!r9rJÚFileExistsError)r$rCrCrrrÚ 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)NrHrrÐrK)r9rr/rRrPr.rL)r$rCrgrrrÚ 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)ÚerrorsrH©Únewline)rJrLr9r!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ÐrHrIz utf-16-lerTrrK) r.rLrMr"rNr9r!r@rrPrR)r$rgrOrCrDrrrÚ test_encodingÐs (*zOpenTest.test_encodingcCs€| |jd¡}| d¡Wdƒn1s.0Y|j|jdddd }| | ¡d¡Wdƒn1sr0YdS)Nr?sfooÿbarrKrÐrV)rUrWZfoobar)r9r!r@rRrPrÁ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ÐrIrHrXrKú )r.rLr9r!r@rRr)r$rgrCrrrÚ test_newlineäs  (zOpenTest.test_newlineN) r)r*r+r9rErGrPrRrSrZr[r\r^rrrrr<us    r<cCst ttttt¡t ¡dSr)rZ run_unittestr>ròrr1r<Ú reap_childrenrrrrÚ test_mainísûr`Ú__main__)&ÚtestrZ test.supportrrrîZunittestÚiorrr"rr4rrÔrrrrÇrr]r.Ú import_modulerr r r r rZTestCaserr>ròrr1r<r`r)rrrrÚsD    4#3$(x