
    z%i                          d Z ddlZddl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)compile_commandPyCF_DONT_IMPLY_DEDENTc                   T    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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       D/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/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       y )gNz(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 ()r   r   ais     r   test_incompletezCodeopTests.test_incomplete^   s1   ""
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
=
?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?+1r0   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 1r3   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' + ()rB   rC   rE   r   r   rF   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)	NTrJ   rL   z'\e' 1   r   r<   r	   )rB   rC   rE   r   r   rA   categoryr@   assertRegexr   messagefilenamerF   s     r   test_invalid_warningz CodeopTests.test_invalid_warning.  s    $$D1 	*Q!!(+y)	* 	Q#16QqT\\*,EF1	2	* 	*s   'CCN)r    )r    rO   )__name__
__module____qualname__r   r   r   r&   r-   r1   r4   r:   rH   rM   rT    r   r   r   r      s@    L
D+<(|AF#1J0M4& 3r   r   __main__)__doc__unittestrB   test.supportr   codeopr   r   TestCaser   rU   mainrX   r   r   <module>r`      sG      ( :j3(## j3Z	 zHMMO r   