
    daf"                         d 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	  G d dej                        Zedk(  r ej                          yy)	z/
   Test cases for codeop.py
   Nick Mathewson
    N)warnings_helper)dedent)compile_commandPyCF_DONT_IMPLY_DEDENTc                   `    e Zd ZddZddZddZd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)CodeopTestsc                 b    t        |d|t              }| j                  t        |d|      |       y)z(succeed iff str is a valid piece of code<input>N)compiler   assertEqualr   )selfstrsymbolexpecteds       +/root/Python-3.12.4/Lib/test/test_codeop.pyassertValidzCodeopTests.assertValid   s,    3	63IJi@(K    c                 >    | j                  t        ||      d       y)z5succeed iff str is the start of a valid piece of coder   N)r   r   )r   r   r   s      r   assertIncompletezCodeopTests.assertIncomplete   s    V<dCr   c                     	 t        ||       | j                  d       y# t        $ r | j                  |       Y yt        $ r | j                  |        Y yw xY w)z8succeed iff str is the start of an invalid piece of coder   z$No exception raised for invalid codeN)r   failSyntaxError
assertTrueOverflowError)r   r   r   	is_syntaxs       r   assertInvalidzCodeopTests.assertInvalid   sO    	+Cv.II<= 	'OOI& 	+OO	M*	+s   ! AAAc           	      ,   | j                   }| j                  t        d      t        dddt                     | j                  t        d      t        dddt                      |d        |d        |d        |d	        |d
        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |dd        |dd        |dd        |dd        |dd        |d d        |d!d        |d
        |d"        |d        |d#        |dd        |d d        |d!d        |d$        |d%        |d&       y )'N passr
   single
a = 1z
a = 1a = 1
za = 1

z	

a = 1

zdef x():
  pass
zif 1:
 pass
z

if 1: pass
z

if 1: pass

zdef x():

 pass
zdef x():
  pass
  
zdef x():
  pass
 
zpass
z3**3
zif 9==3:
   pass
else:
   pass
z(if 1:
 pass
 if 1:
  pass
 else:
  pass
z#a
#b
a = 3
z#a

   
a=3
za=3

z
a = 9+ \
3z3**3evalz(lambda z: 
 z**3)z9+ \
3z9+ \
3
z

a**3z
 
a**3z
#a
#b
a**3z

if 1: a=1

z#a

   
a=3

z1def f():
 try: pass
 finally: [x for x in (1,2)]
zdef f():
 pass
#foo
z@a.b.c
def f():
 pass
)r   r   r   r   r   )r   avs     r   
test_validzCodeopTests.test_valid!   s    	,#FIx$:<	= 	.#FIx$:<	= 	7
9
9
;
?
 


 
 !
#$
"#
8
8
01
;<


9
>
6&
 (
:f
<
:f
;v
>&!
?

;<
 
:f
;v
>&!
AB
$%
&'r   c                    | j                   } |d        |d        |d        |d        |d        |d        |d        |d        |d        |d	        |d
        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |d        |dd        |dd        |dd        |d d        |d!d        |d"d        |d#        |d$        |d%        |d&        |d'        |d(        |d)        |d*        |d+        |d,        |d-        |d.        |d/        |d0        |d1        |d2        |d3        |d4        |d5        |d6        |d7        |d8        |d9        |d:        |d;        |d<        |d=        |d>        |d?        |d@        |dA        |dB        |dC        |dD        |dE        |dF        |dG        |dH        |dI        |dJ        |dK        |dL        |d        |dM        |dN        |dO        |d        |dP        |dQ        |dR        |dS        |dT        |dU        |dV        |dW        |dX        |dY        |dZ        |d[        |d\        |d]        |d^        |d_        |d`        |da        |db        |dc        |dd        |de        |df        |dg        |dh       y )iNz(a **z(a,b,z(a,b,(za = (za = {zb + {zprint([1,
2,zprint({1:1,
2:3,zprint((1,
2,zif 9==3:
   pass
else:zif 9==3:
   pass
else:
zif 9==3:
   pass
else:
   passzif 1:zif 1:
z if 1:
 pass
 if 1:
  pass
 else:z!if 1:
 pass
 if 1:
  pass
 else:
z'if 1:
 pass
 if 1:
  pass
 else:
  passzdef x():z	def x():
z
def x():

zdef x():
  passzdef x():
  pass
 zdef x():
  pass
  z

def x():
  passza = 9+ \za = 'a\z	a = '''xyr   r%   r"   (z(9+z9+ \zlambda z: \z!if True:
 if True:
  if True:   
z@a(z@a(bz@a(b,z@a(b,cz@a(b,c,zfrom a import (zfrom a import (bzfrom a import (b,zfrom a import (b,czfrom a import (b,c,[z[az[a,z[a,bz[a,b,{z{az{a:z{a:bz{a:b,z{a:b,cz{a:b,c:z{a:b,c:dz	{a:b,c:d,za(za(bza(b,za(b,cza(b,c,za[za[bza[b,za[b:za[b:cza[b:c:za[b:c:dzdef a(zdef a(bzdef a(b,z	def a(b,cz
def a(b,c,z(az(a,z(a,bzif a:
 pass
elif b:zif a:
 pass
elif b:
 pass
else:zwhile a:zwhile a:
 pass
else:zfor a in b:zfor a in b:
 pass
else:ztry:ztry:
 pass
except:ztry:
 pass
finally:z!try:
 pass
except:
 pass
finally:zwith a:zwith a as b:zclass a:zclass a(z	class a(bz
class a(b,z
class a():z[x forz[x for x inz[x for x in (z(x forz(x for x inz(x for x in (za = f"""za = \)r   r   ais     r   test_incompletezCodeopTests.test_incomplete_   s?   ""
7
7
8
8
7
7
7
?

?
%&
'(
./
7
9
12
34
9:
:
<
>

 !
!"
!"
;
:
;
2f
4
3v
5
76
>&!
12
5	
6

7
8
9



 
 !
3
4
5	
6

7
3
4
5	
6

7
8
9
:
;
4
5	
6

7
8
4
5	
6

6

7
8
9
8
9
:
;
<
3
4
5	
6

7
"#
01
:
#$
=
&'
6

!"
"#
23
9
>
:
:
;
<
<
8
=
?
8
=
?
:
8r   c                    | j                   } |d        |d        |d        |d        |d        |d        |d        |d        |d	        |d
        |d        |dd        |dd        |dd        |dd        |dd        |dd        |dd        |d        |d        |d        |d        |d        |d        |d       y )Nza bza @za b @za ** @za = za = 9 +zdef x():

pass
z

 if 1: pass

passz	a = 9+ \
za = 'a\ za = 'a\
r#   r%   ]z())z[}z9+z	lambda z:z
return 2.3zif (a == 1 and b = 2): passzdel 1zdel (1,)zdel [1]zdel '1'z"[i for i in range(10)] = (1, 2, 3)r   r,   s     r   test_invalidzCodeopTests.test_invalid   s    
5	
5	
7
8
6

9
 
$%
=
;
<
76
3v
5
4
4
;v
5
<
()
7
:
9
9
/0r   c                     | j                   } |dd        |dd        |dd        |dd        |dd        |dd       y )	Nz	raise = 4execr   zdef a-bzawait?z=!=za await raise bza await raise b?+1r1   r,   s     r   test_invalid_execzCodeopTests.test_invalid_exec
  sK    
;v&
9V$
8F#
5 
V,
/r   c                     | j                  t        dd      j                  t        ddd      j                         | j	                  t        dd      j                  t        ddd      j                         y )Nr$   abcr!   def)r   r   co_filenamer   assertNotEqualr   s    r   test_filenamezCodeopTests.test_filename  sb    E:FF E8<HH	JOIu=II#Iuh?KK	Mr   c                    t        j                  dt        fdt        f      5 }t        d       | j	                  t        |j                        d       d d d        t        j                         5  | j                  t              5  t        j                  dt               t        dd       d d d        d d d        t        j                         5  | j                  t              5  t        j                  dt               t        d	d       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   6xY w# 1 sw Y   y xY w)
Nz"is" with 'str' literalinvalid escape sequencez	'\e' is 0   errorz1 is 1r4   r   z'\e')r   check_warningsSyntaxWarningr   r   lenwarningscatch_warningsassertRaisesr   simplefilterr   ws     r   test_warningzCodeopTests.test_warning  s   ++,m<*M: 	1 L)S_a0	1 $$& 	5(9(9+(F 	5!!'=9HV4	5 	5
 $$& 	4(9(9+(F 	4!!'=9GF3	4 	4 	4	1 	1	5 	5 	5 	5
	4 	4 	4 	4sS   1D!0D9(D-.D9E((EE!D*-D6	2D99EE	
EEc                     t        j                  d      5 }t        j                  d       | j                  d       d d d        | j	                  g        y # 1 sw Y   xY w)NTrecordalwaysz'\e' + ()rD   rE   rG   r   r   rH   s     r   test_incomplete_warningz#CodeopTests.test_incomplete_warning,  sU    $$D1 	/Q!!(+!!+.	/ 	B	/ 	/s   'AA"c                    t        j                  d      5 }t        j                  d       | j                  d       d d d        | j	                  t              d       | j	                  |d   j                  t               | j                  t        |d   j                        d       | j	                  |d   j                  d       y # 1 sw Y   xY w)	NTrL   rN   z'\e' 1   r   r>   r
   )rD   rE   rG   r   r   rC   categoryrB   assertRegexr   messagefilenamerH   s     r   test_invalid_warningz CodeopTests.test_invalid_warning2  s    $$D1 	*Q!!(+y)	* 	Q#16QqT\\*,EF1	2	* 	*s   'CCc                     | j                  |      5  | j                  t        |      5  t        |d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr4   r   )subTestassertRaisesRegexr   r   )r   coderT   s      r   assertSyntaxErrorMatchesz$CodeopTests.assertSyntaxErrorMatches;  sW    \\$ 	5''W= 5V45	5 	55 5	5 	5s!   AAAA	AAc                 :    | j                  t        d      d       y )NzB                def foo(x,x):
                   pass
            z-duplicate argument 'x' in function definition)r[   r   r;   s    r   test_syntax_errorszCodeopTests.test_syntax_errors@  s$    %%   B		Cr   N)r!   )r!   rQ   )__name__
__module____qualname__r   r   r   r'   r.   r2   r5   r<   rJ   rO   rV   r[   r]    r   r   r   r      sK    L
D+<(|DL#1J0M4& 35
Cr   r   __main__)__doc__unittestrD   test.supportr   textwrapr   codeopr   r   TestCaser   r^   mainra   r   r   <module>rj      sL      (  :yC(## yCz	 zHMMO r   