
    6bh]                        d dl mZ d dlmZmZ d dlZd dlZd dlZd dlmZm	Z	 d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ d dlmZmZ d dlZd dlZ ej2                  d      Zd d	lmZmZmZ dad
 Z G d dej@                        Z! G d de!      Z" G d de!      Z# G d de!      Z$ G d de!      Z% G d de!      Z&d Z'e(dk(  r ejR                          yy)    )support)
bigmemtest_4GN)BytesIODEFAULT_BUFFER_SIZE)import_helper)threading_helper)unlinkFakePathbz2)BZ2FileBZ2CompressorBZ2Decompressorc                     t         t        t        j                  d            a t         rt	        j
                  dg|       S t        j                  |       S )Nbunzip2)input)has_cmdline_bunzip2boolshutilwhich
subprocesscheck_outputr   
decompress)datas    7/opt/python-3.12.12/usr/lib/python3.12/test/test_bz2.pyext_decompressr      sC    ""6<<	#:;&&	{$??~~d##    c            	          e Zd Z	 g dZdj	                  e      ZdZdZdZdZ	 e
d      Z ej                  ej                  j	                   ej                  ej                  j!                  e            d            D ]8  Z eed	      5 Ze	ej+                   ee      e	d
       z  Z	d
d
d
       e	dkD  s8 n ej1                  ed      Zd Zd Zy
# 1 sw Y   ,xY w)BaseTest)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                 f    t        j                         \  }| _        t        j                  |       y N)tempfilemkstempfilenameosclose)selffds     r   setUpzBaseTest.setUpR   s"    $,,.DM
r   c                 .    t        | j                         y r%   )r
   r(   r+   s    r   tearDownzBaseTest.tearDownV   s    t}}r   )__name__
__module____qualname__
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-   r0    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                      e Zd Z	 dBdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1 e2jf                         d0        Z4d1 Z5d2 Z6d3 Z7d4 Z8d5 Z9d6 Z:d7 Z;d8 Z<d9 Z=d: Z>d; Z?d< Z@d= ZAd> ZBd? ZCd@ ZDyA)CBZ2FileTestc                     t        | j                  d      5 }|j                  | j                  |z         |j                  |       d d d        y # 1 sw Y   y xY w)Nwb)rC   r(   writer7   )r+   streamssuffixfs       r   createTempFilezBZ2FileTest.createTempFile]   s>    $--&!GGDII'(GGFO '&&s   0AAc                 8   | j                  t        t        d       | j                  t        t        t        j
                  d       | j                  t        t        t        j
                  d       | j                  t        t        t        j
                  d       | j                  t        t        t        j
                  d       | j                  t        t        t        j
                  d       | j                  t        t        t        j
                  dd	       y )
Ngw/^@zrxrbtr   r"   
   r   )assertRaises	TypeErrorr   
ValueErrorr)   devnullr/   s    r   testBadArgszBZ2FileTest.testBadArgsb   s    )Wg6*grzz3?*grzz4@*grzz5A*grzzK*grzzL 	)Wbjj#qAr   c                    | j                          t        | j                        5 }| j                  t        |j
                  t                      | j                  |j                         | j                         d d d        y # 1 sw Y   y xY wr%   	rR   r   r(   rZ   r[   readfloatassertEqualr6   r+   bz2fs     r   testReadzBZ2FileTest.testReadm   sZ    T]]#tiEG<TYY[$))4 $##s   ABBc                     | j                  d| j                         t        | j                        5 }| j	                  t
        |j                         d d d        y # 1 sw Y   y xY w)Nr   rO   rP   )rR   r9   r   r(   rZ   OSErrorra   rd   s     r   testReadBadFilezBZ2FileTest.testReadBadFiles   sG    Admm<T]]#tgtyy1 $##s   !AA&c                 (   | j                  d       t        | j                        5 }| j                  t        |j
                  t                      | j                  |j                         | j                  dz         d d d        y # 1 sw Y   y xY wN   rO   r`   rd   s     r   testReadMultiStreamzBZ2FileTest.testReadMultiStreamx   sc    A&T]]#tiEG<TYY[$))a-8 $##s   ABBc                    t         j                  }t        | j                        t         _        	 | j	                  d       t        | j                        5 }| j                  t        |j                  t                      | j                  |j                         | j                  dz         d d d        |t         _        y # 1 sw Y   xY w# |t         _        w xY wrl   )_compressionBUFFER_SIZElenr7   rR   r   r(   rZ   r[   ra   rb   rc   r6   )r+   buffer_sizere   s      r   testReadMonkeyMultiStreamz%BZ2FileTest.testReadMonkeyMultiStream~   s     #..#&tyy> 	3*'4!!)TYY@  dii!m< ( (3L$	 (' (3L$s$   'C AC.C CC Cc                     | j                  | j                         t        | j                        5 }| j	                  |j                         | j                         d d d        y # 1 sw Y   y xY w)N)rP   rR   r9   r   r(   rc   ra   r6   rd   s     r   testReadTrailingJunkz BZ2FileTest.testReadTrailingJunk   sK    4==1T]]#tTYY[$))4 $##s   +A&&A/c                     | j                  d| j                         t        | j                        5 }| j	                  |j                         | j                  dz         d d d        y # 1 sw Y   y xY w)Nrm   rh   rw   rd   s     r   testReadMultiStreamTrailingJunkz+BZ2FileTest.testReadMultiStreamTrailingJunk   sQ    Admm<T]]#tTYY[$))a-8 $##s   .A**A3c                    | j                          t        | j                        5 }| j                  t        |j
                  t                      | j                  |j                  d      d       d d d        y # 1 sw Y   y xY w)Nr   r   )rR   r   r(   rZ   r[   ra   rb   rc   rd   s     r   	testRead0zBZ2FileTest.testRead0   sX    T]]#tiEG<TYYq\3/ $##s   AA::Bc                     | j                          t        | j                        5 }d}	 |j                  d      }|sn||z  }| j	                  || j
                         d d d        y # 1 sw Y   y xY w)Nr   rW   rR   r   r(   ra   rc   r6   r+   re   textstrs       r   testReadChunk10zBZ2FileTest.testReadChunk10   sg    T]]#tDiim	 
 T499- $##s   :A))A2c                     | j                  d       t        | j                        5 }d}	 |j                  d      }|sn||z  }| j	                  || j
                  dz         d d d        y # 1 sw Y   y xY w)Nrm   rn   r   rW   r~   r   s       r   testReadChunk10MultiStreamz&BZ2FileTest.testReadChunk10MultiStream   sp    A&T]]#tDiim	 
 T499q=1 $##s   =A..A7c                     | j                          t        | j                        5 }| j                  |j	                  d      | j
                  d d        d d d        y # 1 sw Y   y xY w)Nd   )rR   r   r(   rc   ra   r6   rd   s     r   testRead100zBZ2FileTest.testRead100   sJ    T]]#tTYYs^TYYt_= $##   /AA'c                 v   | j                          t        | j                        5 }|j                         }| j	                  t        |      d       | j                  | j                  j                  |             | j                  |j                         | j                         d d d        y # 1 sw Y   y xY wNr   )rR   r   r(   peekassertNotEqualrs   
assertTruer6   
startswithrc   ra   )r+   re   pdatas      r   testPeekzBZ2FileTest.testPeek   s|    T]]#tIIKEE
A.OODII0078TYY[$))4	 $##s   B B//B8c                    | j                          t        | j                        5 }d}t        |      }| j	                  |j                  |      |       | j	                  || j                  d |        t        | j                        |z
  }t        t        | j                              }| j	                  |j                  |      |       | j	                  |d | | j                  | d         d d d        y # 1 sw Y   y xY w)N   )rR   r   r(   r;   rc   rE   r6   rs   )r+   re   nbs       r   testReadIntoz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C77D c                    | j                          t        | j                        5 }| j                  t        |j
                  d        | j                  D ]"  }| j                  |j                         |       $ 	 d d d        y # 1 sw Y   y xY wr%   rR   r   r(   rZ   r[   readliner4   rc   r+   re   lines      r   testReadLinezBZ2FileTest.testReadLine   sb    T]]#ti=  $7 ( $##s   ABBc                 (   | j                  d       t        | j                        5 }| j                  t        |j
                  d        | j                  dz  D ]"  }| j                  |j                         |       $ 	 d d d        y # 1 sw Y   y xY wrl   r   r   s      r   testReadLineMultiStreamz#BZ2FileTest.testReadLineMultiStream   sl    A&T]]#ti=!+  $7 , $##s   ABBc                    | j                          t        | j                        5 }| j                  t        |j
                  d        | j                  |j                         | j                         d d d        y # 1 sw Y   y xY wr%   rR   r   r(   rZ   r[   	readlinesrc   r4   rd   s     r   testReadLineszBZ2FileTest.testReadLines   sY    T]]#ti>T^^-t? $##s   AA;;Bc                    | j                  d       t        | j                        5 }| j                  t        |j
                  d        | j                  |j                         | j                  dz         d d d        y # 1 sw Y   y xY wrl   r   rd   s     r   testReadLinesMultiStreamz$BZ2FileTest.testReadLinesMultiStream   sc    A&T]]#ti>T^^-t/BC $##s   AB  B	c                     | j                          t        | j                        5 }| j                  t	        t        |            | j                         d d d        y # 1 sw Y   y xY wr%   rR   r   r(   rc   listiterr4   rd   s     r   testIteratorzBZ2FileTest.testIterator   sE    T]]#tT$t*-t? $##r   c                     | j                  d       t        | j                        5 }| j                  t	        t        |            | j                  dz         d d d        y # 1 sw Y   y xY wrl   r   rd   s     r   testIteratorMultiStreamz#BZ2FileTest.testIteratorMultiStream   sO    A&T]]#tT$t*-t/BC $##s   2A##A,c                     | j                          t        | j                        }|j                          | j	                  t
        t        |       | j	                  t
        |j                         y r%   )rR   r   r(   r*   rZ   r\   nextr   rd   s     r   testClosedIteratorDeadlockz&BZ2FileTest.testClosedIteratorDeadlock   sK    t}}%

*dD1*dnn5r   c                    t        | j                  d      5 }| j                  t        |j                         |j	                  | j
                         d d d        t        | j                  d      5 }| j                  t        |j                               | j
                         d d d        y # 1 sw Y   \xY w# 1 sw Y   y xY w)Nwr    
r   r(   rZ   r[   rN   r6   rC   rc   r   ra   r+   re   rQ   s      r   	testWritezBZ2FileTest.testWrite   s    T]]C(Di4JJtyy! ) $--&!^AFFH5tyyA '& )( '&s   <B.14B:.B7:Cc                    t        | j                  d      5 }d}	 | j                  |dz  |dz   dz   }|sn|j                  |       |dz  }2	 d d d        t	        | j                  d      5 }| j                  t        |j                               | j                         d d d        y # 1 sw Y   \xY w# 1 sw Y   y xY w)Nr   r   rW   r!   r    )r   r(   r6   rN   rC   rc   r   ra   )r+   re   r   r   rQ   s        r   testWriteChunks10zBZ2FileTest.testWriteChunks10   s    T]]C(DAii"ac2X.

3Q   ) $--&!^AFFH5tyyA '& )( '&s   6B),4B5)B25B>c                 l   t         j                  | j                  d      }t        | j                  dd      5 }|j                  | j                         d d d        t        | j                  d      5 }| j                  |j                         |       d d d        y # 1 sw Y   IxY w# 1 sw Y   y xY w)Nrm   r"   r   r    )	r   rG   r6   r   r(   rN   rC   rc   ra   )r+   expectedre   rQ   s       r    testWriteNonDefaultCompressLevelz,BZ2FileTest.testWriteNonDefaultCompressLevel
  s}    <<		<;T]]Cq9TJJtyy! :$--&!QVVXx0 '& :9&&s   B4!B*B'*B3c                    t        | j                  d      5 }| j                  t        |j                         |j	                  | j
                         d d d        | j                  t        j                  dg       t        | j                  d      5 }| j                  t        |j                               | j                         d d d        y # 1 sw Y   ~xY w# 1 sw Y   y xY w)Nr   ar    )r   r(   rZ   r[   
writelinesr4   r\   rC   rc   r   ra   r6   r   s      r   testWriteLineszBZ2FileTest.testWriteLines  s    T]]C(Di9OODOO, )
 	*doou=$--&!^AFFH5tyyA '& )( '&s   <C4CCC%c                 X   t        | j                  d      5 }|j                  d       d d d        t        | j                  d      5 }| j                  t        |j                  d       | j                  t        |j
                  dg       d d d        y # 1 sw Y   lxY w# 1 sw Y   y xY w)Nr   s   abcrX      a)r   r(   rN   rZ   ri   r   rd   s     r   testWriteMethodsOnReadOnlyFilez*BZ2FileTest.testWriteMethodsOnReadOnlyFile  s}    T]]C(DJJv ) T]]C(Dgtzz48gt? )( )( )(s   BAB B B)c                 ^   t        | j                  d      5 }| j                  t        |j                         |j	                  | j
                         d d d        t        | j                  d      5 }| j                  t        |j                         |j	                  | j
                         d d d        t        | j                  d      5 }| j                  t        |j                               | j
                  dz         d d d        y # 1 sw Y   xY w# 1 sw Y   kxY w# 1 sw Y   y xY w)Nr   r   r       r   r   s      r   
testAppendz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                 4   | j                          t        | j                        5 }| j                  t        |j
                         |j                  d       | j                  |j                         | j                  dd         d d d        y # 1 sw Y   y xY wN   )	rR   r   r(   rZ   r[   seekrc   ra   r6   rd   s     r   testSeekForwardzBZ2FileTest.testSeekForward-  sg    T]]#ti3IIcNTYY[$))CD/: $##s   ABBc                 d   | j                  d       t        | j                        5 }| j                  t        |j
                         |j                  t        | j                        dz          | j                  |j                         | j                  dd         d d d        y # 1 sw Y   y xY w)Nr   rn   r   )
rR   r   r(   rZ   r[   r   rs   r6   rc   ra   rd   s     r   testSeekForwardAcrossStreamsz(BZ2FileTest.testSeekForwardAcrossStreams4  sz    A&T]]#ti3IIc$))ns*+TYY[$))CD/: $##s   A5B&&B/c                    | j                          t        | j                        5 }|j                  d       |j	                  dd       | j                  |j                         | j                  dd         d d d        y # 1 sw Y   y xY wNi  jr!   i^  )rR   r   r(   ra   r   rc   r6   rd   s     r   testSeekBackwardszBZ2FileTest.testSeekBackwards;  sb    T]]#tIIcNIIdATYY[$))GH*=> $##s   AB  B	c                    | j                  d       t        | j                        5 }t        | j                        dz   }|dkD  r#|t        |j                  |            z  }|dkD  r#|j                  dd       | j                  |j                         | j                  dd  | j                  z          d d d        y # 1 sw Y   y xY w)Nr   rn   r   r   r   r!   i)rR   r   r(   rs   r6   ra   r   rc   )r+   re   readtos      r   testSeekBackwardsAcrossStreamsz*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                 "   | j                          t        | j                        5 }|j                  dd       | j	                  |j                         | j                  t        | j                        dz
  d         d d d        y # 1 sw Y   y xY w)Nr   r   r   )rR   r   r(   r   rc   ra   r6   rs   rd   s     r   testSeekBackwardsFromEndz$BZ2FileTest.testSeekBackwardsFromEndK  se    T]]#tIIdATYY[$))C		N34F4G*HI $##s   ABBc                     | j                  d       t        | j                        5 }|j                  dd       | j	                  |j                         | j                  dz  dd         d d d        y # 1 sw Y   y xY w)Nr   rn   i)rR   r   r(   r   rc   ra   r6   rd   s     r   %testSeekBackwardsFromEndAcrossStreamsz1BZ2FileTest.testSeekBackwardsFromEndAcrossStreamsQ  s`    A&T]]#tIIeQTYY[499q=%&*AB $##s   AA44A=c                 @   | j                          t        | j                        5 }|j                  d       | j	                  |j                         t        | j                               | j	                  |j                         d       d d d        y # 1 sw Y   y xY wNI r   	rR   r   r(   r   rc   tellrs   r6   ra   rd   s     r   testSeekPostEndzBZ2FileTest.testSeekPostEndW  sh    T]]#tIIfTYY[#dii.9TYY[#. $##s   A%BBc                 J   | j                  d       t        | j                        5 }|j                  d       | j	                  |j                         t        | j                        dz         | j	                  |j                         d       d d d        y # 1 sw Y   y xY wNrm   rn   r   r   r   rd   s     r   testSeekPostEndMultiStreamz&BZ2FileTest.testSeekPostEndMultiStream^  sr    A&T]]#tIIfTYY[#dii.1*<=TYY[#. $##s   A(BB"c                 b   | j                          t        | j                        5 }|j                  d       |j                  d       | j	                  |j                         t        | j                               | j	                  |j                         d       d d d        y # 1 sw Y   y xY wr   r   rd   s     r   testSeekPostEndTwicez BZ2FileTest.testSeekPostEndTwicee  st    T]]#tIIfIIfTYY[#dii.9TYY[#.	 $##s   A6B%%B.c                 l   | j                  d       t        | j                        5 }|j                  d       |j                  d       | j	                  |j                         t        | j                        dz         | j	                  |j                         d       d d d        y # 1 sw Y   y xY wr   r   rd   s     r   testSeekPostEndTwiceMultiStreamz+BZ2FileTest.testSeekPostEndTwiceMultiStreamm  s~    A&T]]#tIIfIIfTYY[#dii.1*<=TYY[#.	 $##s   A9B**B3c                 .   | j                          t        | j                        5 }|j                  d       | j	                  |j                         d       | j	                  |j                         | j                         d d d        y # 1 sw Y   y xY w)Nr   r   rR   r   r(   r   rc   r   ra   r6   rd   s     r   testSeekPreStartzBZ2FileTest.testSeekPreStartu  sc    T]]#tIIdOTYY[!,TYY[$))4 $##s   ABBc                 8   | j                  d       t        | j                        5 }|j                  d       | j	                  |j                         d       | j	                  |j                         | j                  dz         d d d        y # 1 sw Y   y xY w)Nr   rn   r   r   r   rd   s     r   testSeekPreStartMultiStreamz'BZ2FileTest.testSeekPreStartMultiStream|  sl    A&T]]#tIIdOTYY[!,TYY[$))a-8 $##s   ABBc                 z   | j                          t        | j                  d      5 }t        |      }	 | j	                  |j                         |j                                |j                          	 d d d        | j                  t        j
                         y # |j                          w xY w# 1 sw Y   ?xY w)Nr    )	rR   rC   r(   r   rc   filenor*   rZ   r\   )r+   rawfre   s      r   
testFilenozBZ2FileTest.testFileno  s    $--&$4=D  >

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

 '&s"   B1.B"B1B..B11B:c                 t   t        t        | j                              }	 | j                  |j	                                |j                          | j                  |j	                                |j                          | j                  t        |j                         t        t               d      }	 | j                  |j	                                |j                          | j                  t        |j                         t        | j                        }d |_        t        |      }	 | j                  |j	                                |j                          | j                  t        |j                         y # |j                          w xY w# |j                          w xY w# |j                          w xY w)Nr   c                       y)NFrI   rI   r   r   <lambda>z*BZ2FileTest.testSeekable.<locals>.<lambda>  s    ur   )
r   r   r7   r   seekablera   r*   rZ   r\   assertFalse)r+   re   srcs      r   testSeekablez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   t        t        | j                              }	 | j                  |j	                                |j                          | j                  |j	                                |j                          | j                  t        |j                         t        t               d      }	 | j                  |j	                                |j                          | j                  t        |j                         y # |j                          w xY w# |j                          w xY wNr   )
r   r   r7   r   readablera   r*   rZ   r\   r   rd   s     r   testReadablez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   t        t        | j                              }	 | j                  |j	                                |j                          | j                  |j	                                |j                          | j                  t        |j                         t        t               d      }	 | j                  |j	                                |j                          | j                  t        |j                         y # |j                          w xY w# |j                          w xY wr   )
r   r   r7   r   writablera   r*   rZ   r\   r   rd   s     r   testWritablezBZ2FileTest.testWritable  s    wtyy)*	T]]_-IIKT]]_-JJL*dmm4wy#&	OODMMO,JJL*dmm4 JJL JJLr   c                 p    | j                          t        d      D ]  }t        | j                        }~ y )Ni'  )rR   ranger   r(   )r+   ios      r   testOpenDelzBZ2FileTest.testOpenDel  s-    uA&A r   c                 :    | j                  t        t        d       y )Nz/non/existent)rZ   ri   r   r/   s    r   testOpenNonexistentzBZ2FileTest.testOpenNonexistent  s    '7O<r   c                    d}t        | j                  d      5 }|j                  |       d d d        t        | j                        5 }|j	                         }d d d        | j                  dg       t        | j                        5 }t        |j	                               }d d d        | j                  dg       y # 1 sw Y   xY w# 1 sw Y   sxY w# 1 sw Y   5xY w)Ns,   BZh91AY&SYb]        !h3M<]BCe%trM   s   Test)rC   r(   rN   r   r   rc   r   )r+   r   rQ   re   linesxliness         r   testReadlinesNoNewlinez"BZ2FileTest.testReadlinesNoNewline  s    z$--&!GGDM 'T]]#tNN$E $	*T]]#t$..*+F $'+ '&## $#s#   B?C	C?CCC c                    t        | j                  d      5 }|j                  d       d d d        t        | j                  d      }|j                          	 |5  	 d d d        | j	                  d       	 t        | j                  d      5 }ddz   d d d        | j	                  d       y # 1 sw Y   xY w# 1 sw Y   ]xY w# t
        $ r Y Zw xY w# 1 sw Y   BxY w# t        $ r Y y w xY w)NrM   s   xxxr    z4__enter__ on a closed file didn't raise an exceptionr!   r   z1/0 didn't raise an exception)r   r(   rN   r*   failr\   ZeroDivisionErrorr+   rQ   s     r   testContextProtocolzBZ2FileTest.testContextProtocol  s    T]]D)QGGFO *DMM4(			N 
 IILM	7-! .
 II56# *)
  		
 .-  		s_   B,C B8C 6C CC ,B58C=C 	CCCC 	C+*C+c                 0   ddz  d}t        | j                  d      5 fd}t        |      D cg c]  }t        j                  |       }}t        j                  |      5  	 d d d        d d d        y c c}w # 1 sw Y   xY w# 1 sw Y   y xY w)N   1i   rW   rM   c                  H    t        d      D ]  } j                          y Nrm   )r   rN   )r   r   rQ   s    r   compz'BZ2FileTest.testThreading.<locals>.comp  s    qAGGDM "r   )target)r   r(   r   	threadingThreadr	   start_threads)r+   nthreadsr  r   threadsr   rQ   s        @@r   testThreadingz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                    | j                          t        | j                  d         }|dz  }t        | j                        5 }|j                  |       | j                  t        |      | j                  d   |d         | j                  |j                         | j                  |d         d d d        t        | j                        5 }|j                          | j                  t        |      | j                  d          | j                  |j                         | j                  d          d d d        t        | j                        5 }|j                          | j                  t        t        |       | j                  |j                         g        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r!   )rR   rs   r4   r   r(   ra   rc   r   r6   r   r   rZ   StopIteration)r+   linelenhalflenre   s       r   testMixedIterationAndReadsz&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&F.AF:"F+.F7:Gc                    d}d}t        | j                  d      5 }|j                  |       d d d        t        | j                  d      5 }|j                  |       d d d        t        | j                        5 }| j                  |j	                         ||z          d d d        y # 1 sw Y   {xY w# 1 sw Y   WxY w# 1 sw Y   y xY w)Ns  foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoos  barbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarr   r   )r   r(   rN   rc   ra   )r+   data1data2re   s       r   testMultiStreamOrderingz#BZ2FileTest.testMultiStreamOrdering  s    T]]C(DJJu )T]]C(DJJu )T]]#tTYY[%%-8 $#	 )(((##s#   B'B3:$B?'B03B<?Cc                 *	   t        | j                  d      5 }|j                  d       | j                  |j	                         t
               | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       | j                  |j                  d       d d d        | j                  j                  d       | j                  t        |j                         | j                  t        |j                         | j                  t        |j                         | j                  t        |j                         t        | j                  d      5 }|j                  d       | j                  |j	                         t
               | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       | j                  |j                  d       d d d        | j                  |j                  d       | j                  t        |j                         | j                  t        |j                         | j                  t        |j                         | j                  t        |j                         t        | j                  d      5 }| j                  |j                         d       | j                  |j	                         t
               | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       | j                  |j                  d       d d d        | j                  |j                  d       | j                  t              5  |j	                          d d d        | j                  t        |j                         | j                  t        |j                         | j                  t        |j                         y # 1 sw Y   xY w# 1 sw Y   =xY w# 1 sw Y   xY w# 1 sw Y   xY w	NrM      contentFTab   appendixr       contentappendix)r   r(   rN   assertIsInstancer   intassertIsr   r   r   closedrZ   r\   rc   ra   r  s     r   testOpenFilenamezBZ2FileTest.testOpenFilename  s   T]]D)QGGJ!!!((*c2MM!**,.MM!**,-MM!**,.MM!((E* * 	ahh%*ahh/*ajj1*ajj1*ajj1T]]D)QGGK !!!((*c2MM!**,.MM!**,-MM!**,.MM!((E* * 	ahh%*ahh/*ajj1*ajj1*ajj1T]]D)QQVVX'9:!!!((*c2MM!**,-MM!**,.MM!**,-MM!((E* * 	ahh%z*HHJ +*ajj1*ajj1*ajj1M *) *) *) +*s2   B2Q#B2Q0/CQ=)R	#Q-0Q:=R	Rc                 0
   t        | j                  d      5 }t        |d      5 }|j                  d       | j	                  |j                         |j                                | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       | j                  |j                  d       d d d        | j                  j                  d       | j                  t        |j
                         | j                  t        |j                         | j                  t        |j                         | j                  t        |j                         d d d        t        | j                  d      5 }t        |d      5 }|j                  d       | j	                  |j                         |j                                | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       | j                  |j                  d       d d d        | j                  j                  d       | j                  t        |j
                         | j                  t        |j                         | j                  t        |j                         | j                  t        |j                         d d d        t        | j                  d      5 }t        |d      5 }| j	                  |j                         d       | j	                  |j                         |j                                | j                  |j                         d       | j                  |j                         d       | j                  |j                         d       | j                  |j                  d       d d d        | j                  j                  d       | j                  t              5  |j                          d d d        | j                  t        |j                         | j                  t        |j                         | j                  t        |j                         d d d        y # 1 sw Y   xY w# 1 sw Y   KxY w# 1 sw Y   qxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY wr  )rC   r(   r   rN   rc   r   r&  r   r   r   r'  rZ   r\   ra   )r+   rawrQ   s      r   testOpenFileWithNamez BZ2FileTest.testOpenFileWithNameD  s[   $--&#d#q
#  SZZ\:ajjlE2ajjlD1ajjlE2ahh. $ MM!((D)j!((3j!**5j!**5j!**5 ' $--&#d#q$  SZZ\:ajjlE2ajjlD1ajjlE2ahh. $ MM!((D)j!((3j!**5j!**5j!**5 ' $--&#d#q  +=>  SZZ\:ajjlD1ajjlE2ajjlD1ahh. $ MM!((D)"":.
 /j!**5j!**5j!**5 '&7 $# '& $# '& $# /. '&s   SB<S  B$S"S'/B<S+B$S'-T:CS49T>T A(T S
	SSS$	S''S14S=	9T T		TTc                 v   t               }t        |d      5 }|j                  d       | j                  t        j
                  |j                         d d d        | j                  t        j                         t        |d      5 }|j                  d       | j                  t        j
                  |j                         d d d        | j                  t        |j                         |j                  d       t        |d      5 }| j                  |j                         d       | j                  t        j
                  |j                         d d d        | j                  t              5  |j                          d d d        y # 1 sw Y   9xY w# 1 sw Y   xY w# 1 sw Y   QxY w# 1 sw Y   y xY w)NrM   r   r!  r"  r   r    r#  )r   r   rN   rZ   ioUnsupportedOperationr   r\   r   rc   ra   )r+   biorQ   s      r   testOpenFileWithoutNamez#BZ2FileTest.testOpenFileWithoutNamep  s5   iS$1GGJb55qxx@   	*ahh/S$1GGK b55qxx@   	*ahh/S$1QVVX'9:b55qxx@   z*HHJ +*  
     +*s0   <F
<FAF#0F/
FF #F,/F8c                    t        j                  | j                  t         j                  t         j                  z  t         j
                  z        }t        |d      5 }t        |d      5 }|j                  d       | j                  |j                         |j                                d d d        | j                  t        j                         d d d        t        j                  | j                  t         j                  t         j                  z  t         j                  z        }t        |d      5 }t        |d      5 }|j                  d       | j                  |j                         |j                                d d d        | j                  t        j                         d d d        t        j                  | j                  t         j                        }t        |d      5 }t        |d      5 }| j                  |j                         d       | j                  |j                         |j                                d d d        | j                  t              5  j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   !xY w# 1 sw Y   xY w# 1 sw Y   txY w# 1 sw Y   RxY w# 1 sw Y   y xY w)NrM   r   r!  r"  r    r#  )r)   rC   r(   O_WRONLYO_CREATO_TRUNCr   rN   rc   r   rZ   r\   O_APPENDO_RDONLYra   )r+   r,   r*  rQ   s       r   testOpenFileWithIntNamez#BZ2FileTest.testOpenFileWithIntName  s   WWT]]BKK"**$<rzz$IJ"d^sd#q
#  SZZ\: $ j!((3	  WWT]]BKK"**$<r{{$JK"d^sd#q$  SZZ\: $ j!((3	  WWT]]BKK0"d^sd#q  +=>  SZZ\: $ "":.
 /	 ^ $# ^ $# ^ $# /.	 ^s   J*A J*(J6J/A J"(J/-K:AJ<	K&K7KJ	JJ"J,	'J//J9<K	KK	KKc                    | j                   }t        j                  |      }t        |d      5 }|j	                  | j
                         d d d        t        |d      5 }| j                  |j                         | j
                         d d d        t        |d      5 }| j                  |j                         | j
                         d d d        y # 1 sw Y   xY w# 1 sw Y   UxY w# 1 sw Y   y xY wNrM   r    )r(   r)   fsencoder   rN   r7   rc   ra   )r+   str_filenamebytes_filenamerQ   s       r   testOpenBytesFilenamez!BZ2FileTest.testOpenBytesFilename  s    }}\2^T*aGGDII +^T*aQVVXtyy1 + \4(AQVVXtyy1 )( +*** )(s#   C+C+C)CC&)C2c                 <   t        | j                        }t        |d      5 }|j                  | j                         d d d        t        |d      5 }| j                  |j                         | j                         d d d        y # 1 sw Y   IxY w# 1 sw Y   y xY wr9  )r   r(   r   rN   r7   rc   ra   )r+   r(   rQ   s      r   testOpenPathLikeFilenamez$BZ2FileTest.testOpenPathLikeFilename  so    DMM*Xt$GGDII %Xt$QVVXtyy1 %$ %$$$s   B+BBBc                    	 t         j                  dt        d      z  d      }| j                  t	        |      t
        j                         t        t        |            }| j                  |j                  d      d       dt        z   }| j                  |j                  j                  j                         |d       y )N    g    >A	   r"   r!   z)Excessive amount of data was decompressed)r   rG   r%  
assertLessrs   rq   rr   r   r   rc   ra   r   assertLessEqual_bufferr*  r   )r+   bombdecomp
max_decomps       r   testDecompressLimitedz!BZ2FileTest.testDecompressLimited  s    ;||ECH,A|>D	<#;#;<'Q/,,
V^^//446
7	9r   c                 t   t        | j                        5 }t        |      5 }| j                  t        |j
                  t                      | j                  |j                         | j                         d d d        | j                  |j                         d d d        y # 1 sw Y   -xY w# 1 sw Y   y xY wr%   )r   r7   r   rZ   r[   ra   rb   rc   r6   r   r'  r+   r/  re   s      r   testReadBytesIOzBZ2FileTest.testReadBytesIO  s{    TYY3!!)TYY@  dii8  SZZ(	    s#   B.AB"6#B."B+	'B..B7c                    t        | j                        5 }t        |      5 }|j                         }| j	                  t        |      d       | j                  | j                  j                  |             | j                  |j                         | j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr   )r   r7   r   r   r   rs   r   r6   r   rc   ra   )r+   r/  re   r   s       r   testPeekBytesIOzBZ2FileTest.testPeekBytesIO  s    TYY3		##CJ2		 4 4U ;<  dii8	     s#   B?B B3"B?3B<	8B??Cc                    t               5 }t        |d      5 }| j                  t        |j                         |j	                  | j
                         d d d        | j                  t        |j                               | j
                         | j                  |j                         d d d        y # 1 sw Y   `xY w# 1 sw Y   y xY wr   )r   r   rZ   r[   rN   r6   rc   r   getvaluer   r'  rK  s      r   testWriteBytesIOzBZ2FileTest.testWriteBytesIO  s    Y#c"d!!)TZZ8

499% # ^CLLN;TYYGSZZ( Y"" Ys#   B?<B3AB?3B<	8B??Cc                 T   t        | j                        5 }t        |      5 }| j                  t        |j
                         |j                  d       | j                  |j                         | j                  dd         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr   )	r   r7   r   rZ   r[   r   rc   ra   r6   rK  s      r   testSeekForwardBytesIOz"BZ2FileTest.testSeekForwardBytesIO  st    TYY3!!)TYY7		#  diio>     s#   BABBB	BB'c                 8   t        | j                        5 }t        |      5 }|j                  d       |j	                  dd       | j                  |j                         | j                  dd         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr   )r   r7   r   ra   r   rc   r6   rK  s      r   testSeekBackwardsBytesIOz$BZ2FileTest.testSeekBackwardsBytesIO  so    TYY3		#		$"  dii.AB     s#   BAB3BB		BBc                 ~   | j                   d d }t        t        |            5 }| j                  t        |j
                         d d d        t        t        |            5 }| j                  |j                  t        | j                              | j                         | j                  t        |j
                  d       d d d        t        d      D ]C  }t        t        |d |             5 }| j                  t        |j
                  d       d d d        E y # 1 sw Y   xY w# 1 sw Y   gxY w# 1 sw Y   hxY w)Nr!      )
r7   r   r   rZ   EOFErrorra   rc   rs   r6   r   )r+   	truncatedrQ   r   s       r   test_read_truncatedz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'."D3D$'D03D<	c                 8   t        j                   dg d      }t        |      |j                  z  }t        t	               d      5 }| j                  |j                  |      |       | j                  |j                         |       d d d        y # 1 sw Y   y xY w)NQ)r!   r   rY      rm   r   )arrayrs   itemsizer   r   rc   rN   r   )r+   qLENGTHrQ   s       r   test_issue44439zBZ2FileTest.test_issue44439  sl    KK_-Q!**$WY$QWWQZ0QVVXv. %$$s   ABBN)r!   r   )Er1   r2   r3   rR   r^   rf   rj   ro   ru   rx   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  r  r	   requires_working_threadingr  r  r  r(  r+  r0  r7  r=  r?  rI  rL  rN  rQ  rS  rU  r[  rc  rI   r   r   rK   rK   Z   sp   
	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( 1002
 3
3"	9'2R*6X&.	22	9)9)?C7/r   rK   c                   h    e Zd Zd Zd Zd Zej                   ee	dz   d      d               Z
d Zy	)
BZ2CompressorTestc                     t               }| j                  t        |j                         |j                  | j                        }||j                         z  }| j                  t        |      | j                         y r%   )r   rZ   r[   rG   r6   flushrc   r   r+   bz2cr   s      r   testCompresszBZ2CompressorTest.testCompress  sX    )T]]3}}TYY'

-tyy9r   c                     t               }|j                  d      }||j                         z  }| j                  || j                         y Nr   )r   rG   rh  rc   r8   ri  s      r   testCompressEmptyStringz)BZ2CompressorTest.testCompressEmptyString  s;    }}S!

t/r   c                     t               }d}d}	 | j                  |dz  |dz   dz   }|sn||j                  |      z  }|dz  }5||j                         z  }| j	                  t        |      | j                         y )Nr   r   rW   r!   )r   r6   rG   rh  rc   r   )r+   rj  r   r   r   s        r   testCompressChunks10z&BZ2CompressorTest.testCompressChunks10  s    ))AbD!A#r*CDMM#&&DFA  	

-tyy9r   r   r   sizememusec                 F   t               }d|z  }	 |j                  |      }||j                         z  }d }t        j	                  |      }	 | j                  t        |      |       | j                  t        |j                  d            d       d }y # d }w xY w# d }w xY w)N   xr   )r   rG   rh  r   r   rc   rs   strip)r+   rr  rj  r   
compresseds        r   testCompress4Gz BZ2CompressorTest.testCompress4G  s     d{	t,J$**,&JD~~j)	SY-SD!12A6D D Ds   $B AB BB c                     t        t        j                  dz         D ]>  }| j                  t              5  t        j
                  t               |       d d d        @ y # 1 sw Y   KxY wNr!   )r   pickleHIGHEST_PROTOCOLrZ   r[   dumpsr   r+   protos     r   
testPicklezBZ2CompressorTest.testPickle"  sI    622Q67E""9-]_e4 .- 8--   AA(	N)r1   r2   r3   rk  rn  rp  r   skip_if_pgo_taskr   r   rx  r  rI   r   r   rf  rf    sC    :0: S3Yq) *  5r   rf  c                       e Zd Zd Zd Zd Zd Zd Zej                   e
edz   d      d	               Zd
 Zd Zd Zd Zd Zd Zej&                  d        Zd Zy)BZ2DecompressorTestc                 :    | j                  t        t        d       y )N*   )rZ   r[   r   r/   s    r   test_Constructorz$BZ2DecompressorTest.test_Constructor)  s    )_b9r   c                     t               }| j                  t        |j                         |j                  | j                        }| j                  || j                         y r%   )r   rZ   r[   r   r7   rc   r6   r+   bz2dr   s      r   testDecompressz"BZ2DecompressorTest.testDecompress,  sD     )T__5tyy)tyy)r   c                     t               }d}d}	 | j                  |dz  |dz   dz   }|sn||j                  |      z  }|dz  }5| j                  || j                         y )Nr   r   rW   r!   )r   r7   r   rc   r6   )r+   r  r   r   r   s        r   testDecompressChunks10z*BZ2DecompressorTest.testDecompressChunks102  sp     ))AbD!A#r*CDOOC((DFA  	tyy)r   c                     t               }d}|j                  | j                  |z         }| j                  || j                         | j                  |j
                  |       y )Ns   this is unused data)r   r   r7   rc   r6   unused_data)r+   r  r  r   s       r   testDecompressUnusedDataz,BZ2DecompressorTest.testDecompressUnusedData>  sP     ,tyy45tyy)));7r   c                     t               }|j                  | j                        }| j                  t        |j                  d       | j                  t        |j                  d       y )Ns   anythingr   )r   r   r7   rZ   rY  r  s      r   testEOFErrorz BZ2DecompressorTest.testEOFErrorE  sH     tyy)(DOO[A(DOOS9r   r   gffffff
@rq  c                    t        d|      }t        j                  |      }	 ||dz
  |z  dz   z  }t        j	                  |      }t               }|j                  |      }| j                  ||k(         d }d }d }y # d }d }d }w xY w)Ni   r!   )minrandom	randbytesr   rG   r   r   r   )r+   rr  	blocksizeblockr   rw  r  decompresseds           r   testDecompress4Gz$BZ2DecompressorTest.testDecompress4GK  s     ($/	  +		 T!V	1A56Dd+J"$D??:6LOOLD01DJL DJLs   AA< <Bc                     t        t        j                  dz         D ]>  }| j                  t              5  t        j
                  t               |       d d d        @ y # 1 sw Y   KxY wrz  )r   r{  r|  rZ   r[   r}  r   r~  s     r   r  zBZ2DecompressorTest.testPickle\  sJ    622Q67E""9-_.6 .- 8--r  c                    t               }d}g }t        | j                        dz
  }|j                  |j	                  | j                  d | |             | j                  |j                         | j                  t        |d         |       |j                  |j	                  d|             | j                  |j                         | j                  t        |d         |       |j                  |j	                  | j                  |d  |             | j                  t        |d         |       |j                  sM|j                  |j	                  d|             | j                  t        |d         |       |j                  sMdj                  |      }| j                  || j                         | j                  |j                  d       y )Nr   @   
max_lengthr   )r   rs   rH   appendr   r   needs_inputrc   rD  eofr5   r<   r  )r+   bzdr  outlen_s        r   testDecompressorChunksMaxsizez1BZ2DecompressorTest.testDecompressorChunksMaxsizea  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dmm,#.r   c                    t               }g }| j                  |j                  | j                  d d d      d       |j	                  |j                  dd             |j	                  |j                  | j                  dd d             |j	                  |j                  | j                  dd               | j                  dj                  |      | j                         y )Nr   r   r  r   r   i      r   rc   r   r7   r  r5   r6   r+   r  r  s      r   test_decompressor_inputbuf_1z0BZ2DecompressorTest.test_decompressor_inputbuf_1  s      			$334 ( 67:	<
 	

3>>#q)* 	

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

3>>$))CD/23#		2r   c                 $   t               }g }| j                  |j                  | j                  d d d      d       |j	                  |j                  d             |j	                  |j                  | j                  dd d             |j	                  |j                  | j                  dd d             |j	                  |j                  | j                  dd               | j                  dj                  |      | j                         y )N   r   r  r   i  r   ,  r  r  s      r   test_decompressor_inputbuf_2z0BZ2DecompressorTest.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                    t               }g }|j                  |j                  | j                  d d d             |j                  |j                  | j                  dd d             |j                  |j                  | j                  dd               | j	                  dj                  |      | j                         y )Nr  rm   r  r   )r   r  r   r7   rc   r5   r6   r  s      r   test_decompressor_inputbuf_3z0BZ2DecompressorTest.test_decompressor_inputbuf_3  s      	

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

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

3>>$))CD/23#		2r   c                     t               }| j                  t        |j                  | j                  dz         | j                  t        |j                  | j                  dz         y )N   )r   rZ   	Exceptionr   r9   )r+   r  s     r   test_failurez BZ2DecompressorTest.test_failure  sH    )S^^T]]R5GH)S^^T]]R5GHr   c                     t        j                  t        d      }t               } |       }t	        d      D ]  }|j                           | j                   |       |z
  dd       y )Ngettotalrefcountr   r   rW   )delta)r   get_attributesysr   r   __init__assertAlmostEqual)r+   r  r  refs_beforer   s        r   test_refleaks_in___init__z-BZ2DecompressorTest.test_refleaks_in___init__  s[    "006HI&(sALLN /1K?"Mr   c                     | j                  t        j                  t              j                  t	                     d       y rm  )rc   r   __new__r   bytesr/   s    r   (test_uninitialized_BZ2Decompressor_crashz<BZ2DecompressorTest.test_uninitialized_BZ2Decompressor_crash  s+    00A#EG,c	3r   N)r1   r2   r3   r  r  r  r  r  r   r  r   r   r  r  r  r  r  r  r  refcount_testr  r  rI   r   r   r  r  (  s    :*
*8: S3Ys+  ,  7
/>3,3*3 I N N3r   r  c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)CompressDecompressTestc                     t         j                  | j                        }| j                  t	        |      | j                         y r%   )r   rG   r6   rc   r   )r+   r   s     r   rk  z#CompressDecompressTest.testCompress  s-    ||DII&-tyy9r   c                 f    t         j                  d      }| j                  || j                         y rm  )r   rG   rc   r8   r+   r   s     r   rn  z.CompressDecompressTest.testCompressEmptyString  s$    ||C t/r   c                 z    t         j                  | j                        }| j                  || j                         y r%   r   r   r7   rc   r6   r  s     r   r  z%CompressDecompressTest.testDecompress  s(    ~~dii(tyy)r   c                 R    t         j                  d      }| j                  |d       y rm  )r   r   rc   r  s     r   testDecompressEmptyz*CompressDecompressTest.testDecompressEmpty  s     ~~c"s#r   c                 f    t         j                  | j                        }| j                  |d       y rm  )r   r   r8   rc   r  s     r   testDecompressToEmptyStringz2CompressDecompressTest.testDecompressToEmptyString  s$    ~~doo.s#r   c                 h    | j                  t        t        j                  | j                  d d        y )NrW  )rZ   r\   r   r   r7   r/   s    r   testDecompressIncompletez/CompressDecompressTest.testDecompressIncomplete  s"    *cnndiioFr   c                 b    | j                  t        t        j                  | j                         y r%   )rZ   ri   r   r   r9   r/   s    r   testDecompressBadDataz,CompressDecompressTest.testDecompressBadData  s    '3>>4==Ar   c                     t         j                  | j                  dz        }| j                  || j                  dz         y r  r  r  s     r   testDecompressMultiStreamz0CompressDecompressTest.testDecompressMultiStream  s0    ~~dii!m,tyy1}-r   c                     t         j                  | j                  | j                  z         }| j	                  || j
                         y r%   r   r   r7   r9   rc   r6   r  s     r   testDecompressTrailingJunkz1CompressDecompressTest.testDecompressTrailingJunk  s1    ~~dii$--78tyy)r   c                     t         j                  | j                  dz  | j                  z         }| j	                  || j
                  dz         y r  r  r  s     r   %testDecompressMultiStreamTrailingJunkz<CompressDecompressTest.testDecompressMultiStreamTrailingJunk  s9    ~~dii!mdmm;<tyy1}-r   N)r1   r2   r3   rk  rn  r  r  r  r  r  r  r  r  rI   r   r   r  r    s6    :0*$$GB.*.r   r  c                   J    e Zd Z	 d Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)OpenTestc                 ,    t        j                  |i |S r%   )r   rC   )r+   argskwargss      r   rC   zOpenTest.open  s    xx(((r   c                    dD ]  }|dk(  rt        | j                         | j                  | j                  |      5 }|j                  | j                         d d d        t        | j                  d      5 }t        |j                               }| j                  || j                         d d d        | j                  | j                  d      5 }| j                  |j                         | j                         d d d        | j                  | j                  d      5 }|j                  | j                         d d d        t        | j                  d      5 }t        |j                               }| j                  || j                  dz         d d d         y # 1 sw Y   HxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)N)rM   xbr  r    r!  r   r
   r(   rC   rN   r6   r   ra   rc   r+   moderQ   	file_datas       r   test_binary_modeszOpenTest.test_binary_modes  sF    Dt|t}}%4==$/1		" 0dmmT*a*16684	  DII6 + 4==$/1  4995 04==$/1		" 0dmmT*a*16684	  DIIM: +* ! 0/** 0///**;   F76F,+F9 G9GF)	,F6	9G	G	G	c                    dD ]  }|dk(  rt        | j                         | j                  | j                  |      5 }|j                  | j                         d d d        t        | j                  d      5 }t        |j                               }| j                  || j                         d d d        | j                  | j                  d      5 }| j                  |j                         | j                         d d d        | j                  | j                  d      5 }|j                  | j                         d d d        t        | j                  d      5 }t        |j                               }| j                  || j                  dz         d d d         y # 1 sw Y   HxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)N)r   xr  r    rX   r   r   r  r  s       r   test_implicit_binary_modesz#OpenTest.test_implicit_binary_modes  sF   Ds{t}}%4==$/1		" 0dmmT*a*16684	  DII6 + 4==#.!  4995 /4==#.!		" /dmmT*a*16684	  DIIM: +*  0/** /...**r  c                    | j                   j                  d      }|j                  dt        j                        }dD ]  }|dk(  rt        | j                         | j                  | j                  |d      5 }|j                  |       d d d        t        | j                  d      5 }t        |j                               j                  d      }| j                  ||       d d d        | j                  | j                  dd      5 }| j                  |j                         |       d d d        | j                  | j                  dd      5 }|j                  |       d d d        t        | j                  d      5 }t        |j                               j                  d      }| j                  ||d	z         d d d         y # 1 sw Y   BxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)
Nascii
)wtxtr  encodingr    rtatr   )r6   decodereplacer)   linesepr
   r(   rC   rN   r   ra   rc   )r+   r   text_native_eolr  rQ   r  s         r   test_text_modeszOpenTest.test_text_modes   s   yy(,,tRZZ8 Dt|t}}%4==$AQ BdmmT*a*16684;;GD	  O< + 4==$AQ  40 B4==$AQ BdmmT*a*16684;;GD	  Oa,?@ +* ! BA** BAAA**s<   :G*;G!G%G1>G=G	G"	%G.	1G:	=H	c                 l   dD ]  }t        | j                         d|v rdnd }| j                  | j                  ||      5 }	 d d d        | j                  t              5  | j                  | j                  |      5 }	 d d d        d d d         y # 1 sw Y   PxY w# 1 sw Y    xY w# 1 sw Y   xY w)N)r  r  r  tutf-8r  )r
   r(   rC   rZ   FileExistsError)r+   r  r  rQ   s       r   test_x_modezOpenTest.test_x_mode3  s    %D4==!"%+w4H4==$Ba C""?3YYt}}d3q 4 43 & CB 43 43s0   B B*=B?B*B	B'#B**B3	c                    | j                  t        | j                        d      5 }| j                  |j	                         | j
                         d d d        | j                  t        | j                        d      5 }| j                  |j	                         | j
                         d d d        | j
                  j                  d      }| j                  t        | j                        dd      5 }| j                  |j	                         |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrX   r    r  r  r  r  )rC   r   r7   rc   ra   r6   r  )r+   rQ   r   s      r   test_fileobjz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)3!D5D&)D25D>c                    | j                  t        | j                  | j                  d       | j                  t        | j                  | j                  d       | j                  t        | j                  | j                  dd       | j                  t        | j                  | j                  dd       | j                  t        | j                  | j                  dd	       y )
Nwbtxbtr    r  r  ignore)errorsr  )newline)rZ   r\   rC   r(   r/   s    r   test_bad_paramszOpenTest.test_bad_paramsF  s    *))T]]E	;*))T]]E	;*))T]]D7 	 	L*))T]]D 	 	K*))T]]D$ 	 	Hr   c                 r   | j                   j                  d      }|j                  dt        j                        }| j                  | j                  dd      5 }|j                  |       d d d        t        | j                  d      5 }t        |j                               j                  d      }| j                  ||       d d d        | j                  | j                  dd      5 }| j                  |j                         |       d d d        y # 1 sw Y   xY w# 1 sw Y   ]xY w# 1 sw Y   y xY w)Nr  r  r  z	utf-16-ler  r    r  )r6   r  r  r)   r  rC   r(   rN   r   ra   rc   )r+   r   r  rQ   r  s        r   test_encodingzOpenTest.test_encodingS  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!+!D-D!D*-D6c                 0   | j                  | j                  d      5 }|j                  d       d d d        | j                  | j                  ddd      5 }| j                  |j	                         d       d d d        y # 1 sw Y   RxY w# 1 sw Y   y xY w)NrM   s   foobarr  r  r  )r  r  foobar)rC   r(   rN   rc   ra   r  s     r   test_encoding_error_handlerz$OpenTest.test_encoding_error_handler_  sq    YYt}}d+qGGM" ,YYt}}dWXYNQVVXx0 ON ,+NNs   B !B B	Bc                 n   | j                   j                  d      }| j                  | j                  ddd      5 }|j	                  |       d d d        | j                  | j                  ddd      5 }| j                  |j                         |g       d d d        y # 1 sw Y   SxY w# 1 sw Y   y xY w)Nr  r  r  r  )r  r  r  )r6   r  rC   r(   rN   rc   r   )r+   r   rQ   s      r   test_newlinezOpenTest.test_newlineg  s    yy(YYt}}dWdYKqGGDM LYYt}}dWdYKqQ[[]TF3 LK LKKKs   B4"B+B(+B4N)r1   r2   r3   rC   r  r  r  r  r   r  r	  r  r  rI   r   r   r  r    s9    );";$A&-H
-14r   r  c                  ,    t        j                          y r%   )r   reap_childrenrI   r   r   tearDownModuler  p  s    r   __main__)*testr   test.supportr   r   r_  unittestr-  r   r   r)   r{  r=   r&   r  r   r   r  r   r	   test.support.os_helperr
   r   rq   r  import_moduler   r   r   r   r   r   TestCaser   rK   rf  r  r  r  r  r1   mainrI   r   r   <module>r     s     (   	 + 	        & ) 3  
 "m!!%( 7 7 $1x   1hX
/( X
/v05 05fd3( d3N%.X %.Pv4x v4r zHMMO r   