+
    BiZ9                     ,   R t ^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RI	Ht ]P                  ! R4      t ! R R	4      t]
 ! R
 R]P                  ]4      4       t ! R R]P                  ]4      t]R8X  d   ]P&                  ! 4        R# R# )zCTest InteractiveConsole and InteractiveInterpreter from code moduleN)dedent)	ExitStack)mock)force_not_colorized_test_class)import_helpercodec                   &   a  ] tR t^t o R tRtV tR# )MockSysc                   \        4       pV P                  VP                  4       VP                  \        P
                  ! RRR7      4      V n        VP                  \        P
                  ! R4      4      V n        VP                  \        P
                  ! R4      4      V n        \        P
                  ! R\        P                  \        P                  R7      pVP                  V4      V n        \        P                  \        P                  J d&   V P                  P                  V P                  n        V P                  =V P                  =R# )	z.Mock system environment for InteractiveConsolez
code.inputT)createzcode.sys.stdoutzcode.sys.stderrzcode.sys)wrapsspecN)r   
addCleanupcloseenter_contextr   patchinfuncstdoutstderrr   syssysmod
excepthook__excepthook__ps1ps2)selfstackprepatchs   &  ,/usr/lib/python3.14/test/test_code_module.pymock_sysMockSys.mock_sys   s     $))$**\15+7 8))$**5F*GH))$**5F*GH::jtxxH))(3>>S///%)[[%?%?DKK"KKOKKO    )r   r   r   r   N)__name__
__module____qualname____firstlineno__r   __static_attributes____classdictcell____classdict__s   @r   r	   r	      s      r!   r	   c                      a  ] tR t^!t o RtR tR tR tR tR t	R t
R 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# )TestInteractiveConsoleNc                X    \         P                  4       V n        V P                  4        R # Nr   InteractiveConsoleconsoler   r   s   &r   setUpTestInteractiveConsole.setUp%   s    ..0r!   c                   R R\        R4      .V P                  n        V P                  P	                  4        RP                  R V P                  P                   4       4      pV P                  RV4       V P                  V P                  R4       R R\        R4      .V P                  n        RV P                  n        V P                  P	                  4        RP                  R V P                  P                   4       4      pV P                  RV4       V P                  V P                  P                  R4       R	# )
import codezcode.sys.ps1Finished c              3   R   "   T F  pR P                  V^,          4      x  K  	  R# 5ir7   Njoin.0calls   & r   	<genexpr>2TestInteractiveConsole.test_ps1.<locals>.<genexpr>0   "     O6Nda))6N   %'z>>> r   z	custom1> c              3   R   "   T F  pR P                  V^,          4      x  K  	  R# 5ir9   r:   r<   s   & r   r?   r@   ;   rA   rB   N)EOFErrorr   side_effectr0   interactr;   r   method_callsassertInassertNotHasAttrr   r   assertEqualr   outputs   & r   test_ps1TestInteractiveConsole.test_ps1)       Z #

 	Odkk6N6NOOff%dkk51 Z #

 &Odkk6N6NOOk6*+6r!   c                   R R\        R4      .V P                  n        V P                  P	                  4        RP                  R V P                  P                   4       4      pV P                  RV4       V P                  V P                  R4       R R\        R4      .V P                  n        RV P                  n        V P                  P	                  4        RP                  R V P                  P                   4       4      pV P                  RV4       V P                  V P                  P                  R4       R	# )
r5   zcode.sys.ps2r6   r7   c              3   R   "   T F  pR P                  V^,          4      x  K  	  R# 5ir9   r:   r<   s   & r   r?   2TestInteractiveConsole.test_ps2.<locals>.<genexpr>F   rA   rB   z... r   z	custom2> c              3   R   "   T F  pR P                  V^,          4      x  K  	  R# 5ir9   r:   r<   s   & r   r?   rR   Q   rA   rB   N)rD   r   rE   r0   rF   r;   r   rG   rH   rI   r   r   rJ   rK   s   & r   test_ps2TestInteractiveConsole.test_ps2?   rO   r!   c                   R R\        R4      .V P                  n        V P                  P	                  4        \        V P                  P                  4       F#  pRRP                  V^,          4      9   g   K"   R# 	  \        R4      h)z	'antioch'r7   r6   antiochzno console stdoutN)
rD   r   rE   r0   rF   listr   rG   r;   AssertionError)r   r>   s   & r   test_console_stderr*TestInteractiveConsole.test_console_stderrU   si    #.HZ4H"I112DBGGDG,, 3 !!455r!   c                D   R RR\        R4      .V P                  n        V P                  P	                  4        RP                  R V P                  P                   4       4      pWP                  R4      R pVRVP                  R4       pV P                  VP                  4       R,          . R	O4       V P                  V P                  P                  \        4       V P                  \        V P                  P                   4      \        4       V P#                  V P                  P$                  4       V P#                  V P                  P                   P&                  4       V P                  V P                  P(                  V P                  P                   4       R# )
def f():	    x = ?r7   r6   c              3   R   "   T F  pR P                  V^,          4      x  K  	  R# 5ir9   r:   r<   s   & r   r?   ;TestInteractiveConsole.test_syntax_error.<locals>.<genexpr>d   rA   rB   (InteractiveConsole)N
now exiting   NN)z  File "<console>", line 2r^   z	        ^zSyntaxError: invalid syntax)rD   r   rE   r0   rF   r;   r   rG   indexrJ   
splitlinesassertIsr   	last_typeSyntaxErrortype
last_valueassertIsNonelast_traceback__traceback__last_excrK   s   & r   test_syntax_error(TestInteractiveConsole.test_syntax_error^   s.   #-#.#%$,Z$8#: 	Odkk6N6NOO%;<=>6o67**,R0 3+ 	,
 	dkk++[9d4;;112K@$++445$++00>>?dkk**DKK,B,BCr!   c                @   R \        R4      .V P                  n        V P                  P	                  4        RP                  R V P                  P                   4       4      pWP                  R4      R pVRVP                  R4       pV P                  VP                  4       R,          . RO4       V P                  V P                  P                  \        4       V P                  \        V P                  P                   4      \        4       V P#                  V P                  P$                  4       V P#                  V P                  P                   P&                  4       V P                  V P                  P(                  V P                  P                   4       R# )	  1r6   r7   c              3   R   "   T F  pR P                  V^,          4      x  K  	  R# 5ir9   r:   r<   s   & r   r?   @TestInteractiveConsole.test_indentation_error.<locals>.<genexpr>u   rA   rB   ra   Nrb   rc   )z  File "<console>", line 1z    1z#IndentationError: unexpected indent)rD   r   rE   r0   rF   r;   r   rG   re   rJ   rf   rg   r   rh   IndentationErrorrj   rk   rl   rm   rn   ro   rK   s   & r   test_indentation_error-TestInteractiveConsole.test_indentation_errorr   s%   #((:*>"?Odkk6N6NOO%;<=>6o67**,R0 33 	4 	dkk++-=>d4;;1124DE$++445$++00>>?dkk**DKK,B,BCr!   c                   R \        R4      .V P                  n        V P                  P	                  4        RP                  R V P                  P                   4       4      pWP                  R4      R pWP                  R4      ^,           R pV P                  VR4       V P                  V P                  P                  \        4       V P                  \        V P                  P                  4      \        4       V P!                  V P                  P"                  4       V P!                  V P                  P                  P$                  4       V P                  V P                  P&                  V P                  P                  4       R# )u   ''r6   r7   c              3   R   "   T F  pR P                  V^,          4      x  K  	  R# 5ir9   r:   r<   s   & r   r?   <TestInteractiveConsole.test_unicode_error.<locals>.<genexpr>   rA   rB   ra   N
zUnicodeEncodeError: )rD   r   rE   r0   rF   r;   r   rG   re   assertStartsWithrg   r   rh   UnicodeEncodeErrorrj   rk   rl   rm   rn   ro   rK   s   & r   test_unicode_error)TestInteractiveConsole.test_unicode_error   s   #-x
/C"DOdkk6N6NOO%;<=>T*Q./0f&<=dkk++-?@d4;;1124FG$++445$++00>>?dkk**DKK,B,BCr!   c                   R RRR\        R4      .V P                  n        \        P                  ! 4       pWP
                  n        V P                  P                  4        VP                  4        VP                  V P
                  P                  V P
                  P                  V P
                  P                  4       V P                  V P
                  P                  \        4       V P                  \!        V P
                  P                  4      \        4       V P                  V P
                  P                  V P
                  P                  P"                  4       V P                  V P
                  P$                  V P
                  P                  4       V P'                  \(        P*                  ! V P
                  P$                  4      . RO4       R# )r]   z    raise ValueError('BOOM!')r7   zf()r6   N)z#Traceback (most recent call last):
z(  File "<console>", line 1, in <module>
z!  File "<console>", line 2, in f
zValueError: BOOM!
)rD   r   rE   r   Mockr   r   r0   rF   assert_calledassert_called_withrh   rk   rm   rg   
ValueErrorrj   rn   ro   rJ   	tracebackformat_exceptionr   hooks   & r   test_sysexcepthook)TestInteractiveConsole.test_sysexcepthook   s7   #-#B#%#($,Z$8	#:
 yy{!% 5 5 $ 6 6 $ : :	< 	dkk++Z8d4;;112J?dkk00$++2H2H2V2VWdkk**DKK,B,BC33DKK4H4HI L# 	$r!   c                   R RR\        R4      .V P                  n        \        P                  ! 4       pWP
                  n        V P                  P                  4        VP                  4        VP                  V P
                  P                  V P
                  P                  V P
                  P                  4       V P                  V P
                  P                  \        4       V P                  \!        V P
                  P                  4      \        4       V P#                  V P
                  P                  4       V P#                  V P
                  P                  P$                  4       V P                  V P
                  P&                  V P
                  P                  4       V P)                  \*        P,                  ! V P
                  P&                  4      . RO4       R# )r]   r^   r7   r6   N)z  File "<console>", line 2
z
    x = ?
z
        ^
zSyntaxError: invalid syntax
)rD   r   rE   r   r   r   r   r0   rF   r   r   rh   rk   rm   rg   ri   rj   rl   rn   ro   rJ   r   r   r   s   & r   test_sysexcepthook_syntax_error6TestInteractiveConsole.test_sysexcepthook_syntax_error   sB   #-#.#%$,Z$8#: yy{!% 5 5 $ 6 6 $ : :	< 	dkk++[9d4;;112K@$++445$++00>>?dkk**DKK,B,BC33DKK4H4HI L- 	.r!   c                   R \        R4      .V P                  n        \        P                  ! 4       pWP
                  n        V P                  P                  4        VP                  4        VP                  V P
                  P                  V P
                  P                  V P
                  P                  4       V P                  V P
                  P                  \        4       V P                  \!        V P
                  P                  4      \        4       V P#                  V P
                  P                  4       V P#                  V P
                  P                  P$                  4       V P                  V P
                  P&                  V P
                  P                  4       V P)                  \*        P,                  ! V P
                  P&                  4      . RO4       R# )rs   r6   N)z  File "<console>", line 1
z    1
z$IndentationError: unexpected indent
)rD   r   rE   r   r   r   r   r0   rF   r   r   rh   rk   rm   rg   rv   rj   rl   rn   ro   rJ   r   r   r   s   & r   $test_sysexcepthook_indentation_error;TestInteractiveConsole.test_sysexcepthook_indentation_error   s9   #((:*>"?yy{!% 5 5 $ 6 6 $ : :	< 	dkk++-=>d4;;1124DE$++445$++00>>?dkk**DKK,B,BC33DKK4H4HI L5 	6r!   c                   R RR\        R4      .V P                  n        ^V P                  n        V P
                  P                  4        V P                  RR/ .V P                  P                  ^ ,          4       RP                  R V P                  P                   4       4      pV P                  RV4       V P                  VP                  R4      ^4       V P                  R	V4       V P                  R
V4       R# )1/0a = 123print(a)r6   writer7   c              3   f   "   T F'  q^ ,          R8X  g   K  VP                   ^ ,          x  K)  	  R# 5i    r   Nargsr<   s   & r   r?   WTestInteractiveConsole.test_sysexcepthook_crashing_doesnt_close_repl.<locals>.<genexpr>   )     `1IRSWX_M_		!1I   11Error in sys.excepthook:z'int' object is not callableOriginal exception was:division by zeroN123rD   r   rE   r   r   r0   rF   rJ   r   rG   r;   r   rH   count)r   errors   & r   -test_sysexcepthook_crashing_doesnt_close_replDTestInteractiveConsole.test_sysexcepthook_crashing_doesnt_close_repl   s    #()Z*AU"V!"'9b14;;3K3KA3NO`1I1I``0%8%CDaH/7(%0r!   c                  a R RR\        R4      .V P                  n        RoV3R lpWP                  n        V P
                  P                  4        V P                  RR/ .V P                  P                  ^ ,          4       RP                  R V P                  P                   4       4      pV P                  R	V4       V P                  VP                  R4      ^4       V P                  R
V4       V P                  RV4       R# )r   r   r   r6   znot so fastc                     < \        S4      hr-   )BaseException)r   kwargsss   *,r   
raise_baseSTestInteractiveConsole.test_sysexcepthook_raising_BaseException.<locals>.raise_base   s    ""r!   r   r7   c              3   f   "   T F'  q^ ,          R8X  g   K  VP                   ^ ,          x  K)  	  R# 5ir   r   r<   s   & r   r?   RTestInteractiveConsole.test_sysexcepthook_raising_BaseException.<locals>.<genexpr>   r   r   r   r   r   Nr   r   )r   r   r   r   s   &  @r   (test_sysexcepthook_raising_BaseException?TestInteractiveConsole.test_sysexcepthook_raising_BaseException   s    #()Z*AU"V	#!+'9b14;;3K3KA3NO`1I1I``0%8]3Q7/7(%0r!   c                    R .V P                   n        R pWP                  n        V P	                  \
        4      ;_uu_ 4        V P                  P                  4        RRR4       R#   + '       g   i     R# ; i)r   c                      \         hr-   )
SystemExit)r   r   s   *,r   r   ]TestInteractiveConsole.test_sysexcepthook_raising_SystemExit_gets_through.<locals>.raise_base   s    r!   N)r   rE   r   r   assertRaisesr   r0   rF   )r   r   s   & r   2test_sysexcepthook_raising_SystemExit_gets_throughITestInteractiveConsole.test_sysexcepthook_raising_SystemExit_gets_through   sO    #('	!+z**LL!!# +***s   A((A9	c                2   \        R 4      V P                  n        V P                  P	                  RR7       V P                  \        V P                  P                  4      ^4       V P                  P                  ^ ,          pV P                  VRR/ .4       V P                  P                  4        \        R 4      V P                  n        V P                  P	                  RR7       V P                  \        V P                  P                  4      ^4       R# )r6   Foobannerr   r7   N)zFoo

rD   r   rE   r0   rF   rJ   lenr   rG   
reset_mock)r   banner_calls   & r   test_banner"TestInteractiveConsole.test_banner   s    "*:"6U+T[[556:kk..q1w
B&?@ 	 "*:"6R(T[[556:r!   c                   \        R 4      V P                  n        V P                  P	                  RR7       V P                  \        V P                  P                  4      ^4       V P                  P                  ^,          pRpV P                  VRV3/ .4       V P                  P                  4        \        R 4      V P                  n        V P                  P	                  RRR7       V P                  \        V P                  P                  4      ^4       V P                  P                  4        Rp\        R 4      V P                  n        V P                  P	                  RVR7       V P                  \        V P                  P                  4      ^4       V P                  P                  ^,          pVR,           pV P                  VRV3/ .4       R# )	r6   r7   r   "now exiting InteractiveConsole...
r   )r   exitmsgu	   bye! ζжr|   Nr   )r   err_msgexpectedmessages   &   r   test_exit_msg$TestInteractiveConsole.test_exit_msg   sk   "*:"6R(T[[556:++**1-87XK"<= 	 "*:"6R4T[[556: 	 K 	 #+:"6R9T[[556:++**1-T>7XK"<=r!   c                   R \        R4      .V P                  n        V P                  P	                  4        RP                  R V P                  P                   4       4      p\        R4      pV P                  W!4       V P                  V P                  P                  \        4       V P                  \        V P                  P                  4      \        4       V P                  V P                  P                   V P                  P                  P"                  4       V P%                  V P                  P                   4       V P                  V P                  P&                  V P                  P                  4       R# )z(raise ValueError('') from AttributeErrorr6   r7   c              3   R   "   T F  pR P                  V^,          4      x  K  	  R# 5ir9   r:   r<   s   & r   r?   7TestInteractiveConsole.test_cause_tb.<locals>.<genexpr>  rA   rB   z
        AttributeError

        The above exception was the direct cause of the following exception:

        Traceback (most recent call last):
          File "<console>", line 1, in <module>
        ValueError
        N)rD   r   rE   r0   rF   r;   r   rG   r   rH   rg   r   rh   r   rj   rk   rm   rn   assertIsNotNonero   r   rL   r   s   &  r   test_cause_tb$TestInteractiveConsole.test_cause_tb  s    #M$,Z$8#:Odkk6N6NOO   	h'dkk++Z8d4;;112J?dkk00$++2H2H2V2VWT[[778dkk**DKK,B,BCr!   c                   R \        R4      .V P                  n        V P                  P	                  4        RP                  R V P                  P                   4       4      p\        R4      pV P                  W!4       V P                  V P                  P                  \        4       V P                  \        V P                  P                  4      \        4       V P                  V P                  P                   V P                  P                  P"                  4       V P%                  V P                  P                   4       V P                  V P                  P&                  V P                  P                  4       R# )ztry: ham
except: eggs
r6   r7   c              3   R   "   T F  pR P                  V^,          4      x  K  	  R# 5ir9   r:   r<   s   & r   r?   9TestInteractiveConsole.test_context_tb.<locals>.<genexpr>4  rA   rB   ah  
        Traceback (most recent call last):
          File "<console>", line 1, in <module>
        NameError: name 'ham' is not defined

        During handling of the above exception, another exception occurred:

        Traceback (most recent call last):
          File "<console>", line 2, in <module>
        NameError: name 'eggs' is not defined
        N)rD   r   rE   r0   rF   r;   r   rG   r   rH   rg   r   rh   	NameErrorrj   rk   rm   rn   r   ro   r   s   &  r   test_context_tb&TestInteractiveConsole.test_context_tb0  s    #=$,Z$8#:Odkk6N6NOO 
 
 	h'dkk++Y7d4;;112I>dkk00$++2H2H2V2VWT[[778dkk**DKK,B,BCr!   r0   )r"   r#   r$   r%   maxDiffr2   rM   rT   rZ   rp   rw   r   r   r   r   r   r   r   r   r   r   r   r&   r'   r(   s   @r   r+   r+   !   sj     G7,7,6D(D D$...6&	11$;>8D*D Dr!   r+   c                      a  ] tR tRt o R t]P                  ! ]P                  P                  R4      R 4       t
RtV tR# )TestInteractiveConsoleLocalExitiH  c                \    \         P                  R R7      V n        V P                  4        R# )T)
local_exitNr.   r1   s   &r   r2   %TestInteractiveConsoleLocalExit.setUpJ  s     ..$.?r!   z1exit() isn't defined unless there's a site modulec                *   R .V P                   n        V P                  P                  RR7       V P	                  \        V P                  P                  4      ^4       V P                  P                  ^,          pRpV P	                  VRV3/ .4       R# )zexit()r7   r   r   r   N)r   rE   r0   rF   rJ   r   r   rG   )r   r   r   s   &  r   	test_exit)TestInteractiveConsoleLocalExit.test_exitN  sx     $,*R(T[[556:++**1-87XK"<=r!   r   N)r"   r#   r$   r%   r2   unittestskipIfr   flagsno_siter   r&   r'   r(   s   @r   r   r   H  s5      __SYY&&([\> ]>r!   r   __main__)__doc__r   r   r   textwrapr   
contextlibr   r   test.supportr   r   import_moduler   r	   TestCaser+   r   r"   main r!   r   <module>r      s    E 
       7 &""6* &  cDX.. cD  cDL	>h&7&7 >" zMMO r!   