
    /hh=                        S SK Jr  S SKrS SKrS SKJrJr  S SKrS SKJr  S SK r S SK	J
r
  S SKJr  S\ l         " S S	\R                  5      r " S
 S\5      r " S S5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r\S:X  a  \R0                  " SS9  gg)    )runN)captured_outputcaptured_stderr)mock)Func)force_not_colorizedTc                       \ rS rSrS rS\S4S\S4S\S44r\	S	 5       r
\	\R                  R                  \S
S S9S 5       5       rSrg)ExceptionTest   c           	      b    " S S[         5      nU" S5      nU" S5      n X2e! U a     Ue! U a    [        5        n[        R                  R	                  [
        S5       nS Ul        [
        R                  " 5         S S S 5        O! , (       d  f       O= fS S S 5          O! , (       d  f         O= ff = ff = fWR                  5       R                  5       R                  5       nU R                  S[        U5      5        U R                  SUS	   5        U R                  S
US   5        g )Nc                       \ rS rSrS rSrg)JExceptionTest.test_print_exception_unhashable.<locals>.UnhashableException   c                     g)NT )selfothers     C/opt/python-3.13.8/usr/lib/python3.13/idlelib/idle_test/test_run.py__eq__QExceptionTest.test_print_exception_unhashable.<locals>.UnhashableException.__eq__   s        r   N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   UnhashableExceptionr      s    r   r   ex1ex2cleanup_tracebackc                     U $ Nr   tes     r   <lambda>?ExceptionTest.test_print_exception_unhashable.<locals>.<lambda>!   s    ar      zUnhashableException: ex2   zUnhashableException: ex1
   )	Exceptionr   r   patchobjectr   side_effectprint_exceptiongetvaluestrip
splitlinesassertEquallenassertIn)r   r   r   r   outputcttbs          r   test_print_exception_unhashable-ExceptionTest.test_print_exception_unhashable   s    	) 	 "%(!%(		." 	..	& .$&&**30CD)7++- EDD '&&&.	. __$$&113SW%0"Q%80"R&9sY   # B<,B8%B$!B	?	B$
BB$B8!B<$
B4.B81B<4B88B<1/0zdivision by zero
abczSname 'abc' is not defined. Did you mean: 'abs'? Or did you forget to import 'abc'?
zint.reelzAtype object 'int' has no attribute 'reel'. Did you mean: 'real'?
c           	      r   U R                    H5  u  pnU R                  US9    [        [        USS5      5        S S S 5        M7     g ! U aW    [        R
                  " 5       u  pEn[        R                  " XEU5      S   nUR                   SU 3nU R                  Xx5         Nif = f! , (       d  f       M  = f)N)code evalr   z: )
datasubTestr@   compilesysexc_infor   get_message_linesr   r3   )	r   r>   excmsgtypvalr8   actualexpects	            r   test_get_messageExceptionTest.test_get_message2   s    "iiNDs4(5r623 )( (  5#&<<>LCb 223R@CF #~Ru5F$$V4	5 )(s)   B'AAB$!B'#B$$B''
B6	r    c                      S $ )Nc                     g r"   r   r#   s     r   r&   (ExceptionTest.<lambda>.<locals>.<lambda>@   s    $r   r   r   r   r   r&   ExceptionTest.<lambda>@   s    ->r   new_callablec           
      |   U R                   nUS   US   4US   US   4US   US   44nSnU H<  u  u  pVnu  pn
U R                  XX4S9    [        [        USS5      5        S S S 5        M>     U R                  U[        U5      5        g ! U a     [        [        USS5      5         NG! U	 au    [	        5        n[
        R                  " 5         S S S 5        O! , (       d  f       O= fWR                  5       nU R                  X|5        U R                  X5        US-  n  Nf = ff = f! , (       d  f       GM  = f)Nr         )codesr?   r@   )rA   rB   r@   rC   r   r   r/   r0   r5   r3   r4   )r   r   ddata2subtestscode1exc1msg1code2exc2msg2r6   rK   s                r   test_get_multiple_message'ExceptionTest.test_get_multiple_message>   s+    IIA$!!ad|adAaD\:8=4U$!4%tUM2&F34 32 9> 	3u:.  	&&WUB78 &,.&//1 /..!'!2d3d3 A&	& 32s`   
D+B

D(B)'D+)D$	9C	D$	
C&">D$	 D(!D+#D$	$D((D++
D;	r   N)r   r   r   r   r9   ZeroDivisionError	NameErrorAttributeErrorrA   r   rM   r   r,   r-   r   rb   r   r   r   r   r
   r
      s    :. %';<I  F G +,	D 	5 	5 	ZZs/$?  A/A /r   r
   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
SW   c                 2    S[        U 5      R                  -  $ )Nz%s:strtyper   r   s    r   __str__	S.__str__X   s    $t*----r   c                 2    S[        U 5      R                  -  $ )Nz
%s:unicoderk   rm   s    r   __unicode__S.__unicode__Z   s    d4j1111r   c                     gNr)   r   rm   s    r   __len__	S.__len__\   s    r   c                     [        S5      $ )Nr<   )iterrm   s    r   __iter__
S.__iter__^   s    E{r   c                 2    S[        U 5      R                  -  $ )Nz%s:itemrk   r   argss     r   __getitem__S.__getitem__`   s    4:....r   c                 2    S[        U 5      R                  -  $ )Nz%s:slicerk   r|   s     r   __getslice__S.__getslice__b   s    DJ////r   r   N)r   r   r   r   rn   rq   ru   ry   r~   r   r   r   r   r   rh   rh   W   s     .2/0r   rh   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
	MockShellf   c                 $    U R                  5         g r"   )resetrm   s    r   __init__MockShell.__init__g   s    

r   c                 :    U R                   R                  U5        g r"   )writtenappendr|   s     r   writeMockShell.writei   s    D!r   c                 6    U R                   R                  5       $ r"   )linespoprm   s    r   readlineMockShell.readlinek   s    zz~~r   c                     g r"   r   rm   s    r   closeMockShell.closem   s    r   c                     / U l         g r"   )r   rm   s    r   r   MockShell.reseto   s	    r   c                 0    [        U5      S S S2   U l        g )N)listr   )r   r   s     r   pushMockShell.pushq   s    %[2&
r   )r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   f   s     " 'r   r   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
StdInputFilesTestu   c                    [        5       n[        R                  " US5      nU R                  U[        R
                  5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  5        U R                  UR                  S5        U R                  UR                  5        U R                  UR                  5       5        U R                  UR!                  5       5        U R                  UR#                  5       5        U R                  UR%                  5       5        g )Nstdinutf-8strictz<stdin>)r   r   StdInputFileassertIsInstanceio
TextIOBaser3   encodingerrorsassertIsNonenewlinesnameassertFalseclosed
assertTrueisattyreadablewritableseekabler   shellfs      r   	test_miscStdInputFilesTest.test_miscw   s    UG,a/W-8,!**%+"
#

%&&r   c                    [        5       n[        R                  " US5      nU R                  [        UR
                  5        U R                  [        UR                  5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  S/5        g )Nr   r   x)
r   r   r   assertRaisesOSErrorfilenotellseekr   
writelinesr   s      r   test_unsupported"StdInputFilesTest.test_unsupported   s    UG,'188,'166*'1661-'177C0'1<<#7r   c                    [        5       n[        R                  " US5      nUR                  / SQ5        U R	                  UR                  5       S5        UR                  / SQ5        U R	                  UR                  S5      S5        UR                  / SQ5        U R	                  UR                  S 5      S5        UR                  / SQ5        U R	                  UR                  S5      S5        U R	                  UR                  S5      S	5        U R	                  UR                  S
5      S5        UR                  SS/5        U R	                  UR                  S5      S5        U R                  [        UR
                  S5        U R                  [        UR
                  S5        U R                  [        UR
                  SS5        g )Nr   one
two
r?   one
two
r   )r   r   three
r?   rW   onr)   ze
tr*   z	wo
three
r   r   r   r?         ?1rV   )r   r   r   r   r3   readr   	TypeErrorr   s      r   	test_readStdInputFilesTest.test_read   sJ   UG,

)*<0

)*\2

)*|4

45D)F+]3

GW%&B')QVVS1)QVVS1)QVVQ2r   c                    [        5       n[        R                  " US5      nUR                  / SQ5        U R	                  UR                  5       S5        U R	                  UR                  S5      S5        U R	                  UR                  S 5      S5        UR                  S/5        U R	                  UR                  5       S5        U R	                  UR                  5       S5        UR                  / SQ5        U R	                  UR                  5       S	5        U R	                  UR                  5       S
5        UR                  / SQ5        U R	                  UR                  S5      S5        U R	                  UR                  S5      S5        U R	                  UR                  S5      S5        U R	                  UR                  S5      S5        UR                  SS/5        U R	                  UR                  S5      S5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  SS5        g )Nr   )r   r   r   zfour
r   r   r   r   r   )onetwothreer   r   )r   r   r   rW   r   rV   r%   
r*   r   r?   r   r   )	r   r   r   r   r3   r   r   r   	readlinesr   s      r   test_readlineStdInputFilesTest.test_readline   s   UG,

:;w/B1D)95

L>"w/w/

*+u-u-

01A-A,A-B1

GW%&A+)Q[[#6)Q[[#6)Q[[!Q7r   c                    [        5       n[        R                  " US5      nUR                  / SQ5        U R	                  UR                  5       SS/5        UR                  / SQ5        U R	                  UR                  S5      SS/5        UR                  / SQ5        U R	                  UR                  S 5      SS/5        UR                  / SQ5        U R	                  UR                  S5      SS/5        UR                  / SQ5        U R	                  UR                  S5      S/5        UR                  / SQ5        U R	                  UR                  S5      SS/5        UR                  / SQ5        U R                  [        UR
                  S	5        U R                  [        UR
                  S
5        U R                  [        UR
                  SS5        g )Nr   r   r   r   r   r   r)      r   r   rV   )r   r   r   r   r3   r   r   r   r   s      r   test_readlines StdInputFilesTest.test_readlines   sd   UG,

)*'(:;

)*R7G*<=

)*T*Wg,>?

)*Q'7);<

)*Q'3

)*Q'7);<

)*)Q[[#6)Q[[#6)Q[[!Q7r   c                    [        5       n[        R                  " US5      nUR                  / SQ5        U R	                  UR
                  5        U R                  UR                  5       S5        UR                  5         U R	                  UR
                  5        U R                  UR                  5       S5        U R                  [        UR                  S5        g )Nr   r   r   r   rV   )r   r   r   r   r   r   r3   r   r   r   r   r   s      r   
test_closeStdInputFilesTest.test_close   s    UG,

)*"w/		"w/)QWWa0r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   u   s     '83(828*	1r   r   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
StdOutputFilesTest   c                    [        5       n[        R                  " US5      nU R                  U[        R
                  5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  5        U R                  UR                  S5        U R                  UR                  5        U R                  UR                  5       5        U R                  UR!                  5       5        U R                  UR#                  5       5        U R                  UR%                  5       5        g )Nstdoutr   r   z<stdout>)r   r   StdOutputFiler   r   r   r3   r   r   r   r   r   r   r   r   r   r   r   r   r   s      r   r   StdOutputFilesTest.test_misc   s    eX.a/W-8,!**%,"
#&

%&r   c                    [        5       n[        R                  " US5      nU R                  [        UR
                  5        U R                  [        UR                  5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  S5        g )Nr   r   )
r   r   r   r   r   r   r   r   r   r   r   s      r   r   #StdOutputFilesTest.test_unsupported   s    eX.'188,'166*'1661-'1661-'1::q1r   c                    [        5       n[        R                  " US5      nUR                  S5        U R	                  UR
                  S/5        UR                  5         UR                  S5        U R	                  UR
                  S/5        UR                  5         UR                  [        S5      5        U R	                  UR
                  S/5        U R	                  [        UR
                  S   S   5      [        5        UR                  5         U R                  [        UR                  5        U R	                  UR
                  / 5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R	                  UR
                  / 5        U R                  [        UR                  SS	5        U R	                  UR
                  / 5        g )
Nr   testr   r   	   tèś𝖙)r   r   r      test{   spamr   r   r   r   r3   r   r   rh   rl   strr   r   r   s      r   
test_writeStdOutputFilesTest.test_write   s_   eX.	);(<=	'()L(MN	)*+)L(MNemmA.q12C8)QWW-+)QWWg6)QWWc2+)QWWff=+r   c                 b   [        5       n[        R                  " USSS5      nUR                  S5        U R	                  UR
                  S/5        UR                  5         UR                  [        S5      5        U R	                  UR
                  S/5        U R	                  [        UR
                  S   S   5      [        5        UR                  5         U R                  [        UR                  5        U R	                  UR
                  / 5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R	                  UR
                  / 5        U R                  [        UR                  S	S
5        U R	                  UR
                  / 5        g )Nstderrziso-8859-15backslashreplaceu   tèś𝖙¤)u   tè\u015b\U0001d599\xa4r   r   r   r   r   r   r   r   s      r   test_write_stderr_nonencodable1StdOutputFilesTest.test_write_stderr_nonencodable  s8   eX}>PQ	+,)S(TU	-./)S(TUemmA.q12C8)QWW-+)QWWg6)QWWc2+)QWWff=+r   c                    [        5       n[        R                  " US5      nUR                  / 5        U R	                  UR
                  / 5        UR                  5         UR                  SS/5        U R	                  UR
                  SS/5        UR                  5         UR                  SS/5        U R	                  UR
                  SS	/5        UR                  5         UR                  [        S
5      /5        U R	                  UR
                  S/5        U R	                  [        UR
                  S   S   5      [        5        UR                  5         U R                  [        UR                  5        U R	                  UR
                  / 5        U R                  [        UR                  S5        U R	                  UR
                  / 5        U R                  [        UR                  S/5        U R                  [        UR                  S/5        U R	                  UR
                  / 5        U R                  [        UR                  / / 5        U R	                  UR
                  / 5        g )Nr   r   r   )r   r   )r   r      onè
   twò)r   r   )r   r      tèst)r   r   r   r   r   )r   r   r   r   r3   r   r   rh   rl   r   r   r   r   s      r   test_writelines"StdOutputFilesTest.test_writelines   s   eX.	R+	gu%&-/@A	C	j(+,02FG	I	a	l^$)>(?@emmA.q12C8)Q\\2+)Q\\37+)Q\\G9=)Q\\C59+)Q\\2r:+r   c                    [        5       n[        R                  " US5      nU R                  UR                  5        UR                  S5        UR                  5         U R                  UR                  5        U R                  [        UR
                  S5        U R                  UR                  S/5        UR                  5         U R                  [        UR                  S5        g )Nr   r   r   r   rV   )r   r   r   r   r   r   r   r   r   
ValueErrorr3   r   r   r   s      r   r   StdOutputFilesTest.test_close>  s    eX."			!*aggs3);(<=		)QWWa0r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s     '2,.,(,<
1r   r   c                   ,    \ rS rSrS rS rS rS rSrg)RecursionLimitTestiK  c                    [         R                  " 5         U R                  [         R                  5        [        R
                  nU R                  [        USS9  U R                  [        USS5        U R                  [        US5        g )Nd   )limiti  r   )	r   install_recursionlimit_wrappers
addCleanup!uninstall_recursionlimit_wrappersrD   setrecursionlimitr   r   r   )r   r   s     r    test_bad_setrecursionlimit_calls3RecursionLimitTest.test_bad_setrecursionlimit_callsN  sf    ++-==>!!)Qc2)QT2*a+r   c                 Z   [         R                  " 5         U R                  [         R                  5        [        R
                  " 5       nU R                  [        R                  U5        [        R                  " US-   5        [        R
                  " 5       nU R                  X!S-   5        g rt   )r   r  r  r	  rD   getrecursionlimitr
  r3   r   orig_reclimitnew_reclimits      r   test_roundtrip!RecursionLimitTest.test_roundtripV  sz    ++-==> --/--}=ma/0 ,,.q'89r   c                     [         R                  " 5       n[        R                  " 5         U R	                  [        R
                  5        [         R                  " 5       nU R                  X!5        g r"   )rD   r  r   r  r  r	  r3   r  s      r   &test_default_recursion_limit_preserved9RecursionLimitTest.test_default_recursion_limit_preservedc  sJ    --/++-==>,,.5r   c                     S n[         R                  " US5        U R                  UR                  S5        S Ul        [         R                  " US5        U R                  UR                  S5        g )Nc                      g r"   r   r   r   r   func,RecursionLimitTest.test_fixdoc.<locals>.funcl      r   morezdocstring

more)r   fixdocr3   __doc__)r   r  s     r   test_fixdocRecursionLimitTest.test_fixdocj  sQ    

4 ':;

4 v.r   r   N)	r   r   r   r   r  r  r  r  r   r   r   r   r  r  K  s    ,:6/r   r  c                       \ rS rSrS rSrg)HandleErrorTestit  c                    U R                   n[        S5       n[        R                  " S[        S9 n [
        e! [
         a$    [        R                  R                  S SS5         Of = fU" [        R                  S5        S[        l	        U" UR                  5       S5         [        e! [         a$    [        R                  R                  S SS5         Of = fU" [        R                  S5        S[        l        UR                  5       nU R                  SU5        U R                  SU5        U R                  S	U5        U" UR                  S
5        S S S 5        O! , (       d  f       O= fS S S 5        g ! , (       d  f       g = f)N
__stderr__z!idlelib.run.thread.interrupt_mainrS   r<   123TFr?   
IndexErrorrW   )r3   r   r   r,   r   EOFErrorr   MyRPCServerhandle_errorexit_nowr0   r&  quittingr5   called)r   eqerrr  rH   s        r   test_fatal_error HandleErrorTest.test_fatal_errorv  s*   \*cZZ;%)+.2A A,,T5%@As||T" CLs||~r"A   A,,T5%@As||T" CL,,.CMM%%MM%%MM,,t{{A)+ + + +**s\   E:E :+A(%E 'A((<E %B+++CE CA>E 	E: 
E.	*E::
Fr   N)r   r   r   r   r/  r   r   r   r   r"  r"  t  s    r   r"  c                   :    \ rS rSr\S 5       r\S 5       rS rSrg)ExecRuncodeTesti  c                 0   U R                  [        [        S[        R                  5        [	        5       U l        U R
                  [        l        [        R                  " 5       n[	        SS9UR                  l	        [        R                  " U5      U l        g )Nr/   F)result)addClassCleanupsetattrr   r/   r   prtr   Mockconsolegetvar	Executiveex)clsmockrpcs     r   
setUpClassExecRuncodeTest.setUpClass  s^    GC(9#:M:MN&!gg))+!%U!3w'r   c                     g r"   r   )r=  s    r   tearDownClassExecRuncodeTest.tearDownClass  r  r   c                 B   U R                   nUR                  S5        U R                  UR                  S   [        5        U R                  [        [        S[        R                  5        S [        l	        UR                  S5        U R                  U R                  R                  S   [        5        S [        l	        UR                  S5        UR                  u  p#nU R                  U[        5        U R                  [        UR                  [        5      5        g )Nr;   r   
excepthookc                 .    [         R                  " U 5      $ r"   )r   r/   )r$   r%   r8   s      r   r&   1ExecRuncodeTest.test_exceptions.<locals>.<lambda>  s    #*=*=a*@r   c                      g r"   r   r   r   r   r&   rG    s    r   )r<  runcodeassertIsuser_exc_inford   r  r6  rD   __excepthook__rE  r7  r}   r   r   
isinstance__context__)r   r<  r$   r%   r8   s        r   test_exceptionsExecRuncodeTest.test_exceptions  s    WW


5b&&q)+<=lC4F4FG@


5dhhmmA&(9:%


5##ba#
1==2CDEr   r   N)	r   r   r   r   classmethodr?  rB  rO  r   r   r   r   r2  r2    s.    ( ( 4 4Fr   r2  __main__rW   )	verbosity)idlelibr   r   rD   test.supportr   r   unittestr   idlelib.idle_test.mock_idler   r   testingTestCaser
   r   rh   r   r   r   r  r"  r2  r   mainr   r   r   <module>r[     s     	 
 9    , ,C/H%% C/N0 0' 'd1)) d1Nl1** l1^&/** &/Rh'' 8Fh'' F@ zMMA r   