+
    Bi"                         R t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIHtH	t	  ! R R]P                  4      t]R8X  d   ]P                  ! 4        R# R# )z)
Test cases for codeop.py
Nick Mathewson
N)warnings_helper)dedent)compile_commandPyCF_DONT_IMPLY_DEDENTc                   z   a  ] tR t^t o RR ltRR ltRR ltR tR tR t	R t
R tR	 tR
 tR tR tR tRtV tR# )CodeopTestsc                d    \        VRV\        4      pV P                  \        VRV4      V4       R# )z(succeed iff str is a valid piece of code<input>N)compiler   assertEqualr   )selfstrsymbolexpecteds   &&& '/usr/lib/python3.14/test/test_codeop.pyassertValidCodeopTests.assertValid   s,    3	63IJi@(K    c                >    V P                  \        WR7      R4       R# )z5succeed iff str is the start of a valid piece of coder   N)r   r   )r   r   r   s   &&&r   assertIncompleteCodeopTests.assertIncomplete   s    <dCr   c                     \        WR7       V P                  R4       R#   \         d    T P                  T4        R# \         d    T P                  T'       * 4        R# i ; i)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   assertInvalidCodeopTests.assertInvalid   sM    	+C.II<= 	'OOI& 	+OO	M*	+s   ! A$ A$	A$#A$c           	     .   V P                   pV P                  \        R 4      \        RRR\        4      4       V P                  \        R4      \        RRR\        4      4       V! R4       V! R4       V! R4       V! R4       V! R	4       V! R
4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! RR4       V! RR4       V! RR4       V! RR4       V! RR4       V! RR4       V! R R4       V! R	4       V! R!4       V! R4       V! R"4       V! RR4       V! RR4       V! R R4       V! R#4       V! R$4       V! R%4       R&# )' 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
N)r   r   r   r
   r   )r   avs   & r   
test_validCodeopTests.test_valid!   s    	,#FIx$:<	= 	.#FIx$:<	= 	7
9
9
;
?
 


 
 !
#$
"#
8
8
01
;<


9
>
6&
 (
:f
<
:f
;v
>&!
?

;<
 
:f
;v
>&!
AB
$%
&'r   c                   V P                   pV! R 4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R	4       V! R
4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! RR4       V! RR4       V! RR4       V! RR4       V! R R4       V! R!R4       V! R"4       V! R#4       V! R$4       V! R%4       V! R&4       V! R'4       V! R(4       V! R)4       V! R*4       V! R+4       V! R,4       V! R-4       V! R.4       V! R/4       V! R04       V! R14       V! R24       V! R34       V! R44       V! R54       V! R64       V! R74       V! R84       V! R94       V! R:4       V! R;4       V! R<4       V! R=4       V! R>4       V! R?4       V! R@4       V! RA4       V! RB4       V! RC4       V! RD4       V! RE4       V! RF4       V! RG4       V! RH4       V! RI4       V! RJ4       V! RK4       V! R4       V! RL4       V! RM4       V! RN4       V! R4       V! RO4       V! RP4       V! RQ4       V! RR4       V! RS4       V! RT4       V! RU4       V! RV4       V! RW4       V! RX4       V! RY4       V! RZ4       V! R[4       V! R\4       V! R]4       V! R^4       V! R_4       V! R`4       V! Ra4       V! Rb4       V! Rc4       V! Rd4       V! Re4       V! Rf4       V! Rg4       Rh# )iz(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 = \N)r   r   ais   & r   test_incomplete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                   V P                   pV! R 4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R	4       V! R
4       V! RR4       V! RR4       V! RR4       V! RR4       V! RR4       V! RR4       V! R R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       V! R4       R# )z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)Nr   r/   s   & r   test_invalidCodeopTests.test_invalid   s    
5	
5	
7
8
6

9
 
$%
=
;
<
76
3v
5
4
4
;v
5
<
()
7
:
9
9
/0r   c                    V P                   pV! R RR7       V! RRR7       V! RRR7       V! RRR7       V! RRR7       V! RRR7       R# )	z	raise = 4execr   zdef a-bzawait?z=!=za await raise bza await raise b?+1Nr5   r/   s   & r   test_invalid_execCodeopTests.test_invalid_exec
  sK    
;v&
9V$
8F#
5 
V,
/r   c                    V P                  \        R R4      P                  \        R RR4      P                  4       V P	                  \        R R4      P                  \        R RR4      P                  4       R# )r&   abcr#   defN)r   r   co_filenamer
   assertNotEqualr   s   &r   test_filenameCodeopTests.test_filename  sb    E:FF E8<HH	JOIu=II#Iuh?KK	Mr   c           	     ^   \         P                  ! R \        3R\        34      ;_uu_ 4       p\        R4       V P	                  \        VP                  4      ^4       RRR4       \        P                  ! 4       ;_uu_ 4        V P                  \        4      ;_uu_ 4        \        P                  ! R\        4       \        RRR7       RRR4       RRR4       \        P                  ! 4       ;_uu_ 4        V P                  \        4      ;_uu_ 4        \        P                  ! R\        4       \        RRR7       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     LS; i  + '       g   i     R# ; i)	z"is" with 'str' literalz#"\\e" is an invalid escape sequencez	'\e' is 0Nerrorz1 is 1r9   r   z'\e')r   check_warningsSyntaxWarningr   r   lenwarningscatch_warningsassertRaisesr   simplefilterr   ws   & r   test_warningCodeopTests.test_warning  s
   ++,m<8-H  L)S_a0 $$&&(9(9+(F(F!!'=9HV4 )G&
 $$&&(9(9+(F(F!!'=9GF3 )G&&  )G(F&&
 )G(F&&&sS   1EE5 )E"		E56F)F	=FE	"E2-E55F	FFF,	c                    \         P                  ! R R7      ;_uu_ 4       p\         P                  ! R4       V P                  R4       RRR4       V P	                  X. 4       R#   + '       g   i     L$; i)Trecordalwaysz'\e' + (N)rI   rJ   rL   r   r   rM   s   & r   test_incomplete_warning#CodeopTests.test_incomplete_warning,  sQ    $$D11Q!!(+!!+. 2 	B 21s   (A$$A4	c                   \         P                  ! R R7      ;_uu_ 4       p\         P                  ! R4       V P                  R4       RRR4       V P	                  \        X4      ^4       V P	                  V^ ,          P                  \        4       V P                  \        V^ ,          P                  4      R4       V P	                  V^ ,          P                  R4       R#   + '       g   i     L; i)TrR   rT   z'\e' 1Nzinvalid escape sequencer	   )rI   rJ   rL   r   r   rH   categoryrG   assertRegexr   messagefilenamerM   s   & r   test_invalid_warning CodeopTests.test_invalid_warning2  s    $$D11Q!!(+y) 2 	Q#16QqT\\*,EF1	2 21s   (C##C3	c           	         V P                  V4      ;_uu_ 4        V P                  \        V4      ;_uu_ 4        \        VR R7       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r9   r   N)subTestassertRaisesRegexr   r   )r   coderZ   s   &&&r   assertSyntaxErrorMatches$CodeopTests.assertSyntaxErrorMatches;  sN    \\$''W==V4 >  ==  s"   A,A	A,A)$A,,A=	c                <    V P                  \        R 4      R4       R# )zB                def foo(x,x):
                   pass
            z-duplicate argument 'x' in function definitionN)rb   r   rA   s   &r   test_syntax_errorsCodeopTests.test_syntax_errors@  s$    %%   B		Cr    N)r#   )r#      )__name__
__module____qualname____firstlineno__r   r   r   r)   r1   r6   r:   rB   rO   rU   r\   rb   re   __static_attributes____classdictcell__)__classdict__s   @r   r   r      sT     L
D+<(|DL#1J0M4& 35
C Cr   r   __main__)__doc__unittestrI   test.supportr   textwrapr   codeopr   r   TestCaser   ri   mainrg   r   r   <module>rx      sJ      (  :yC(## yCz	 zMMO r   