
    dafn                        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    (/root/Python-3.12.4/Lib/test/test_bz2.pyext_decompressr      sC    ""6<<	#:;&&	{$??~~d##    c            	          e Zd 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j3                  ed      Zd Zd Zy# 1 sw Y   ,xY w)BaseTestz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                 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____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-   r0    r   r   r   r   &   s    
J. 88JD ^D4J0H I"H277<<BGGOOH4M(NPVWX % 	G"Z%9)*%EFFI	Gx	
 ||HA|6H	G 	Gs   CC	r   c                      e Zd ZdZdCd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/ Z1d0 Z2 e3jh                         d1        Z5d2 Z6d3 Z7d4 Z8d5 Z9d6 Z:d7 Z;d8 Z<d9 Z=d: Z>d; Z?d< Z@d= ZAd> ZBd? ZCd@ ZDdA ZEyB)DBZ2FileTestzTest the BZ2File class.c                     t        | j                  d      5 }|j                  | j                  |z         |j                  |       d d d        y # 1 sw Y   y xY w)Nwb)rD   r(   writer8   )r+   streamssuffixfs       r   createTempFilezBZ2FileTest.createTempFile]   sG    $--& 	!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%   	rS   r   r(   r[   r\   readfloatassertEqualr7   r+   bz2fs     r   testReadzBZ2FileTest.testReadm   sc    T]]# 	5tiEG<TYY[$))4	5 	5 	5s   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   rP   rQ   )rS   r:   r   r(   r[   OSErrorrb   re   s     r   testReadBadFilezBZ2FileTest.testReadBadFiles   sP    Admm<T]]# 	2tgtyy1	2 	2 	2s   !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   rP   ra   re   s     r   testReadMultiStreamzBZ2FileTest.testReadMultiStreamx   sl    A&T]]# 	9tiEG<TYY[$))a-8	9 	9 	9s   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rm   )_compressionBUFFER_SIZElenr8   rS   r   r(   r[   r\   rb   rc   rd   r7   )r+   buffer_sizerf   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)rQ   rS   r:   r   r(   rd   rb   r7   re   s     r   testReadTrailingJunkz BZ2FileTest.testReadTrailingJunk   sT    4==1T]]# 	5tTYY[$))4	5 	5 	5s   +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)Nrn   ri   rx   re   s     r   testReadMultiStreamTrailingJunkz+BZ2FileTest.testReadMultiStreamTrailingJunk   sZ    Admm<T]]# 	9tTYY[$))a-8	9 	9 	9s   .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   )rS   r   r(   r[   r\   rb   rc   rd   re   s     r   	testRead0zBZ2FileTest.testRead0   sa    T]]# 	0tiEG<TYYq\3/	0 	0 	0s   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   rX   rS   r   r(   rb   rd   r7   r+   rf   textstrs       r   testReadChunk10zBZ2FileTest.testReadChunk10   sp    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)Nrn   ro   r   rX   r   r   s       r   testReadChunk10MultiStreamz&BZ2FileTest.testReadChunk10MultiStream   sy    A&T]]# 	2tDiim	 
 T499q=1	2 	2 	2s   =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   )rS   r   r(   rd   rb   r7   re   s     r   testRead100zBZ2FileTest.testRead100   sS    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   )rS   r   r(   peekassertNotEqualrt   
assertTruer7   
startswithrd   rb   )r+   rf   pdatas      r   testPeekzBZ2FileTest.testPeek   s    T]]# 	5tIIKEE
A.OODII0078TYY[$))4		5 	5 	5s   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   )rS   r   r(   r<   rd   rF   r7   rt   )r+   rf   nbs       r   testReadIntozBZ2FileTest.testReadInto   s    T]]# 	4tA!AT]]1-q1Q		"1.DII"A#dii.)AT]]1-q1QrUDIIqbcN3	4 	4 	4s   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%   rS   r   r(   r[   r\   readliner5   rd   r+   rf   lines      r   testReadLinezBZ2FileTest.testReadLine   sp    T]]# 	8ti= 8  $78	8 	8 	8s   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rm   r   r   s      r   testReadLineMultiStreamz#BZ2FileTest.testReadLineMultiStream   sz    A&T]]# 	8ti=!+ 8  $78	8 	8 	8s   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%   rS   r   r(   r[   r\   	readlinesrd   r5   re   s     r   testReadLineszBZ2FileTest.testReadLines   sf    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rm   r   re   s     r   testReadLinesMultiStreamz$BZ2FileTest.testReadLinesMultiStream   sp    A&T]]# 	Dti>T^^-t/BC	D 	D 	D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%   rS   r   r(   rd   listiterr5   re   s     r   testIteratorzBZ2FileTest.testIterator   sR    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rm   r   re   s     r   testIteratorMultiStreamz#BZ2FileTest.testIteratorMultiStream   s\    A&T]]# 	DtT$t*-t/BC	D 	D 	Ds   2A##A,c                     | j                          t        | j                        }|j                          | j	                  t
        t        |       | j	                  t
        |j                         y r%   )rS   r   r(   r*   r[   r]   nextr   re   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(   r[   r\   rO   r7   rD   rd   r   rb   r+   rf   rR   s      r   	testWritezBZ2FileTest.testWrite   s    T]]C( 	"Di4JJtyy!	" $--& 	B!^AFFH5tyyA	B 	B	" 	"	B 	B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   rX   r!   r    )r   r(   r7   rO   rD   rd   r   rb   )r+   rf   r   r   rR   s        r   testWriteChunks10zBZ2FileTest.testWriteChunks10   s    T]]C( 	DAii"ac2X.

3Q  	 $--& 	B!^AFFH5tyyA	B 	B	 		B 	B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)Nrn   r"   r   r    )	r   rH   r7   r   r(   rO   rD   rd   rb   )r+   expectedrf   rR   s       r    testWriteNonDefaultCompressLevelz,BZ2FileTest.testWriteNonDefaultCompressLevel
  s    <<		<;T]]Cq9 	"TJJtyy!	"$--& 	1!QVVXx0	1 	1	" 	"	1 	1s   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(   r[   r\   
writelinesr5   r]   rD   rd   r   rb   r7   r   s      r   testWriteLineszBZ2FileTest.testWriteLines  s    T]]C( 	-Di9OODOO,	-
 	*doou=$--& 	B!^AFFH5tyyA	B 	B	- 	-	B 	B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   abcrY      a)r   r(   rO   r[   rj   r   re   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!	" $--& 	F!^AFFH5tyy1}E	F 	F	" 	"	" 	"	F 	F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   )	rS   r   r(   r[   r\   seekrd   rb   r7   re   s     r   testSeekForwardzBZ2FileTest.testSeekForward-  sp    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   ro   r   )
rS   r   r(   r[   r\   r   rt   r7   rd   rb   re   s     r   testSeekForwardAcrossStreamsz(BZ2FileTest.testSeekForwardAcrossStreams4  s    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^  )rS   r   r(   rb   r   rd   r7   re   s     r   testSeekBackwardszBZ2FileTest.testSeekBackwards;  sk    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   ro   r   r   r   r!   i)rS   r   r(   rt   r7   rb   r   rd   )r+   rf   readtos      r   testSeekBackwardsAcrossStreamsz*BZ2FileTest.testSeekBackwardsAcrossStreamsB  s    A&T]]# 	Kt^c)F1*#dii/00 1*IIdATYY[$))GH*=		*IJ	K 	K 	K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   )rS   r   r(   r   rd   rb   r7   rt   re   s     r   testSeekBackwardsFromEndz$BZ2FileTest.testSeekBackwardsFromEndK  sr    T]]# 	JtIIdATYY[$))C		N34F4G*HI	J 	J 	J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   ro   i)rS   r   r(   r   rd   rb   r7   re   s     r   %testSeekBackwardsFromEndAcrossStreamsz1BZ2FileTest.testSeekBackwardsFromEndAcrossStreamsQ  sm    A&T]]# 	CtIIeQTYY[499q=%&*AB	C 	C 	C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   	rS   r   r(   r   rd   tellrt   r7   rb   re   s     r   testSeekPostEndzBZ2FileTest.testSeekPostEndW  sq    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Nrn   ro   r   r   r   re   s     r   testSeekPostEndMultiStreamz&BZ2FileTest.testSeekPostEndMultiStream^  s{    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   re   s     r   testSeekPostEndTwicez BZ2FileTest.testSeekPostEndTwicee  s}    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   re   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   rS   r   r(   r   rd   r   rb   r7   re   s     r   testSeekPreStartzBZ2FileTest.testSeekPreStartu  sl    T]]# 	5tIIdOTYY[!,TYY[$))4	5 	5 	5s   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   ro   r   r   r   re   s     r   testSeekPreStartMultiStreamz'BZ2FileTest.testSeekPreStartMultiStream|  su    A&T]]# 	9tIIdOTYY[!,TYY[$))a-8	9 	9 	9s   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    )	rS   rD   r(   r   rd   filenor*   r[   r]   )r+   rawfrf   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)NFrJ   rJ   r   r   <lambda>z*BZ2FileTest.testSeekable.<locals>.<lambda>  s    r   )
r   r   r8   r   seekablerb   r*   r[   r]   assertFalse)r+   rf   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   r8   r   readablerb   r*   r[   r]   r   re   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   r8   r   writablerb   r*   r[   r]   r   re   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'  )rS   ranger   r(   )r+   ios      r   testOpenDelzBZ2FileTest.testOpenDel  s2    u 	A&A	r   c                 :    | j                  t        t        d       y )Nz/non/existent)r[   rj   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%trN   s   Test)rD   r(   rO   r   r   rd   r   )r+   r   rR   rf   linesxliness         r   testReadlinesNoNewlinez"BZ2FileTest.testReadlinesNoNewline  s    z$--& 	!GGDM	T]]# 	%tNN$E	%	*T]]# 	,t$..*+F	,'+	 		% 	%	, 	,s#   B?C	C?CCC c                    d }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)NrN   s   xxxr    z4__enter__ on a closed file didn't raise an exceptionr!   r   z1/0 didn't raise an exception)r   r(   rO   r*   failr]   ZeroDivisionErrorr+   rR   s     r   testContextProtocolzBZ2FileTest.testContextProtocol  s    T]]D) 	QGGFO	DMM4(			N 
 IILM	7- !
 II56#	 	
  		
   		s_   B.C B:C 8C! CC! .B7: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   rX   rN   c                  H    t        d      D ]  } j                          y Nrn   )r   rO   )r   r   rR   s    r   compz'BZ2FileTest.testThreading.<locals>.comp  s!    q "AGGDM"r   )target)r   r(   r   	threadingThreadr	   start_threads)r+   nthreadsr  r   threadsr   rR   s        @@r   testThreadingzBZ2FileTest.testThreading  s     e|T]]D) 	Q" ?DHoNy''t4NGN!//8 	 	 O 	 	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!   )rS   rt   r5   r   r(   rb   rd   r   r7   r   r   r[   StopIteration)r+   linelenhalflenrf   s       r   testMixedIterationAndReadsz&BZ2FileTest.testMixedIterationAndReads   si   dooa()Q,T]]# 	?tIIgT$Z);GH)EFTYY[$))GH*=>	? T]]# 	BtMMOT$Z);<T]]_dooa.@A	B T]]# 	3tNNmT48T^^-r2	3 	3	? 	?	B 	B	3 	3s'   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(   rO   rd   rb   )r+   data1data2rf   s       r   testMultiStreamOrderingz#BZ2FileTest.testMultiStreamOrdering  s    T]]C( 	DJJu	T]]C( 	DJJu	T]]# 	9tTYY[%%-8	9 	9		 		 		9 	9s#   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	NrN      contentFTab   appendixr       contentappendix)r   r(   rO   assertIsInstancer   intassertIsr   r   r   closedr[   r]   rd   rb   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   )rD   r(   r   rO   rd   r   r'  r   r   r   r(  r[   r]   rb   )r+   rawrR   s      r   testOpenFileWithNamez BZ2FileTest.testOpenFileWithNameE  s   $--& 	6#d# /q
#  SZZ\:ajjlE2ajjlD1ajjlE2ahh./ MM!((D)j!((3j!**5j!**5j!**5	6 $--& 	6#d# /q$  SZZ\:ajjlE2ajjlD1ajjlE2ahh./ MM!((D)j!((3j!**5j!**5j!**5	6 $--& 	6#d# /q  +=>  SZZ\:ajjlD1ajjlE2ajjlD1ahh./ MM!((D)"":. 
j!**5j!**5j!**5	6 	67/ /	6 	6/ /	6 	6/ / 	6 	6s   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)NrN   r!  r"  r#  r   r    r$  )r   r   rO   r[   ioUnsupportedOperationr   r]   r   rd   rb   )r+   biorR   s      r   testOpenFileWithoutNamez#BZ2FileTest.testOpenFileWithoutNameq  s_   iS$ 	A1GGJb55qxx@	A 	*ahh/S$ 	A1GGK b55qxx@	A 	*ahh/S$ 	A1QVVX'9:b55qxx@	A z* 	HHJ	 		A 	A
	A 	A	A 	A	 	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)NrN   r!  r"  r#  r    r$  )r)   rD   r(   O_WRONLYO_CREATO_TRUNCr   rO   rd   r   r[   r]   O_APPENDO_RDONLYrb   )r+   r,   r+  rR   s       r   testOpenFileWithIntNamez#BZ2FileTest.testOpenFileWithIntName  s   WWT]]BKK"**$<rzz$IJ"d^ 	4sd# ;q
#  SZZ\:; j!((3		4 WWT]]BKK"**$<r{{$JK"d^ 	4sd# ;q$  SZZ\:; j!((3		4 WWT]]BKK0"d^ 	sd# ;q  +=>  SZZ\:; "":. 
		 	; ;	4 	4; ;	4 	4; ; 		 	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NrN   r    )r(   r)   fsencoder   rO   r8   rd   rb   )r+   str_filenamebytes_filenamerR   s       r   testOpenBytesFilenamez!BZ2FileTest.testOpenBytesFilename  s    }}\2^T* 	aGGDII	^T* 	2aQVVXtyy1	2 \4( 	2AQVVXtyy1	2 	2	 		2 	2	2 	2s#   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r:  )r   r(   r   rO   r8   rd   rb   )r+   r(   rR   s      r   testOpenPathLikeFilenamez$BZ2FileTest.testOpenPathLikeFilename  s    DMM*Xt$ 	GGDII	Xt$ 	2QVVXtyy1	2 	2	 		2 	2s   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)z-Decompressed data buffering should be limited    g    >A	   r"   r!   z)Excessive amount of data was decompressedN)r   rH   r&  
assertLessrt   rr   rs   r   r   rd   rb   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   r8   r   r[   r\   rb   rc   rd   r7   r   r(  r+   r0  rf   s      r   testReadBytesIOzBZ2FileTest.testReadBytesIO  s    TYY 	)3 9!!)TYY@  dii89 SZZ(		) 	)9 9	) 	)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   r8   r   r   r   rt   r   r7   r   rd   rb   )r+   r0  rf   r   s       r   testPeekBytesIOzBZ2FileTest.testPeekBytesIO  s    TYY 	93 9		##CJ2		 4 4U ;<  dii8	9	9 	99 9	9 	9s#   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   r[   r\   rO   r7   rd   r   getvaluer   r(  rL  s      r   testWriteBytesIOzBZ2FileTest.testWriteBytesIO  s    Y 	)#c" &d!!)TZZ8

499%& ^CLLN;TYYGSZZ(	) 	)& &	) 	)s#   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   r8   r   r[   r\   r   rd   rb   r7   rL  s      r   testSeekForwardBytesIOz"BZ2FileTest.testSeekForwardBytesIO  s    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   r8   r   rb   r   rd   r7   rL  s      r   testSeekBackwardsBytesIOz$BZ2FileTest.testSeekBackwardsBytesIO  s    TYY 	C3 C		#		$"  dii.ABC	C 	CC C	C 	C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!      )
r8   r   r   r[   EOFErrorrb   rd   rt   r7   r   )r+   	truncatedrR   r   s       r   test_read_truncatedzBZ2FileTest.test_read_truncated  s   IIdsO	WY'( 	0Ah/	0WY'( 	3AQVVC		N3TYY?h2	3 r 	7A2A/0 7A!!(AFFA67 7	7	0 	0	3 	3
7 7s$   !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   rZ      rn   r   )arrayrt   itemsizer   r   rd   rO   r   )r+   qLENGTHrR   s       r   test_issue44439zBZ2FileTest.test_issue44439  su    KK_-Q!**$WY$ 	/QWWQZ0QVVXv.	/ 	/ 	/s   ABBN)r!   r   )Fr1   r2   r3   r4   rS   r_   rg   rk   rp   rv   ry   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	  r	   requires_working_threadingr  r  r  r)  r,  r1  r8  r>  r@  rJ  rM  rO  rR  rT  rV  r\  rd  rJ   r   r   rL   rL   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   rL   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   r[   r\   rH   r7   flushrd   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   rH   ri  rd   r9   rj  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   rX   r!   )r   r7   rH   ri  rd   r   )r+   rk  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   rH   ri  r   r   rd   rt   strip)r+   rs  rk  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_PROTOCOLr[   r\   dumpsr   r+   protos     r   
testPicklezBZ2CompressorTest.testPickle#  sY    622Q67 	5E""9- 5]_e45 5	55 5   AA(	N)r1   r2   r3   rl  ro  rq  r   skip_if_pgo_taskr   r   ry  r  rJ   r   r   rg  rg    sC    :0: S3Yq) *  5r   rg  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*   )r[   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   r[   r\   r   r8   rd   r7   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   rX   r!   )r   r8   r   rd   r7   )r+   r  r   r   r   s        r   testDecompressChunks10z*BZ2DecompressorTest.testDecompressChunks103  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   r8   rd   r7   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   r8   r[   rZ  r  s      r   testEOFErrorz BZ2DecompressorTest.testEOFErrorF  sH     tyy)(DOO[A(DOOS9r   r   gffffff
@rr  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   rH   r   r   r   )r+   rs  	blocksizeblockr   rx  r  decompresseds           r   testDecompress4Gz$BZ2DecompressorTest.testDecompress4GL  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r{  )r   r|  r}  r[   r\   r~  r   r  s     r   r  zBZ2DecompressorTest.testPickle]  sZ    622Q67 	7E""9- 7_.67 7	77 7r  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   rt   rI   appendr   r   needs_inputrd   rE  eofr6   r=   r  )r+   bzdr  outlen_s        r   testDecompressorChunksMaxsizez1BZ2DecompressorTest.testDecompressorChunksMaxsizeb  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   rd   r   r8   r  r6   r7   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  rn   r  r   )r   r  r   r8   rd   r6   r7   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   r[   	Exceptionr   r:   )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   rX   )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 rn  )rd   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  rJ   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   rH   r7   rd   r   )r+   r   s     r   rl  z#CompressDecompressTest.testCompress  s-    ||DII&-tyy9r   c                 f    t         j                  d      }| j                  || j                         y rn  )r   rH   rd   r9   r+   r   s     r   ro  z.CompressDecompressTest.testCompressEmptyString  s$    ||C t/r   c                 z    t         j                  | j                        }| j                  || j                         y r%   r   r   r8   rd   r7   r  s     r   r  z%CompressDecompressTest.testDecompress  s(    ~~dii(tyy)r   c                 R    t         j                  d      }| j                  |d       y rn  )r   r   rd   r  s     r   testDecompressEmptyz*CompressDecompressTest.testDecompressEmpty  s     ~~c"s#r   c                 f    t         j                  | j                        }| j                  |d       y rn  )r   r   r9   rd   r  s     r   testDecompressToEmptyStringz2CompressDecompressTest.testDecompressToEmptyString  s$    ~~doo.s#r   c                 h    | j                  t        t        j                  | j                  d d        y )NrX  )r[   r]   r   r   r8   r/   s    r   testDecompressIncompletez/CompressDecompressTest.testDecompressIncomplete  s"    *cnndiioFr   c                 b    | j                  t        t        j                  | j                         y r%   )r[   rj   r   r   r:   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   r8   r:   rd   r7   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   rl  ro  r  r  r  r  r  r  r  r  rJ   r   r   r  r    s6    :0*$$GB.*.r   r  c                   L    e 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y)OpenTestzTest the open function.c                 ,    t        j                  |i |S r%   )r   rD   )r+   argskwargss      r   rD   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)rN   xbr  r    r"  r   r
   r(   rD   rO   r7   r   rb   rd   r+   moderR   	file_datas       r   test_binary_modeszOpenTest.test_binary_modes  sv     	;Dt|t}}%4==$/ #1		"#dmmT* 7a*16684	  DII67 4==$/ 61  499564==$/ #1		"#dmmT* ;a*16684	  DIIM:; ;	;# #7 76 6# #; ;;   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    rY   r   r   r  r  s       r   test_implicit_binary_modesz#OpenTest.test_implicit_binary_modes  sv    	;Ds{t}}%4==$/ #1		"#dmmT* 7a*16684	  DII67 4==#. 6!  499564==#. #!		"#dmmT* ;a*16684	  DIIM:; ;	;# #7 76 6# #; ;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   )r7   decodereplacer)   linesepr
   r(   rD   rO   r   rb   rd   )r+   r   text_native_eolr  rR   r  s         r   test_text_modeszOpenTest.test_text_modes!  s   yy(,,tRZZ8  	ADt|t}}%4==$A QdmmT* =a*16684;;GD	  O<= 4==$A 1Q  4014==$A QdmmT* Aa*16684;;GD	  Oa,?@A A	A = =1 1 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(   rD   r[   FileExistsError)r+   r  r  rR   s       r   test_x_modezOpenTest.test_x_mode4  s    % 	D4==!"%+w4H4==$B a""?3 YYt}}d3 q 	   s0   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)NrY   r    r  r  r  r  )rD   r   r8   rd   rb   r7   r  )r+   rR   r   s      r   test_fileobjzOpenTest.test_fileobj>  s    YYwtyy)3/ 	21QVVXtyy1	2YYwtyy)40 	2AQVVXtyy1	2yy(YYwtyy)4'YB 	-aQVVXt,	- 	-	2 	2	2 	2	- 	-s#   +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)r[   r]   rD   r(   r/   s    r   test_bad_paramszOpenTest.test_bad_paramsG  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  )r7   r  r  r)   r  rD   r(   rO   r   rb   rd   )r+   r   r  rR   r  s        r   test_encodingzOpenTest.test_encodingT  s    yy(,,tRZZ8YYt}}d[YA 	QGGDM	$--& 	9!&qvvx077DIY8	9 YYt}}d[YA 	-QQVVXt,	- 	-	 		9 	9	- 	-s$   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)NrN   s   foobarr  r  r  )r  r  foobar)rD   r(   rO   rd   rb   r  s     r   test_encoding_error_handlerz$OpenTest.test_encoding_error_handler`  s    YYt}}d+ 	#qGGM"	#YYt}}dWXYN 	1QVVXx0	1 	1	# 	#	1 	1s   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  )r7   r  rD   r(   rO   rd   r   )r+   r   rR   s      r   test_newlinezOpenTest.test_newlineh  s    yy(YYt}}dWdYK 	qGGDM	YYt}}dWdYK 	4qQ[[]TF3	4 	4	 		4 	4s   B4"B+B(+B4N)r1   r2   r3   r4   rD   r  r  r  r  r  r  r
  r  r  rJ   r   r   r  r    s9    );";$A&-H
-14r   r  c                  ,    t        j                          y r%   )r   reap_childrenrJ   r   r   tearDownModuler  q  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   rr   r  import_moduler   r   r   r   r   r   TestCaser   rL   rg  r  r  r  r  r1   mainrJ   r   r   <module>r     s     (   	 + 	        & ) 3  
 "m!!%( 7 7 $1x   1hY
/( Y
/x05 05fd3( d3N%.X %.Pv4x v4r zHMMO r   