
    /hh                        S SK Jr  S SKJrJr  S SKrS SKrS SKrS SKJrJ	r	  S SK
r
S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKJr  S SKJr  S SKJrJr  S SKrS SKr\R2                  " S5      rS S	KJrJrJr  SqS
 r " S S\R@                  5      r! " S S\!5      r" " S S\!5      r# " S S\!5      r$ " S S\!5      r% " S S\!5      r&S r'\(S:X  a  \RR                  " 5         gg)    )support)
bigmemtest_4GN)BytesIODEFAULT_BUFFER_SIZE)import_helper)threading_helper)unlinkFakePathbz2)BZ2FileBZ2CompressorBZ2Decompressorc                     [         c  [        [        R                  " S5      5      q [         (       a  [        R
                  " S/U S9$ [        R                  U 5      $ )Nbunzip2)input)has_cmdline_bunzip2boolshutilwhich
subprocesscheck_outputr   
decompress)datas    6/opt/python-3.13.8/usr/lib/python3.13/test/test_bz2.pyext_decompressr      sF    ""6<<	#:;&&	{$??~~d##    c            	          \ rS rSrSr/ SQrSR                  \5      rSrSr	Sr
Sr\" S	5      r\R                  " \R                   R                  \R"                  " \R                   R%                  \5      5      S
5      5       H:  r\" \S5       r\\R/                  \" \5      \S 5      -  rSSS5        \S	:  d  M:    O   \R5                  \SS9rS rS rSrg! , (       d  f       N3= f)BaseTest&   zBase for other testcases.)s    root:x:0:0:root:/root:/bin/bash
s   bin:x:1:1:bin:/bin:
s   daemon:x:2:2:daemon:/sbin:
s   adm:x:3:4:adm:/var/adm:
s   lp: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
s6   mysql:x:102:103:MySQL server:/var/lib/mysql:/bin/bash
s#   www:x:103:104::/var/www:/bin/false
r   s  BZh91AY&SY.N >_ @n ?0 F#&FЦMQ4hh$i44S<QHՇI/E pu]ɻDL
Q	1ߠ2O97dIJL#/#CWMXa<etL˄.`n}lh	E,ZVH>9gd6
Պ.Kvxwߡ|/";ձ#Aoy\O煚f82"%>V,z⟣"E)I^rU26U0^DFݸankR3]f"6l$j@l1..klsEknQ%yvz̹zn7.G]B@!8`s   BZh9rE8P    s   this is not a valid bzip2 filer   i   z*.pyrbN   compresslevelc                 h    [         R                  " 5       u  ol        [        R                  " U5        g N)tempfilemkstempfilenameosclose)selffds     r   setUpBaseTest.setUpR   s     $,,.M
r   c                 .    [        U R                  5        g r&   )r
   r)   r,   s    r   tearDownBaseTest.tearDownV   s    t}}r   )r)   )__name__
__module____qualname____firstlineno____doc__
TEXT_LINESjoinTEXTDATA
EMPTY_DATABAD_DATA	test_size	bytearrayBIG_TEXTglobr*   pathescapedirname__file__fnameopenfhreadinto
memoryviewr   compressBIG_DATAr.   r2   __static_attributes__ r   r   r   r   &   s    
J. 88JD ^D4J0H I"H277<<BGGOOH4M(NPVWX%"Z%9)*%EFFI x	 Y
 ||HA|6H s   C
C(	r   c                      \ rS rSrSrSES jrS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1 r3\4Rj                  " 5       S2 5       r6S3 r7S4 r8S5 r9S6 r:S7 r;S8 r<S9 r=S: r>S; r?S< r@S= rAS> rBS? rCS@ rDSA rESB rFSCrGgD)FBZ2FileTestZ   zTest the BZ2File class.c                     [        U R                  S5       nUR                  U R                  U-  5        UR                  U5        S S S 5        g ! , (       d  f       g = f)Nwb)rH   r)   writer<   )r,   streamssuffixfs       r   createTempFileBZ2FileTest.createTempFile]   s>    $--&!GGDII'(GGFO '&&s   0A
Ac                 ,   U R                  [        [        S5        U R                  [        [        [        R
                  S5        U R                  [        [        [        R
                  S5        U R                  [        [        [        R
                  S5        U R                  [        [        [        R
                  SS9  U R                  [        [        [        R
                  SS9  U R                  [        [        [        R
                  SS	5        g )
Ngw/^@zrxrbtr   r#   
   r   )assertRaises	TypeErrorr   
ValueErrorr*   devnullr1   s    r   testBadArgsBZ2FileTest.testBadArgsb   s    )Wg6*grzz3?*grzz4@*grzz5A*grzzK*grzzL 	)Wbjj#qAr   c                 (   U R                  5         [        U R                  5       nU R                  [        UR
                  [        5       5        U R                  UR                  5       U R                  5        S S S 5        g ! , (       d  f       g = fr&   	rY   r   r)   rb   rc   readfloatassertEqualr;   r,   bz2fs     r   testReadBZ2FileTest.testReadm   sZ    T]]#tiEG<TYY[$))4 $##s   AB
Bc                     U R                  SU R                  S9  [        U R                  5       nU R	                  [
        UR                  5        S S S 5        g ! , (       d  f       g = f)Nr   rV   rW   )rY   r>   r   r)   rb   OSErrorrj   rm   s     r   testReadBadFileBZ2FileTest.testReadBadFiles   sG    Admm<T]]#tgtyy1 $##s   !A
A(c                 ,   U R                  SS9  [        U R                  5       nU R                  [        UR
                  [        5       5        U R                  UR                  5       U R                  S-  5        S S S 5        g ! , (       d  f       g = fN   rV   ri   rm   s     r   testReadMultiStreamBZ2FileTest.testReadMultiStreamx   sc    A&T]]#tiEG<TYY[$))a-8 $##s   AB
Bc                    [         R                  n[        U R                  5      [         l         U R	                  SS9  [        U R                  5       nU R                  [        UR                  [        5       5        U R                  UR                  5       U R                  S-  5        S S S 5        U[         l        g ! , (       d  f       N= f! U[         l        f = frw   )_compressionBUFFER_SIZElenr<   rY   r   r)   rb   rc   rj   rk   rl   r;   )r,   buffer_sizern   s      r   testReadMonkeyMultiStream%BZ2FileTest.testReadMonkeyMultiStream~   s     #..#&tyy> 	3*'4!!)TYY@  dii!m< ( (3L$	 (' (3L$s$   $C AB?+C ?
C	C Cc                     U R                  U R                  S9  [        U R                  5       nU R	                  UR                  5       U R                  5        S S S 5        g ! , (       d  f       g = f)N)rW   rY   r>   r   r)   rl   rj   r;   rm   s     r   testReadTrailingJunk BZ2FileTest.testReadTrailingJunk   sK    4==1T]]#tTYY[$))4 $##s   +A##
A1c                     U R                  SU R                  S9  [        U R                  5       nU R	                  UR                  5       U R                  S-  5        S S S 5        g ! , (       d  f       g = f)Nrx   rr   r   rm   s     r   testReadMultiStreamTrailingJunk+BZ2FileTest.testReadMultiStreamTrailingJunk   sQ    Admm<T]]#tTYY[$))a-8 $##s   .A''
A5c                    U R                  5         [        U R                  5       nU R                  [        UR
                  [        5       5        U R                  UR                  S5      S5        S S S 5        g ! , (       d  f       g = f)Nr   r   )rY   r   r)   rb   rc   rj   rk   rl   rm   s     r   	testRead0BZ2FileTest.testRead0   sX    T]]#tiEG<TYYq\3/ $##s   AA::
Bc                     U R                  5         [        U R                  5       nSn UR                  S5      nU(       d  OX#-  nM  U R	                  X R
                  5        S S S 5        g ! , (       d  f       g = f)Nr   r_   rY   r   r)   rj   rl   r;   r,   rn   textstrs       r   testReadChunk10BZ2FileTest.testReadChunk10   sc    T]]#tDiim	 
 T99- $##s   >A--
A;c                     U R                  SS9  [        U R                  5       nSn UR                  S5      nU(       d  OX#-  nM  U R	                  X R
                  S-  5        S S S 5        g ! , (       d  f       g = f)Nrx   ry   r   r_   r   r   s       r   testReadChunk10MultiStream&BZ2FileTest.testReadChunk10MultiStream   sl    A&T]]#tDiim	 
 T99q=1 $##s   AA//
A=c                     U R                  5         [        U R                  5       nU R                  UR	                  S5      U R
                  S S 5        S S S 5        g ! , (       d  f       g = f)Nd   )rY   r   r)   rl   rj   r;   rm   s     r   testRead100BZ2FileTest.testRead100   sJ    T]]#tTYYs^TYYt_= $##   /A
A,c                    U R                  5         [        U R                  5       nUR                  5       nU R	                  [        U5      S5        U R                  U R                  R                  U5      5        U R                  UR                  5       U R                  5        S S S 5        g ! , (       d  f       g = fNr   )rY   r   r)   peekassertNotEqualr   
assertTruer;   
startswithrl   rj   )r,   rn   pdatas      r   testPeekBZ2FileTest.testPeek   s|    T]]#tIIKEE
A.OODII0078TYY[$))4	 $##s   B B//
B=c                    U R                  5         [        U R                  5       nSn[        U5      nU R	                  UR                  U5      U5        U R	                  X0R                  S U 5        [        U R                  5      U-
  n[        [        U R                  5      5      nU R	                  UR                  U5      U5        U R	                  US U U R                  U* S  5        S S S 5        g ! , (       d  f       g = f)N   )rY   r   r)   r@   rl   rJ   r;   r   )r,   rn   nbs       r   testReadIntoBZ2FileTest.testReadInto   s    T]]#tA!AT]]1-q1Q		"1.DII"A#dii.)AT]]1-q1QrUDIIqbcN3 $##s   CC66
Dc                 *   U R                  5         [        U R                  5       nU R                  [        UR
                  S 5        U R                   H#  nU R                  UR                  5       U5        M%     S S S 5        g ! , (       d  f       g = fr&   rY   r   r)   rb   rc   readliner9   rl   r,   rn   lines      r   testReadLineBZ2FileTest.testReadLine   sb    T]]#ti=  $7 ( $##s   AB
Bc                 .   U R                  SS9  [        U R                  5       nU R                  [        UR
                  S 5        U R                  S-   H#  nU R                  UR                  5       U5        M%     S S S 5        g ! , (       d  f       g = frw   r   r   s      r   testReadLineMultiStream#BZ2FileTest.testReadLineMultiStream   sl    A&T]]#ti=!+  $7 , $##s   AB
Bc                    U R                  5         [        U R                  5       nU R                  [        UR
                  S 5        U R                  UR                  5       U R                  5        S S S 5        g ! , (       d  f       g = fr&   rY   r   r)   rb   rc   	readlinesrl   r9   rm   s     r   testReadLinesBZ2FileTest.testReadLines   sY    T]]#ti>T^^-t? $##s   AA;;
B	c                    U R                  SS9  [        U R                  5       nU R                  [        UR
                  S 5        U R                  UR                  5       U R                  S-  5        S S S 5        g ! , (       d  f       g = frw   r   rm   s     r   testReadLinesMultiStream$BZ2FileTest.testReadLinesMultiStream   sc    A&T]]#ti>T^^-t/BC $##s   AA==
Bc                     U R                  5         [        U R                  5       nU R                  [	        [        U5      5      U R                  5        S S S 5        g ! , (       d  f       g = fr&   rY   r   r)   rl   listiterr9   rm   s     r   testIteratorBZ2FileTest.testIterator   sE    T]]#tT$t*-t? $##r   c                     U R                  SS9  [        U R                  5       nU R                  [	        [        U5      5      U R                  S-  5        S S S 5        g ! , (       d  f       g = frw   r   rm   s     r   testIteratorMultiStream#BZ2FileTest.testIteratorMultiStream   sO    A&T]]#tT$t*-t/BC $##s   2A  
A.c                     U R                  5         [        U R                  5      nUR                  5         U R	                  [
        [        U5        U R	                  [
        UR                  5        g r&   )rY   r   r)   r+   rb   rd   nextr   rm   s     r   testClosedIteratorDeadlock&BZ2FileTest.testClosedIteratorDeadlock   sK    t}}%

*dD1*dnn5r   c                    [        U R                  S5       nU R                  [        UR                  5        UR	                  U R
                  5        S S S 5        [        U R                  S5       nU R                  [        UR                  5       5      U R
                  5        S S S 5        g ! , (       d  f       Na= f! , (       d  f       g = f)Nwr!   
r   r)   rb   rc   rU   r;   rH   rl   r   rj   r,   rn   rX   s      r   	testWriteBZ2FileTest.testWrite   s    T]]C(Di4JJtyy! ) $--&!^AFFH5tyyA '& )( '&   <B.14B?.
B<?
Cc                    [        U R                  S5       nSn U R                  US-  US-   S-   nU(       d  OUR                  U5        US-  nM8  S S S 5        [	        U R                  S5       nU R                  [        UR                  5       5      U R                  5        S S S 5        g ! , (       d  f       Na= f! , (       d  f       g = f)Nr   r   r_   r"   r!   )r   r)   r;   rU   rH   rl   r   rj   )r,   rn   r   r   rX   s        r   testWriteChunks10BZ2FileTest.testWriteChunks10   s    T]]C(DAii"ac2X.

3Q  ) $--&!^AFFH5tyyA '& )( '&r   c                 t   [         R                  U R                  SS9n[        U R                  SSS9 nUR                  U R                  5        S S S 5        [        U R                  S5       nU R                  UR                  5       U5        S S S 5        g ! , (       d  f       NN= f! , (       d  f       g = f)Nrx   r#   r   r!   )	r   rL   r;   r   r)   rU   rH   rl   rj   )r,   expectedrn   rX   s       r    testWriteNonDefaultCompressLevel,BZ2FileTest.testWriteNonDefaultCompressLevel
  s}    <<		<;T]]Cq9TJJtyy! :$--&!QVVXx0 '& :9&&s   B.!B)
B&)
B7c                    [        U R                  S5       nU R                  [        UR                  5        UR	                  U R
                  5        S S S 5        U R                  [        WR                  S/5        [        U R                  S5       nU R                  [        UR                  5       5      U R                  5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   ar!   )r   r)   rb   rc   
writelinesr9   rd   rH   rl   r   rj   r;   r   s      r   testWriteLinesBZ2FileTest.testWriteLines  s    T]]C(Di9OODOO, )
 	*doou=$--&!^AFFH5tyyA '& )( '&s   <C4C!
C!
C/c                 l   [        U R                  S5       nUR                  S5        S S S 5        [        U R                  S5       nU R                  [        UR                  S5        U R                  [        UR
                  S/5        S S S 5        g ! , (       d  f       Nq= f! , (       d  f       g = f)Nr   s   abcr`      a)r   r)   rU   rb   rs   r   rm   s     r   testWriteMethodsOnReadOnlyFile*BZ2FileTest.testWriteMethodsOnReadOnlyFile  s}    T]]C(DJJv ) T]]C(Dgtzz48gt? )( )( )(s   BAB%
B"%
B3c                 |   [        U R                  S5       nU R                  [        UR                  5        UR	                  U R
                  5        S S S 5        [        U R                  S5       nU R                  [        UR                  5        UR	                  U R
                  5        S S S 5        [        U R                  S5       nU R                  [        UR                  5       5      U R
                  S-  5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nu= f! , (       d  f       g = f)Nr   r   r!      r   r   s      r   
testAppendBZ2FileTest.testAppend#  s    T]]C(Di4JJtyy! ) T]]C(Di4JJtyy! ) $--&!^AFFH5tyy1}E '& )( )( '&s#   <D1<D7D-
D
D*-
D;c                 >   U R                  5         [        U R                  5       nU R                  [        UR
                  5        UR                  S5        U R                  UR                  5       U R                  SS  5        S S S 5        g ! , (       d  f       g = fN   )	rY   r   r)   rb   rc   seekrl   rj   r;   rm   s     r   testSeekForwardBZ2FileTest.testSeekForward-  sg    T]]#ti3IIcNTYY[$))CD/: $##s   AB
Bc                 h   U R                  SS9  [        U R                  5       nU R                  [        UR
                  5        UR                  [        U R                  5      S-   5        U R                  UR                  5       U R                  SS  5        S S S 5        g ! , (       d  f       g = f)Nr   ry   r   )
rY   r   r)   rb   rc   r   r   r;   rl   rj   rm   s     r   testSeekForwardAcrossStreams(BZ2FileTest.testSeekForwardAcrossStreams4  sz    A&T]]#ti3IIc$))ns*+TYY[$))CD/: $##s   A5B##
B1c                 "   U R                  5         [        U R                  5       nUR                  S5        UR	                  SS5        U R                  UR                  5       U R                  SS  5        S S S 5        g ! , (       d  f       g = fNi  jr"   i^  )rY   r   r)   rj   r   rl   r;   rm   s     r   testSeekBackwardsBZ2FileTest.testSeekBackwards;  sb    T]]#tIIcNIIdATYY[$))GH*=> $##s   AB  
Bc                    U R                  SS9  [        U R                  5       n[        U R                  5      S-   nUS:  a%  U[        UR                  U5      5      -  nUS:  a  M%  UR                  SS5        U R                  UR                  5       U R                  SS  U R                  -   5        S S S 5        g ! , (       d  f       g = f)Nr   ry   r   r   r   r"   i)rY   r   r)   r   r;   rj   r   rl   )r,   rn   readtos      r   testSeekBackwardsAcrossStreams*BZ2FileTest.testSeekBackwardsAcrossStreamsB  s    A&T]]#t^c)F1*#dii/00 1*IIdATYY[$))GH*=		*IJ $##s   AB>)AB>>
Cc                 ,   U R                  5         [        U R                  5       nUR                  SS5        U R	                  UR                  5       U R                  [        U R                  5      S-
  S  5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   )rY   r   r)   r   rl   rj   r;   r   rm   s     r   testSeekBackwardsFromEnd$BZ2FileTest.testSeekBackwardsFromEndK  se    T]]#tIIdATYY[$))C		N34F4G*HI $##s   AB
Bc                    U R                  SS9  [        U R                  5       nUR                  SS5        U R	                  UR                  5       U R                  S-  SS  5        S S S 5        g ! , (       d  f       g = f)Nr   ry   i)rY   r   r)   r   rl   rj   r;   rm   s     r   %testSeekBackwardsFromEndAcrossStreams1BZ2FileTest.testSeekBackwardsFromEndAcrossStreamsQ  s`    A&T]]#tIIeQTYY[499q=%&*AB $##s   AA11
A?c                 J   U R                  5         [        U R                  5       nUR                  S5        U R	                  UR                  5       [        U R                  5      5        U R	                  UR                  5       S5        S S S 5        g ! , (       d  f       g = fNI r   	rY   r   r)   r   rl   tellr   r;   rj   rm   s     r   testSeekPostEndBZ2FileTest.testSeekPostEndW  sh    T]]#tIIfTYY[#dii.9TYY[#. $##s   A%B
B"c                 N   U R                  SS9  [        U R                  5       nUR                  S5        U R	                  UR                  5       [        U R                  5      S-  5        U R	                  UR                  5       S5        S S S 5        g ! , (       d  f       g = fNrx   ry   r   r   r   rm   s     r   testSeekPostEndMultiStream&BZ2FileTest.testSeekPostEndMultiStream^  sr    A&T]]#tIIfTYY[#dii.1*<=TYY[#. $##s   A(B
B$c                 l   U R                  5         [        U R                  5       nUR                  S5        UR                  S5        U R	                  UR                  5       [        U R                  5      5        U R	                  UR                  5       S5        S S S 5        g ! , (       d  f       g = fr   r   rm   s     r   testSeekPostEndTwice BZ2FileTest.testSeekPostEndTwicee  st    T]]#tIIfIIfTYY[#dii.9TYY[#.	 $##s   A6B%%
B3c                 p   U R                  SS9  [        U R                  5       nUR                  S5        UR                  S5        U R	                  UR                  5       [        U R                  5      S-  5        U R	                  UR                  5       S5        S S S 5        g ! , (       d  f       g = fr  r   rm   s     r   testSeekPostEndTwiceMultiStream+BZ2FileTest.testSeekPostEndTwiceMultiStreamm  s~    A&T]]#tIIfIIfTYY[#dii.1*<=TYY[#.	 $##s   A9B''
B5c                 8   U R                  5         [        U R                  5       nUR                  S5        U R	                  UR                  5       S5        U R	                  UR                  5       U R                  5        S S S 5        g ! , (       d  f       g = f)Nr   r   rY   r   r)   r   rl   r  rj   r;   rm   s     r   testSeekPreStartBZ2FileTest.testSeekPreStartu  sc    T]]#tIIdOTYY[!,TYY[$))4 $##s   AB
Bc                 <   U R                  SS9  [        U R                  5       nUR                  S5        U R	                  UR                  5       S5        U R	                  UR                  5       U R                  S-  5        S S S 5        g ! , (       d  f       g = f)Nr   ry   r   r   r  rm   s     r   testSeekPreStartMultiStream'BZ2FileTest.testSeekPreStartMultiStream|  sl    A&T]]#tIIdOTYY[!,TYY[$))a-8 $##s   AB
Bc                    U R                  5         [        U R                  S5       n[        U5      n U R	                  UR                  5       UR                  5       5        UR                  5          S S S 5        U R                  [        WR
                  5        g ! UR                  5         f = f! , (       d  f       ND= fNr!   )	rY   rH   r)   r   rl   filenor+   rb   rd   )r,   rawfrn   s      r   
testFilenoBZ2FileTest.testFileno  s    $--&$4=D  >

 ' 	*dkk2 

 '&s"   B1.B"B1B..B11
B?c                 t   [        [        U R                  5      5      n U R                  UR	                  5       5        UR                  5         U R                  UR	                  5       5        UR                  5         U R                  [        UR                  5        [        [        5       S5      n U R                  UR	                  5       5        UR                  5         U R                  [        UR                  5        [        U R                  5      nS Ul        [        U5      n U R                  UR	                  5       5        UR                  5         U R                  [        UR                  5        g ! UR                  5         f = f! UR                  5         f = f! UR                  5         f = f)Nr   c                      g)NFrO   rO   r   r   <lambda>*BZ2FileTest.testSeekable.<locals>.<lambda>  s    ur   )
r   r   r<   r   seekablerj   r+   rb   rd   assertFalse)r,   rn   srcs      r   testSeekableBZ2FileTest.testSeekable  s!   wtyy)*	OODMMO,IIKOODMMO,JJL*dmm4wy#&	T]]_-JJL*dmm4dii $s|	T]]_-JJL*dmm4# JJL JJL JJLs$   AE; 3F +F% ;FF"%F7c                 Z   [        [        U R                  5      5      n U R                  UR	                  5       5        UR                  5         U R                  UR	                  5       5        UR                  5         U R                  [        UR                  5        [        [        5       S5      n U R                  UR	                  5       5        UR                  5         U R                  [        UR                  5        g ! UR                  5         f = f! UR                  5         f = fNr   )
r   r   r<   r   readablerj   r+   rb   rd   r   rm   s     r   testReadableBZ2FileTest.testReadable  s    wtyy)*	OODMMO,IIKOODMMO,JJL*dmm4wy#&	T]]_-JJL*dmm4 JJL JJL   AD 3D DD*c                 Z   [        [        U R                  5      5      n U R                  UR	                  5       5        UR                  5         U R                  UR	                  5       5        UR                  5         U R                  [        UR                  5        [        [        5       S5      n U R                  UR	                  5       5        UR                  5         U R                  [        UR                  5        g ! UR                  5         f = f! UR                  5         f = fr%  )
r   r   r<   r   writablerj   r+   rb   rd   r   rm   s     r   testWritableBZ2FileTest.testWritable  s    wtyy)*	T]]_-IIKT]]_-JJL*dmm4wy#&	OODMMO,JJL*dmm4 JJL JJLr)  c                 t    U R                  5         [        S5       H  n[        U R                  5      nAM     g )Ni'  )rY   ranger   r)   )r,   ios      r   testOpenDelBZ2FileTest.testOpenDel  s-    uA&A r   c                 :    U R                  [        [        S5        g )Nz/non/existent)rb   rs   r   r1   s    r   testOpenNonexistentBZ2FileTest.testOpenNonexistent  s    '7O<r   c                    Sn[        U R                  S5       nUR                  U5        S S S 5        [        U R                  5       nUR	                  5       nS S S 5        U R                  WS/5        [        U R                  5       n[        UR	                  5       5      nS S S 5        U R                  WS/5        g ! , (       d  f       N= f! , (       d  f       N}= f! , (       d  f       ND= f)Ns,   BZh91AY&SYb]        !h3M<]BCe%trT   s   Test)rH   r)   rU   r   r   rl   r   )r,   r   rX   rn   linesxliness         r   testReadlinesNoNewline"BZ2FileTest.testReadlinesNoNewline  s    z$--&!GGDM 'T]]#tNN$E $	*T]]#t$..*+F $'+ '&## $#s#   B?C	C!?
C
C!
C/c                    [        U R                  S5       nUR                  S5        S S S 5        [        U R                  S5      nUR                  5          U    S S S 5        U R	                  S5         [        U R                  S5       nSS-    S S S 5        U R	                  S5        g ! , (       d  f       N= f! , (       d  f       Ng= f! [
         a     Nef = f! , (       d  f       NR= f! [         a     g f = f)NrT   s   xxxr!   z4__enter__ on a closed file didn't raise an exceptionr"   r   z1/0 didn't raise an exception)r   r)   rU   r+   failrd   ZeroDivisionErrorr,   rX   s     r   testContextProtocolBZ2FileTest.testContextProtocol  s    T]]D)QGGFO *DMM4(			N 
 IILM	7-! .
 II56# *)
  		
 .-  		s_   B,C B=C 6C/ CC/ ,
B:=
CC 
CC
C,(C/ /
C<;C<c                 J  ^^ SS-  mSn[        U R                  S5       mUU4S jn[        U5       Vs/ s H  n[        R                  " US9PM     nn[
        R                  " U5          S S S 5        S S S 5        g s  snf ! , (       d  f       N= f! , (       d  f       g = f)N   1i   r_   rT   c                  L   > [        S5       H  n TR                  T5        M     g Nrx   )r/  rU   )r0  r   rX   s    r   comp'BZ2FileTest.testThreading.<locals>.comp  s    qAGGDM "r   )target)r   r)   r/  	threadingThreadr	   start_threads)r,   nthreadsrF  r0  threadsr   rX   s        @@r   testThreadingBZ2FileTest.testThreading  s     e|T]]D)Q" ?DHoNoy''t4oGN!//8 9 *) O88 *)s4   BA>B+B-B>B
B	B
B"c                    U R                  5         [        U R                  S   5      nUS-  n[        U R                  5       nUR                  U5        U R                  [        U5      U R                  S   US  5        U R                  UR                  5       U R                  US  5        S S S 5        [        U R                  5       nUR                  5         U R                  [        U5      U R                  S   5        U R                  UR                  5       U R                  S   5        S S S 5        [        U R                  5       nUR                  5         U R                  [        [        U5        U R                  UR                  5       / 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r"   )rY   r   r9   r   r)   rj   rl   r   r;   r   r   rb   StopIteration)r,   linelenhalflenrn   s       r   testMixedIterationAndReads&BZ2FileTest.testMixedIterationAndReads  sN   dooa()Q,T]]#tIIgT$Z);GH)EFTYY[$))GH*=> $ T]]#tMMOT$Z);<T]]_dooa.@A $ T]]#tNNmT48T^^-r2 $# $# $# $#s'   A*F"
A&F3AG"
F03
G
Gc                    SnSn[        U R                  S5       nUR                  U5        S S S 5        [        U R                  S5       nUR                  U5        S S S 5        [        U R                  5       nU R                  UR	                  5       X-   5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N`= f! , (       d  f       g = f)Ns  foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoos  barbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarr   r   )r   r)   rU   rl   rj   )r,   data1data2rn   s       r   testMultiStreamOrdering#BZ2FileTest.testMultiStreamOrdering  s    T]]C(DJJu )T]]C(DJJu )T]]#tTYY[%-8 $#	 )(((##s#   B&B7:#C&
B47
C
Cc                    [        U R                  S5       nUR                  S5        U R                  UR                  U R                  5        U R                  UR                  5       [        5        U R                  UR                  S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  S5        S S S 5        U R                  WR                  S5        U R                  [        5         UR                    S S S 5        U R                  [        UR                  5        U R                  UR                  S5        U R                  [        UR                  5        U R                  [        UR                  5        U R                  [        UR                  5        [        U R                  S5       nUR                  S5        U R                  UR                  U R                  5        U R                  UR                  5       [        5        U R                  UR                  S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  S5        S S S 5        U R                  UR                  S5        U R                  [        5         UR                    S S S 5        U R                  [        UR                  5        U R                  UR                  S5        U R                  [        UR                  5        U R                  [        UR                  5        U R                  [        UR                  5        [        U R                  S5       nU R                  UR!                  5       S5        U R                  UR                  U R                  5        U R                  UR                  5       [        5        U R                  UR                  S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  S5        S S S 5        U R                  UR                  S5        U R                  [        5         UR                    S S S 5        U R                  [        UR                  5        U R                  UR                  S5        U R                  [        UR                  5        U R                  [        UR                  5        U R                  [        UR                  5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN:= f! , (       d  f       GN= f	NrT      contentFTab   appendixr!      contentappendix)r   r)   rU   rl   nameassertIsInstancer  intmodeassertIsr&  r+  r  closedrb   rd   rj   r?  s     r   testOpenFilenameBZ2FileTest.testOpenFilename  s   T]]D)QGGJQVVT]]3!!!((*c2QVVT*MM!**,.MM!**,-MM!**,.MM!((E* * 	ahh%z*FF +*ahh/&*ajj1*ajj1*ajj1T]]D)QGGK QVVT]]3!!!((*c2QVVT*MM!**,.MM!**,-MM!**,.MM!((E* * 	ahh%z*FF +*ahh/&*ajj1*ajj1*ajj1T]]D)QQVVX'9:QVVT]]3!!!((*c2QVVT*MM!**,-MM!**,.MM!**,-MM!((E* * 	ahh%z*FF +*ahh/&*ajj1*ajj1*ajj1i *) +* *) +* *) +*sJ   C4W-W?C4X8X#?DX5;Y-
W<?
X
X #
X25
Y
Yc                    [        U R                  S5       n[        US5       nUR                  S5        U R	                  UR
                  UR
                  5        U R	                  UR                  5       UR                  5       5        U R	                  UR                  S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  S5        S S S 5        U R                  WR                  S5        U R                  [        5         UR
                    S S S 5        U R                  [        UR                  5        U R	                  UR                  S5        U R                  [        UR                  5        U R                  [        UR                  5        U R                  [        UR                  5        S S S 5        [        U R                  S5       n[        US5       nUR                  S5        U R	                  UR
                  UR
                  5        U R	                  UR                  5       UR                  5       5        U R	                  UR                  S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  S5        S S S 5        U R                  WR                  S5        U R                  [        5         UR
                    S S S 5        U R                  [        UR                  5        U R	                  UR                  S5        U R                  [        UR                  5        U R                  [        UR                  5        U R                  [        UR                  5        S S S 5        [        U R                  S5       n[        US5       nU R	                  UR                  5       S5        U R	                  UR
                  UR
                  5        U R	                  UR                  5       UR                  5       5        U R	                  UR                  S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  S5        S S S 5        U R                  WR                  S5        U R                  [        5         UR
                    S S S 5        U R                  [        UR                  5        U R	                  UR                  S5        U R                  [        UR                  5        U R                  [        UR                  5        U R                  [        UR                  5        S S S 5        g ! , (       d  f       GN/= f! , (       d  f       GN= f! , (       d  f       GNi= f! , (       d  f       GNR= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNf= f! , (       d  f       GN2= f! , (       d  f       g = fr\  )rH   r)   r   rU   rl   ra  r  rd  re  r&  r+  r  rf  rb   rd   rj   )r,   rawrX   s      r   testOpenFileWithName BZ2FileTest.testOpenFileWithNameR  st   $--&#d#q
#  2  SZZ\:  .ajjlE2ajjlD1ajjlE2ahh. $ MM!((D)"":. /j!((3QVVT*j!**5j!**5j!**5# '& $--&#d#q$  2  SZZ\:  .ajjlE2ajjlD1ajjlE2ahh. $ MM!((D)"":. /j!((3QVVT*j!**5j!**5j!**5# '& $--&#d#q  +=>  2  SZZ\:  .ajjlD1ajjlE2ajjlD1ahh. $ MM!((D)"":. /j!((3QVVT*j!**5j!**5j!**5# '&K $# /. '&( $# /. '&( $# /. '&s   Y.C>Y
"9Y.Y(B$Y.*Z$7C>Z 59Z$.Z;B$Z$=[
DZ69[[B$[

Y	Y.
Y+	&Y..
Y= 
Z	
Z$
Z!	Z$$
Z36
[	 [
[	[
[(c                    [        5       n[        US5       nUR                  S5        U R                  [        5         UR
                    S S S 5        U R                  [        R                  UR                  5        U R                  UR                  S5        S S S 5        U R                  [        5         WR
                    S S S 5        U R                  [        WR                  5        [        US5       nUR                  S5        U R                  [        5         UR
                    S S S 5        U R                  [        R                  UR                  5        U R                  UR                  S5        S S S 5        U R                  [        5         UR
                    S S S 5        U R                  [        UR                  5        UR                  S5        [        US5       nU R                  UR                  5       S5        U R                  [        5         UR
                    S S S 5        U R                  [        R                  UR                  5        U R                  UR                  S5        S S S 5        U R                  [        5         UR
                    S S S 5        U R                  [        UR                  5        g ! , (       d  f       GN= f! , (       d  f       GNL= f! , (       d  f       GN4= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)NrT   r]  r^  r_  r   r!   r`  )r   r   rU   rb   AttributeErrorra  ioUnsupportedOperationr  rl   rd  rd   r   rj   )r,   biorX   s      r   testOpenFileWithoutName#BZ2FileTest.testOpenFileWithoutName  s/   iS$1GGJ"">2 3b55qxx@QVVT*   z*FF +*ahh/S$1GGK "">2 3b55qxx@QVVT*   z*FF +*ahh/S$1QVVX'9:"">2 3b55qxx@QVVT*   z*FF +*ahh/7 32   +* 32   +* 32   +*s   'KKAK6K07'LL+ALL&(6M
L8+AM
M
K	K
K-0
K?
L	L
L#&
L58
M	M


M
M)c                    [         R                  " U R                  [         R                  [         R                  -  [         R
                  -  5      n[        US5       n[        US5       nUR                  S5        U R                  UR                  UR                  5        U R                  UR                  5       UR                  5       5        U R                  UR                  S5        S S S 5        U R                  [        5         WR                    S S S 5        U R                  [        WR                  5        S S S 5        [         R                  " U R                  [         R                  [         R                  -  [         R                  -  5      n[        US5       n[        US5       nUR                  S5        U R                  UR                  UR                  5        U R                  UR                  5       UR                  5       5        U R                  UR                  S5        S S S 5        U R                  [        5         WR                    S S S 5        U R                  [        WR                  5        S S S 5        [         R                  " U R                  [         R                  5      n[        US5       n[        US5       nU R                  UR!                  5       S5        U R                  UR                  UR                  5        U R                  UR                  5       UR                  5       5        U R                  UR                  S5        S S S 5        U R                  [        5         WR                    S S S 5        U R                  [        WR                  5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)NrT   r]  r^  r_  r!   r`  )r*   rH   r)   O_WRONLYO_CREATO_TRUNCr   rU   rl   ra  r  rd  rb   rd   O_APPENDO_RDONLYrj   )r,   r-   rj  rX   s       r   testOpenFileWithIntName#BZ2FileTest.testOpenFileWithIntName  s   WWT]]BKK"**$<rzz$IJ"d^sd#q
#  2  SZZ\:  .	 $
 "":. /j!((3  WWT]]BKK"**$<r{{$JK"d^sd#q$  2  SZZ\:  .	 $
 "":. /j!((3  WWT]]BKK0"d^sd#q  +=>  2  SZZ\:  .	 $
 "":. /j!((3 ^+ $#
 /. ^ $#
 /. ^ $#
 /. ^s   O%+BO-O%
O(O%$P1BO73PP	(PQBP-&QP>(Q
O	O%
O"	O%%
O47
P	P	
P	P
P*-
P;	7Q>
Q	Q
Qc                    U R                   n[        R                  " U5      n[        US5       nUR	                  U R
                  5        U R                  UR                  U5        S S S 5        [        US5       nU R                  UR                  5       U R
                  5        U R                  UR                  U5        S S S 5        [        US5       nU R                  UR                  5       U R
                  5        U R                  UR                  U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N{= f! , (       d  f       g = fNrT   r!   )	r)   r*   fsencoder   rU   r<   rl   ra  rj   )r,   str_filenamebytes_filenamerX   s       r   testOpenBytesFilename!BZ2FileTest.testOpenBytesFilename  s    }}\2^T*aGGDIIQVV^4 + ^T*aQVVXtyy1QVV^4 + \4(AQVVXtyy1QVV\2 )( +* +* )(s%   8D&;AD7AE&
D47
E
Ec                    [        U R                  5      n[        US5       nUR                  U R                  5        U R                  UR                  U R                  5        S S S 5        [        US5       nU R                  UR                  5       U R                  5        U R                  UR                  U R                  5        S S S 5        g ! , (       d  f       Nt= f! , (       d  f       g = fr}  )r   r)   r   rU   r<   rl   ra  rj   )r,   r)   rX   s      r   testOpenPathLikeFilename$BZ2FileTest.testOpenPathLikeFilename  s    DMM*Xt$GGDIIQVVT]]3 % Xt$QVVXtyy1QVVT]]3 %$ %$ %$s   AC8AC#
C #
C1c                 |   [         R                  S[        S5      -  SS9nU R                  [	        U5      [
        R                  5        [        [        U5      5      nU R                  UR                  S5      S5        S[        -   nU R                  UR                  R                  R                  5       US5        g)z-Decompressed data buffering should be limited    g    >A	   r#   r"   z)Excessive amount of data was decompressedN)r   rL   rc  
assertLessr   r}   r~   r   r   rl   rj   r   assertLessEqual_bufferrj  r  )r,   bombdecomp
max_decomps       r   testDecompressLimited!BZ2FileTest.testDecompressLimited  s    ||ECH,A|>D	<#;#;<'Q/,,
V^^//446
7	9r   c                 >   [        U R                  5       n[        U5       nU R                  [        UR
                  [        5       5        U R                  UR                  5       U R                  5        U R                  [        5         [        R                    S S S 5        U R                  UR                  S5        S S S 5        U R                  UR                  5        S S S 5        g ! , (       d  f       NV= f! , (       d  f       NC= f! , (       d  f       g = fr  )r   r<   r   rb   rc   rj   rk   rl   r;   rn  r   ra  rd  r   rf  r,   rq  rn   s      r   testReadBytesIOBZ2FileTest.testReadBytesIO  s    TYY3!!)TYY@  dii8&&~6HH 7  D1  SZZ(   76   s;   DA)C=C,$C= #D,
C:6C==
D	D
Dc                    [        U R                  5       n[        U5       nUR                  5       nU R	                  [        U5      S5        U R                  U R                  R                  U5      5        U R                  UR                  5       U R                  5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = fr   )r   r<   r   r   r   r   r   r;   r   rl   rj   )r,   rq  rn   r   s       r   testPeekBytesIOBZ2FileTest.testPeekBytesIO  s    TYY3		##CJ2		 4 4U ;<  dii8	     s#   CB B3"C3
C	=C
Cc                 `   [        5        n[        US5       nU R                  [        UR                  5        UR	                  U R
                  5        U R                  [        5         [        R                    S S S 5        U R                  UR                  S5        S S S 5        U R                  [        UR                  5       5      U R
                  5        U R                  UR                  5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nv= f! , (       d  f       g = f)Nr   rT   )r   r   rb   rc   rU   r;   rn  r   ra  rl   rd  r   getvaluer   rf  r  s      r   testWriteBytesIOBZ2FileTest.testWriteBytesIO  s    Y#c"d!!)TZZ8

499%&&~6HH 7  D1 # ^CLLN;TYYGSZZ( Y 76 #" Ys<   DAD)C=:$DAD=
DD
D	D
D-c                 h   [        U R                  5       n[        U5       nU R                  [        UR
                  5        UR                  S5        U R                  UR                  5       U R                  SS  5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = fr   )	r   r<   r   rb   rc   r   rl   rj   r;   r  s      r   testSeekForwardBytesIO"BZ2FileTest.testSeekForwardBytesIO  st    TYY3!!)TYY7		#  diio>     s#   B#ABB#
B 	B##
B1c                 L   [        U R                  5       n[        U5       nUR                  S5        UR	                  SS5        U R                  UR                  5       U R                  SS  5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = fr   )r   r<   r   rj   r   rl   r;   r  s      r   testSeekBackwardsBytesIO$BZ2FileTest.testSeekBackwardsBytesIO  so    TYY3		#		$"  dii.AB     s#   BAB3B
B	B
B#c                    U R                   S S n[        [        U5      5       nU R                  [        UR
                  5        S S S 5        [        [        U5      5       nU R                  UR                  [        U R                  5      5      U R                  5        U R                  [        UR
                  S5        S S S 5        [        S5       HD  n[        [        US U 5      5       nU R                  [        UR
                  S5        S S S 5        MF     g ! , (       d  f       N= f! , (       d  f       Ns= f! , (       d  f       Mz  = f)Nr"      )
r<   r   r   rb   EOFErrorrj   rl   r   r;   r/  )r,   	truncatedrX   r0  s       r   test_read_truncatedBZ2FileTest.test_read_truncated  s    IIdsO	WY'(Ah/ )WY'(AQVVC		N3TYY?h2 ) rA2A/0A!!(AFFA6 10  )(((
 10s$   !D!A D.."D?
D+.
D<?
E	c                 D   [         R                   " S/ SQ5      n[        U5      UR                  -  n[        [	        5       S5       nU R                  UR                  U5      U5        U R                  UR                  5       U5        S S S 5        g ! , (       d  f       g = f)NQ)r"   r   ra      rx   r   )arrayr   itemsizer   r   rl   rU   r  )r,   qLENGTHrX   s       r   test_issue44439BZ2FileTest.test_issue44439,  sl    KK_-Q!**$WY$QWWQZ0QVVXv. %$$s   AB
BrO   N)r"   r   )Hr4   r5   r6   r7   r8   rY   rf   ro   rt   rz   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  r"  r'  r,  r2  r5  r:  r@  r	   requires_working_threadingrN  rT  rY  rg  rk  rr  rz  r  r  r  r  r  r  r  r  r  r  rN   rO   r   r   rQ   rQ   Z   so   
	B52
935
9
0	.	2>
5
488@D@
D
6B
B1B@F;;?KJC////593545"5"=
,7( 002
 3
3"	952n86t0B 4D34	9)9	)?C7/r   rQ   c                   j    \ rS rSrS rS rS r\R                  \	" \
S-   SS9S 5       5       rS	 rS
rg)BZ2CompressorTesti5  c                     [        5       nU R                  [        UR                  5        UR                  U R                  5      nX!R                  5       -  nU R                  [        U5      U R                  5        g r&   )r   rb   rc   rL   r;   flushrl   r   r,   bz2cr   s      r   testCompressBZ2CompressorTest.testCompress6  sV    )T]]3}}TYY'

-tyy9r   c                     [        5       nUR                  S5      nX!R                  5       -  nU R                  X R                  5        g Nr   )r   rL   r  rl   r=   r  s      r   testCompressEmptyString)BZ2CompressorTest.testCompressEmptyString=  s7    }}S!

/r   c                    [        5       nSnSn U R                  US-  US-   S-   nU(       d  OX1R                  U5      -  nUS-  nM:  X1R                  5       -  nU R	                  [        U5      U R                  5        g )Nr   r   r_   r"   )r   r;   rL   r  rl   r   )r,   r  r   r   r   s        r   testCompressChunks10&BZ2CompressorTest.testCompressChunks10C  s    ))AbD!A#r*CMM#&&DFA  	

-tyy9r   r   r   sizememusec                 D   [        5       nSU-  n UR                  U5      nXBR                  5       -  nS n[        R	                  U5      n U R                  [        U5      U5        U R                  [        UR                  S5      5      S5        S ng ! S nf = f! S nf = f)N   xr   )r   rL   r  r   r   rl   r   strip)r,   r  r  r   
compresseds        r   testCompress4G BZ2CompressorTest.testCompress4GP  s     d{	t,J**,&JD~~j)	SY-SD!12A6D D Ds   #B AB BBc                     [        [        R                  S-   5       H@  nU R                  [        5         [        R
                  " [        5       U5        S S S 5        MB     g ! , (       d  f       MT  = fNr"   )r/  pickleHIGHEST_PROTOCOLrb   rc   dumpsr   r,   protos     r   
testPickleBZ2CompressorTest.testPickleb  sI    622Q67E""9-]_e4 .- 8--    A""
A1	rO   N)r4   r5   r6   r7   r  r  r  r   skip_if_pgo_taskr   r   r  r  rN   rO   r   r   r  r  5  sC    :0: S3Yq) *  5r   r  c                       \ rS rSrS rS rS rS rS r\	R                  \" \S-   SS	9S
 5       5       rS rS rS rS rS rS r\	R(                  S 5       rS rSrg)BZ2DecompressorTestih  c                 :    U R                  [        [        S5        g )N*   )rb   rc   r   r1   s    r   test_Constructor$BZ2DecompressorTest.test_Constructori  s    )_b9r   c                     [        5       nU R                  [        UR                  5        UR                  U R                  5      nU R                  X R                  5        g r&   )r   rb   rc   r   r<   rl   r;   r,   bz2dr   s      r   testDecompress"BZ2DecompressorTest.testDecompressl  sB     )T__5tyy)yy)r   c                     [        5       nSnSn U R                  US-  US-   S-   nU(       d  OX!R                  U5      -  nUS-  nM:  U R                  X R                  5        g )Nr   r   r_   r"   )r   r<   r   rl   r;   )r,   r  r   r   r   s        r   testDecompressChunks10*BZ2DecompressorTest.testDecompressChunks10r  sl     ))AbD!A#r*COOC((DFA  	yy)r   c                     [        5       nSnUR                  U R                  U-   5      nU R                  X0R                  5        U R                  UR
                  U5        g )Ns   this is unused data)r   r   r<   rl   r;   unused_data)r,   r  r  r   s       r   testDecompressUnusedData,BZ2DecompressorTest.testDecompressUnusedData~  sN     ,tyy45yy)));7r   c                     [        5       nUR                  U R                  5      nU R                  [        UR                  S5        U R                  [        UR                  S5        g )Ns   anythingr   )r   r   r<   rb   r  r  s      r   testEOFError BZ2DecompressorTest.testEOFError  sH     tyy)(DOO[A(DOOS9r   r   gffffff
@r  c                    [        SU5      n[        R                  " U5      n X1S-
  U-  S-   -  n[        R	                  U5      n[        5       nUR                  U5      nU R                  Xt:H  5        S nS nS ng ! S nS nS nf = f)Ni   r"   )minrandom	randbytesr   rL   r   r   r   )r,   r  	blocksizeblockr   r  r  decompresseds           r   testDecompress4G$BZ2DecompressorTest.testDecompress4G  s     ($/	  +		 !V	1A56Dd+J"$D??:6LOOL01DJL DJLs   AA; ;Bc                     [        [        R                  S-   5       H@  nU R                  [        5         [        R
                  " [        5       U5        S S S 5        MB     g ! , (       d  f       MT  = fr  )r/  r  r  rb   rc   r  r   r  s     r   r  BZ2DecompressorTest.testPickle  sJ    622Q67E""9-_.6 .- 8--r  c                    [        5       nSn/ n[        U R                  5      S-
  nUR                  UR	                  U R                  S U US95        U R                  UR                  5        U R                  [        US   5      U5        UR                  UR	                  SUS95        U R                  UR                  5        U R                  [        US   5      U5        UR                  UR	                  U R                  US  US95        U R                  [        US   5      U5        UR                  (       dP  UR                  UR	                  SUS95        U R                  [        US   5      U5        UR                  (       d  MP  SR                  U5      nU R                  X0R                  5        U R                  UR                  S5        g )Nr   @   
max_lengthr   )r   r   rM   appendr   r   needs_inputrl   r  eofr:   rA   r  )r,   bzdr  outlen_s        r   testDecompressorChunksMaxsize1BZ2DecompressorTest.testDecompressorChunksMaxsize  s   
 4==!B&

3>>$--"6-7 " 9 	:)SWz2 	

3>>#*>=>)SWz2 	

3>>$--"6-7 " 9 	:SR\:6 ''JJs~~cj~AB  SWz: ''' hhsmmm,#.r   c                    [        5       n/ nU R                  UR                  U R                  S S SS9S5        UR	                  UR                  SS5      5        UR	                  UR                  U R                  SS S5      5        UR	                  UR                  U R                  SS  5      5        U R                  SR                  U5      U R                  5        g )Nr   r   r  r   r   i      r   rl   r   r<   r  r:   r;   r,   r  r  s      r   test_decompressor_inputbuf_10BZ2DecompressorTest.test_decompressor_inputbuf_1  s      			$334 ( 67:	<
 	

3>>#q)* 	

3>>$))C"4b9: 	

3>>$))CD/23#		2r   c                    [        5       n/ nU R                  UR                  U R                  S S SS9S5        UR	                  UR                  S5      5        UR	                  UR                  U R                  SS S5      5        UR	                  UR                  U R                  SS S5      5        UR	                  UR                  U R                  SS  5      5        U R                  SR                  U5      U R                  5        g )N   r   r  r   i  r   ,  r  r  s      r   test_decompressor_inputbuf_20BZ2DecompressorTest.test_decompressor_inputbuf_2  s      			$334 ( 67:	<

3>>#&' 	

3>>$))C"4a89 	

3>>$))C"4a89 	

3>>$))CD/23#		2r   c                    [        5       n/ nUR                  UR                  U R                  S S S5      5        UR                  UR                  U R                  SS S5      5        UR                  UR                  U R                  SS  5      5        U R	                  SR                  U5      U R                  5        g )Nr  rx   r  r   )r   r  r   r<   rl   r:   r;   r  s      r   test_decompressor_inputbuf_30BZ2DecompressorTest.test_decompressor_inputbuf_3  s      	

3>>$))DS/156 	

3>>$))C"4a89 	

3>>$))CD/23#		2r   c                     [        5       nU R                  [        UR                  U R                  S-  5        U R                  [        UR                  U R                  S-  5        g )N   )r   rb   	Exceptionr   r>   )r,   r  s     r   test_failure BZ2DecompressorTest.test_failure  sH    )S^^T]]R5GH)S^^T]]R5GHr   c                     [         R                  " [        S5      n[        5       nU" 5       n[	        S5       H  nUR                  5         M     U R                  U" 5       U-
  SSS9  g )Ngettotalrefcountr   r   r_   )delta)r   get_attributesysr   r/  __init__assertAlmostEqual)r,   r  r  refs_beforer0  s        r   test_refleaks_in___init__-BZ2DecompressorTest.test_refleaks_in___init__  s[    "006HI&(sALLN /1K?"Mr   c                     U R                  [        R                  " [        5      R                  [	        5       5      S5        g r  )rl   r   __new__r   bytesr1   s    r   (test_uninitialized_BZ2Decompressor_crash<BZ2DecompressorTest.test_uninitialized_BZ2Decompressor_crash
  s+    00A#EG,c	3r   rO   N)r4   r5   r6   r7   r  r  r  r  r  r   r  r   r   r  r  r  r  r  r  r  refcount_testr  r$  rN   rO   r   r   r  r  h  s    :*
*8: S3Ys+  ,  7
/>3,3*3 I N N3r   r  c                   P    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rSrg)CompressDecompressTesti  c                     [         R                  U R                  5      nU R                  [	        U5      U R                  5        g r&   )r   rL   r;   rl   r   )r,   r   s     r   r  #CompressDecompressTest.testCompress  s-    ||DII&-tyy9r   c                 d    [         R                  S5      nU R                  XR                  5        g r  )r   rL   rl   r=   r,   r   s     r   r  .CompressDecompressTest.testCompressEmptyString  s"    ||C /r   c                 x    [         R                  U R                  5      nU R                  XR                  5        g r&   r   r   r<   rl   r;   r,  s     r   r  %CompressDecompressTest.testDecompress  s&    ~~dii(yy)r   c                 R    [         R                  S5      nU R                  US5        g r  )r   r   rl   r,  s     r   testDecompressEmpty*CompressDecompressTest.testDecompressEmpty  s     ~~c"s#r   c                 f    [         R                  U R                  5      nU R                  US5        g r  )r   r   r=   rl   r,  s     r   testDecompressToEmptyString2CompressDecompressTest.testDecompressToEmptyString   s$    ~~doo.s#r   c                 h    U R                  [        [        R                  U R                  S S 5        g )Nr  )rb   rd   r   r   r<   r1   s    r   testDecompressIncomplete/CompressDecompressTest.testDecompressIncomplete$  s"    *cnndiioFr   c                 b    U R                  [        [        R                  U R                  5        g r&   )rb   rs   r   r   r>   r1   s    r   testDecompressBadData,CompressDecompressTest.testDecompressBadData'  s    '3>>4==Ar   c                     [         R                  U R                  S-  5      nU R                  XR                  S-  5        g rE  r/  r,  s     r   testDecompressMultiStream0CompressDecompressTest.testDecompressMultiStream*  s.    ~~dii!m,yy1}-r   c                     [         R                  U R                  U R                  -   5      nU R	                  XR
                  5        g r&   r   r   r<   r>   rl   r;   r,  s     r   testDecompressTrailingJunk1CompressDecompressTest.testDecompressTrailingJunk.  s/    ~~dii$--78yy)r   c                     [         R                  U R                  S-  U R                  -   5      nU R	                  XR
                  S-  5        g rE  rA  r,  s     r   %testDecompressMultiStreamTrailingJunk<CompressDecompressTest.testDecompressMultiStreamTrailingJunk2  s7    ~~dii!mdmm;<yy1}-r   rO   N)r4   r5   r6   r7   r  r  r  r2  r5  r8  r;  r>  rB  rE  rN   rO   r   r   r(  r(    s6    :0*$$GB.*.r   r(  c                   T    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)OpenTesti7  zTest the open function.c                 .    [         R                  " U0 UD6$ r&   )r   rH   )r,   argskwargss      r   rH   OpenTest.open:  s    xx(((r   c                    S GH  nUS:X  a  [        U R                  5        U R                  U R                  U5       nUR                  U R                  5        S S S 5        [        U R                  S5       n[        UR                  5       5      nU R                  X0R                  5        S S S 5        U R                  U R                  S5       nU R                  UR                  5       U R                  5        S S S 5        U R                  U R                  S5       nUR                  U R                  5        S S S 5        [        U R                  S5       n[        UR                  5       5      nU R                  X0R                  S-  5        S S S 5        GM     g ! , (       d  f       GNM= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       GM  = f)N)rT   xbrN  r!   r^  r   r
   r)   rH   rU   r;   r   rj   rl   r,   rd  rX   	file_datas       r   test_binary_modesOpenTest.test_binary_modes=  sB    Dt|t}}%4==$/1		" 0dmmT*a*16684	  II6 + 4==$/1  4995 04==$/1		" 0dmmT*a*16684	  IIM: +* ! 0/** 0///**;   F 85F2+G G8G& 
F/	2
G	
G	
G#	&
G6	c                    S GH  nUS:X  a  [        U R                  5        U R                  U R                  U5       nUR                  U R                  5        S S S 5        [        U R                  S5       n[        UR                  5       5      nU R                  X0R                  5        S S S 5        U R                  U R                  S5       nU R                  UR                  5       U R                  5        S S S 5        U R                  U R                  S5       nUR                  U R                  5        S S S 5        [        U R                  S5       n[        UR                  5       5      nU R                  X0R                  S-  5        S S S 5        GM     g ! , (       d  f       GNM= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       GM  = f)N)r   xrV  r!   r`   r   r   rO  rP  s       r   test_implicit_binary_modes#OpenTest.test_implicit_binary_modesN  sB   Ds{t}}%4==$/1		" 0dmmT*a*16684	  II6 + 4==#.!  4995 /4==#.!		" /dmmT*a*16684	  IIM: +*  0/** /...**rT  c                 8   U R                   R                  S5      nUR                  S[        R                  5      nS GH  nUS:X  a  [        U R                  5        U R                  U R                  USS9 nUR                  U5        S S S 5        [        U R                  S5       n[        UR                  5       5      R                  S5      nU R                  XR5        S S S 5        U R                  U R                  SSS9 nU R                  UR                  5       U5        S S S 5        U R                  U R                  SSS9 nUR                  U5        S S S 5        [        U R                  S5       n[        UR                  5       5      R                  S5      nU R                  XRS	-  5        S S S 5        GM     g ! , (       d  f       GNA= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       GM  = f)
Nascii
)wtxtr]  encodingr!   rtatr   )r;   decodereplacer*   linesepr
   r)   rH   rU   r   rj   rl   )r,   r   text_native_eolrd  rX   rQ  s         r   test_text_modesOpenTest.test_text_modes`  s|   yy(,,tRZZ8 Dt|t}}%4==$AQ BdmmT*a*16684;;GD	  < + 4==$AQ  40 B4==$AQ BdmmT*a*16684;;GD	  a,?@ +* ! BA** BAAA**s<   8G(:G!G'	G89=H	
G	
G$	'
G5	8
H		
H	c                    S H  n[        U R                  5        SU;   a  SOS nU R                  U R                  XS9 n S S S 5        U R                  [        5         U R                  U R                  U5       n S S S 5        S S S 5        M     g ! , (       d  f       NW= f! , (       d  f       N,= f! , (       d  f       M  = f)N)rV  rN  r]  tutf-8r^  )r
   r)   rH   rb   FileExistsError)r,   rd  r_  rX   s       r   test_x_modeOpenTest.test_x_modes  s    %D4==!"%+w4H4==$Ba C""?3YYt}}d3q 4 43 & CB 43 43s/   BB4;B#=B4
B 	#
B1-B44
C	c                    U R                  [        U R                  5      S5       nU R                  UR	                  5       U R
                  5        S S S 5        U R                  [        U R                  5      S5       nU R                  UR	                  5       U R
                  5        S S S 5        U R
                  R                  S5      nU R                  [        U R                  5      SSS9 nU R                  UR	                  5       U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr`   r!   rZ  r`  rj  r^  )rH   r   r<   rl   rj   r;   rb  )r,   rX   r   s      r   test_fileobjOpenTest.test_fileobj}  s    YYwtyy)3/1QVVXtyy1 0YYwtyy)40AQVVXtyy1 1yy(YYwtyy)4'YBaQVVXt, CB 0/00 CBs#   +D>+D+0!D<
D(+
D9<
E
c                    U R                  [        U R                  U R                  S5        U R                  [        U R                  U R                  S5        U R                  [        U R                  U R                  SSS9  U R                  [        U R                  U R                  SSS9  U R                  [        U R                  U R                  SSS	9  g )
Nwbtxbtr!   rj  r^  ignore)errorsr[  )newline)rb   rd   rH   r)   r1   s    r   test_bad_paramsOpenTest.test_bad_params  s    *))T]]E	;*))T]]E	;*))T]]D7 	 	L*))T]]D 	 	K*))T]]D$ 	 	Hr   c                    U R                   R                  S5      nUR                  S[        R                  5      nU R                  U R                  SSS9 nUR                  U5        S S S 5        [        U R                  S5       n[        UR                  5       5      R                  S5      nU R                  XB5        S S S 5        U R                  U R                  SSS9 nU R                  UR                  5       U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       Nd= f! , (       d  f       g = f)NrZ  r[  r\  z	utf-16-ler^  r!   r`  )r;   rb  rc  r*   rd  rH   r)   rU   r   rj   rl   )r,   r   re  rX   rQ  s        r   test_encodingOpenTest.test_encoding  s    yy(,,tRZZ8YYt}}d[YAQGGDM B$--&!&qvvx077DIY8 ' YYt}}d[YAQQVVXt, BA BA&& BAs$   D:D$!D0
D
D-0
D>c                 >   U R                  U R                  S5       nUR                  S5        S S S 5        U R                  U R                  SSSS9 nU R                  UR	                  5       S5        S S S 5        g ! , (       d  f       NT= f! , (       d  f       g = f)NrT   s   foobarr`  rZ  rt  )r_  ru  foobar)rH   r)   rU   rl   rj   r?  s     r   test_encoding_error_handler$OpenTest.test_encoding_error_handler  sq    YYt}}d+qGGM" ,YYt}}dWXYNQVVXx0 ON ,+NNs   A=!B=
B
Bc                 v   U R                   R                  S5      nU R                  U R                  SSSS9 nUR	                  U5        S S S 5        U R                  U R                  SSSS9 nU R                  UR                  5       U/5        S S S 5        g ! , (       d  f       NU= f! , (       d  f       g = f)NrZ  r\  rj  r[  )r_  rv  r`  )r;   rb  rH   r)   rU   rl   r   )r,   r   rX   s      r   test_newlineOpenTest.test_newline  s    yy(YYt}}dWdYKqGGDM LYYt}}dWdYKqQ[[]TF3 LK LKKKs   B."B*
B'*
B8rO   N)r4   r5   r6   r7   r8   rH   rR  rW  rf  rl  ro  rw  rz  r~  r  rN   rO   r   r   rH  rH  7  s9    );";$A&-H
-14r   rH  c                  .    [         R                  " 5         g r&   )r   reap_childrenrO   r   r   tearDownModuler    s    r   __main__)*testr   test.supportr   r   r  unittestro  r   r   r*   r  rB   r'   r  r   r   rI  r   r	   test.support.os_helperr
   r   r}   r  import_moduler   r   r   r   r   r   TestCaser   rQ   r  r  r(  rH  r  r4   mainrO   r   r   <module>r     s     (   	 + 	        & ) 3  
 !!%( 7 7 $1x   1hX/( X/v05 05fd3( d3N%.X %.Pv4x v4r zMMO r   