
    hJ                        S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKrSSKrSSKJr  SSKJr  SSKJr  S/\l        S	 r " S
 S\5      r " S S\	R2                  \S9r " S S\5      r " S S\5      r " S S\	R2                  5      r " S S\5      r " S S\5      r " S S\5      r  " S S\5      r! " S S\5      r" " S S \5      r# " S! S"\5      r$ " S# S$\5      r%S%r&S&r' " S' S(\5      r( " S) S*\5      r) " S+ S,\5      r* " S- S.\5      r+ " S/ S0\5      r, " S1 S2\5      r-\R\                  R_                  S35      r0\0(       a	  \1" S4S55      r2S6 r3S7 r4S8 r5S:S9 jr6g);z
Tests that run inside GDB.

Note: debug information is already imported by the file generated by
Cython.Debugger.Cygdb.make_command_file()
    N   )	libcython)	libpython   )TestLibCythongdbc                 F   ^  [         R                  " T 5      U 4S j5       nU$ )Nc                    > [        [        U 5      R                  TR                  5         T" U /UQ70 UD6$ ! [         a!    [        S[        R
                  " 5       5        e f = f)NzAn exception occurred:)_debugtype__name__	Exception	traceback
format_exc)selfargskwargsfuncs      e/var/www/fran/franai/venv/lib/python3.13/site-packages/Cython/Debugger/Tests/test_libcython_in_gdb.pywrapper(print_on_call_decorator.<locals>.wrapper$   s[    tDz""DMM2	.t.v.. 	+Y-A-A-CD	s	   8 +A#)	functoolswraps)r   r   s   ` r   print_on_call_decoratorr   #   s%    __T  N    c                       \ rS rSrS rSrg)TraceMethodCallMeta0   c                     UR                  5        H7  u  pE[        R                  " U5      (       d  M"  [        X[	        U5      5        M9     g N)itemsinspect
isfunctionsetattrr   )r   namebasesdict	func_namer   s         r   __init__TraceMethodCallMeta.__init__2   s5    #zz|OI!!$'')@)FG  ,r    N)r   
__module____qualname____firstlineno__r)   __static_attributes__r+   r   r   r   r   0   s    Hr   r   c                   R   ^  \ rS rSrSrU 4S jrS
S jrS rSS jrS r	S r
S	rU =r$ )DebugTestCase8   zZ
Base class for test cases. On teardown it kills the inferior and unsets
all breakpoints.
c                 n  > [         TU ]  U5        [        R                  U l        [        R                  R                  S   U l        [        R                  R                  S   u  U l        U l        [        R                  R                  S   U l
        [        R                  R                  S   U l        g )Ncodefilespamzcodefile.hamzcodefile.eggs)superr)   r   cycython_namespacemodulefunctions_by_name	spam_func	spam_methfunctions_by_qualified_nameham_func	eggs_func)r   r%   	__class__s     r   r)   DebugTestCase.__init__>   s    ,,ll33J?)2)G)G)O&!@@"AAr   c                 V    [         R                  " SU-  5      nU(       a  U" U5      nU$ )Nz$cy_cvalue("%s"))r   parse_and_eval)r   varnamecast_toresults       r   read_varDebugTestCase.read_varH   s)    ##$6$@AV_Fr   c                 ,    [         R                  " SSS9$ )Nzinfo localsT	to_stringr   executer   s    r   
local_infoDebugTestCase.local_infoO   s    {{=D99r   c                     Ub  [         R                  U   n[        R                  " 5       nU R	                  [
        R                  R                  U5      U5        g r    )test_libcythonsource_to_linenor   selected_frameassertEqualr   cython_infolineno)r   source_linerW   frames       r   lineno_equalsDebugTestCase.lineno_equalsR   sG    "#44[AF""$..55e<fEr   c                     [         R                  U   n[        R                  " SU-  SS9  [        R                  " SSS9  g )Nzcy break codefile:%dTrJ   run)rR   rS   r   rM   )r   rX   break_linenos      r   break_and_runDebugTestCase.break_and_runX   s4    %66{C*\9TJET*r   c                     [         R                  " SSS9   [         R                  " SSS9  [         R                  " S5        g ! [         a     N#f = f)Nzdelete breakpointsTrJ   zkill inferior 1zset args -c "import codefile")r   rM   RuntimeErrorrN   s    r   tearDownDebugTestCase.tearDown]   sH    (D9	KK)T: 	34  		s   A 
AA)r7   r?   r>   r9   r;   r<   r    NN)r   r,   r-   r.   __doc__r)   rG   rO   rZ   r_   rc   r/   __classcell__r@   s   @r   r1   r1   8   s,    
:F+
5 5r   r1   )	metaclassc                   &    \ rS rSrS rS rS rSrg)TestDebugInformationClassesg   c                     U R                  U R                  R                  S5        Sn[        U5      R	                  U R                  R
                  5      (       d   eg)zDtest that debug information was parsed properly into data structuresr4   )c_var
python_varr   __builtins__rf   __file__N)rU   r9   r%   setissubsetglobals)r   global_varss     r   test_CythonModule-TestDebugInformationClasses.test_CythonModulei   sI    )):6>;(()<)<====r   c                 $   U R                   R                  nUS   nUS   nU R                  UR                  [        R
                  5        U R                  UR                  [        R                  5        U R                  UR                  S5        g )Nrn   ro   zcodefile.c_var)r9   rt   rU   r   r   CObjectPythonObjectqualified_name)r   module_globalsrn   ro   s       r   test_CythonVariable/TestDebugInformationClasses.test_CythonVariablep   sp    ,,w'#L1
Y%6%67)*@*@A--/?@r   c                 ~   U R                  U R                  R                  S5        U R                  U R                  R                  S5        U R                  U R                  R                  U R                  5        U R
                  R                  (       d'   U R
                  U R
                  R                  45       eU R                  R                  (       a   eU R                  R                  (       a   eU R                  R                  (       a   eU R                  U R                  R                  [        R                  5        U R                  U R                  R                  [        R                  5        U R                  U R                  R                  S/5        U R                  U R                  R                  SS15        [        R                  S   nU R                  U R                  R                  U5        U R                  [!        U R                  R"                  5      [%        S5      5        g )Nzcodefile.spamzcodefile.SomeClass.spamaputssome_c_functiondef spam(a=0):abcd)rU   r;   r{   r<   r9   r?   pf_cnamer>   r   r   ry   	argumentsstep_into_functionsrR   rS   rW   sortedlocalslist)r   expected_linenos     r   test_CythonFunction/TestDebugInformationClasses.test_CythonFunctionx   s   66H662	4..<~~&&Q9P9P(QQ&==))))>>****>>****,,i.?.?@++Y->->?11C59;; "34	6 )99:JK..@ 5 56VEr   r+   N)r   r,   r-   r.   rv   r}   r   r/   r+   r   r   rk   rk   g   s    >AFr   rk   c                        \ rS rSrS rS rSrg)TestReprMethods   c                 z  ^ [         R                  n[        [        R                  " U5      R
                  5      n[        R                  " S5      mU4S j[        U5       5       nU" U6 n[        S[        U5      -   5      nU R                  [        R                  " U5      [        R                  " U5      5        g )Nr   c              3   F   >#    U  H  nTR                  S 5      v   M     g7f)   N)	randbytes).0_lorem_ipsums     r   	<genexpr>3TestReprMethods.test_simple_repr.<locals>.<genexpr>   s     IA{,,Q//s   !z
libcython.)r   CythonModulelenr"   	signature
parametersrandomRandomrangeevalreprrU   pickledumps)r   
test_classnum_argsfiller_argsinstance	recreatedr   s         @r   test_simple_repr TestReprMethods.test_simple_repr   s    ++
w((4??@mmA&IxI{+X67	h/i1HIr   c                     SnU R                  U5        [        R                  " 5       nU R                  [        R
                  " U5      [        R
                  " U5      5        g )N	import os)r_   r   rT   rU   r   
frame_repr)r   	beginlinerY   s      r   test_frame_reprTestReprMethods.test_frame_repr   sL    	9%""$--e4"--e4	6r   r+   N)r   r,   r-   r.   r   r   r/   r+   r   r   r   r      s    J6r   r   c                       \ rS rSrS rSrg)TestParameters   c                     [         R                  " S5        [        R                  R                  (       d   e[         R                  " S5        [        R                  R                  (       a   eg )Nzset cy_colorize_code onzset cy_colorize_code off)r   rM   r   r   colorize_coderN   s    r   test_parametersTestParameters.test_parameters   sI    -.##1111./''55555r   r+   N)r   r,   r-   r.   r   r/   r+   r   r   r   r      s    6r   r   c                   ,    \ rS rSrS rS rS rS rSrg)	TestBreak   c                    [        [        R                  " 5       =(       d    S5      n[        R                  " S5        U R	                  [        [        R                  " 5       5      US-   5        [        R                  " 5       S   nU R	                  UR
                  [        R                  5        U R                  R                  UR                  ;   d   eUR                  (       d   eg )Nr+   cy break codefile.spamr   )r   r   breakpointsrM   rU   r   BP_BREAKPOINTr;   cnamelocationenabled)r   breakpoint_amountbps      r   
test_breakTestBreak.test_break   s     1 7R8,-S__./1BQ1FG__r"#"3"34~~##r{{222zzzr   c                 f    [         R                  " S5        S[         R                  " SSS9;   d   eg )Nzcy break -p joinz	def join(cy runTrJ   rL   rN   s    r   test_python_breakTestBreak.test_python_break   s(    &'ckk(dCCCCr   c                     SnSnU R                  U5        U R                  U5        [        R                  " SSS9nU R                  U5        UR	                  5       R                  U5      (       d   eg )Nr   zcdef int c_var = 12cy stepTrJ   )r_   rZ   r   rM   rstripendswith)r   r   nextlinestep_results       r   test_break_linenoTestBreak.test_break_lineno   sf    	(9%9%kk)t<8$!!#,,X6666r   c                     [         R                  R                  R                  nU R	                  SU" SS5      5        U R	                  SU" SS 5      5        U R	                  SU" SS 5      5        g )Nr5   zcodefile.SomeClass.sszcodefile.SomeClass.pamz
codefile.s)r   r7   break_completeassertIn)r   	completers     r   test_break_completionTestBreak.test_break_completion   sX    LL''00	fi(>DEfi(=tDEeY|T:;r   r+   N)	r   r,   r-   r.   r   r   r   r   r/   r+   r   r   r   r      s    D7<r   r   c                       \ rS rSrSS jrSrg)DebugStepperTestCase   Nc                     [         R                  " U R                  5        U H4  u  pEU R                  U R	                  U5      XPR                  5       5        M6     U R                  X#5        g r    )r   rM   commandrU   rG   rO   rZ   )r   varnames_and_valuesrX   rW   rD   values         r   stepDebugStepperTestCase.step   sN    DLL!1NGT]]73UOO<MN 2 	;/r   r+   re   )r   r,   r-   r.   r   r/   r+   r   r   r   r      s    0r   r   c                   *    \ rS rSrSrS rS rS rSrg)TestStep   zV
Test stepping. Stepping happens in the code found in
Cython/Debugger/Tests/codefile.
c                 H   [         R                  " S5        [         R                  " SSS9  U R                  S5        [         R                  " SSS9  U R                  S5        SU l        U R	                  S/S	S
9  U R	                  SS/SS
9  U R	                  S/SS
9  U R	                  / SS
9  [         R                  " SSS9  U R                  [        [         R                  " 5       5      S5        U R                  [         R                  " 5       S   R                  S5        g )Nr   r]   TrJ   r   r   zb = c = d = 0)br   zb = 1)rX   )r   r   )cr   c = 2)r   r   int(10)puts("spam")contr   r   )	r   rM   rZ   r   r   rU   r   	inferiorspidrN   s    r   test_cython_stepTestStep.test_cython_step   s    ,-ET*+,I.?+ 		8*'	2		8X&G	<		8*)	4		".	1Fd+S]]_-q1+//3r   c                     U R                  S5        [        R                  " SSS9  U R                  [        R                  " 5       R                  5       S5        g )Nsome_c_function()r   TrJ   r   )r_   r   rM   rU   rT   r%   rN   s    r   test_c_stepTestStep.test_c_step   sB    ./I.++-2246GHr   c                    U R                  S5        [        R                  " SSS9n[        R                  " 5       nU R	                  UR                  5       S5        [        R                  " U5      R                  5       nUR                  R                  [        5       5      nU R	                  US5        [        R                  " SU5      (       d   U5       eg )Nos.path.join("foo", "bar")r   TrJ   PyEval_EvalFrameExjoinz\d+    def join\()r_   r   rM   rT   rU   r%   r   Frameget_pyopco_nameproxyvalrr   rematch)r   rF   curframepyframe
frame_names        r   test_python_stepTestStep.test_python_step   s    78Y$7%%'*>?//(+446 __--ce4
V,xx,f55=v=5r   )r   N)	r   r,   r-   r.   rf   r   r   r  r/   r+   r   r   r   r      s    
4&I
>r   r   c                       \ rS rSrS rSrg)TestNexti  c                     U R                  S5        SnU H*  n[        R                  " S5        U R                  U5        M,     g )Nr   )r   r   r   r   zcy next)r_   r   rM   rZ   )r   lineslines      r   test_cython_nextTestNext.test_cython_next  s=    7#
 DKK	"t$ r   r+   N)r   r,   r-   r.   r  r/   r+   r   r   r  r    s    %r   r  c                        \ rS rSrS rS rSrg)TestLocalsGlobalsi   c                     U R                  S5        [        R                  " SSS9n  SU;   d   [        U5      5       eg )Nr   	cy localsTrJ   zc = (int) 2r_   r   rM   r   r   rF   s     r   test_localsTestLocalsGlobals.test_locals"  s=    9%[D9&4V4&r   c                 ,   U R                  S5        [        R                  " SSS9nSU;   d   [        U5      5       eSU;   d   [        U5      5       eSU;   d   [        U5      5       eSU;   d   [        U5      5       eS	U;   d   [        U5      5       eg )
Nr   z
cy globalsTrJ   z	__name__ z__doc__ zos zc_var zpython_var r  r  s     r   test_globalsTestLocalsGlobals.test_globals*  s    9%\T:f$2d6l2$V#1T&\1#,V,6!/4</!&4V4&r   r+   N)r   r,   r-   r.   r  r  r/   r+   r   r   r  r     s    55r   r  c                       \ rS rSrS rSrg)TestBacktracei5  c                     S[         R                  R                  l        U R	                  S5        S n[
        R                  " SSS9nU" U5        [
        R                  " SSS9nU" U5        g )NFr   c                 d    [         R                  " SU 5      (       d   U 5       eSU ;   d   U 5       eg )Nz-\#\d+ *0x.* in spam\(\) at .*codefile\.pyx:22r   )r   search)rF   s    r   match_backtrace_output<TestBacktrace.test_backtrace.<locals>.match_backtrace_output<  s>    99M#% % -&,- %/69A6A9r   zcy btTrJ   zcy bt -a)r   r   r   r   r_   r   rM   )r   r  rF   s      r   test_backtraceTestBacktrace.test_backtrace7  s]    38	**078	B
 W5v&Z48v&r   r+   N)r   r,   r-   r.   r   r/   r+   r   r   r  r  5  s    'r   r  c                       \ rS rSrS rSrg)TestFunctionsiK  c                 N   U R                  S5        [        R                  " SSS9n[        R                  " SU5      (       d   U5       e[        R                  " SSS9n[
        R                  S   n[        U5      U;   d   X!45       e[        R                  " SSS9nSU;   d   eg )	Nr   zprint $cy_cname("b")TrJ   z	__pyx_.*bzprint $cy_lineno()zprint $cy_cvalue("b")z= 1)r_   r   rM   r   r  rR   rS   str)r   rF   supposed_linenos      r   test_functionsTestFunctions.test_functionsM  s    7#3tDyyf--5v5-1TB(99'B?#v-H/HH-4Er   r+   N)r   r,   r-   r.   r'  r/   r+   r   r   r#  r#  K  s    
r   r#  c                       \ rS rSrS rSrg)	TestPrintiZ  c                    U R                  S5        [        R                  " SSS9nU R                  SU5        [        R                  " SSS9nU R                  SU5        [        R                  " SSS9nU R                  S	U5        g )
Nr   z
cy print bTrJ   zb = (int) 1
zcy print python_varzpython_var = 13
zcy print c_varzc_var = (int) 12
)r_   r   rM   rU   r  s     r   
test_printTestPrint.test_print\  st    7#\T:&12dC,f5->-v6r   r+   N)r   r,   r-   r.   r,  r/   r+   r   r   r*  r*  Z  s    7r   r*  z    14            int b, c
    15
    16        b = c = d = 0
    17
    18        b = 1
>   19        c = 2
    20        int(10)
    21        puts("spam")
    22        os.path.join("foo", "bar")
    23        some_c_function()
z     5        void some_c_function()
     6
     7    import os
     8
     9    cdef int c_var = 12
>   10    python_var = 13
    11
    12    def spam(a=0):
    13        cdef:
    14            int b, c
c                   &    \ rS rSrS rS rS rSrg)TestListi  c                     Sn[         R                  S5       H-  n[        U5      S:  a  [        U5      S:  a  US-  nX#S-   -  nM/     US S ng )N 

   r   z    r   )$correct_result_test_list_inside_funcsplitr   )r   correct_result_wrong_whitespacecorrect_resultr  s       r   #workaround_for_coding_style_checker,TestList.workaround_for_coding_style_checker  sU    8>>tDD4y2~#d)a-Tk)N E (,r   c                    U R                  S5        [        R                  " SSS9nSR                  UR	                  S5       Vs/ s H  o"R                  5       PM     sn5      nU R                  [        U5        g s  snf )Nr   cy listTrJ   r2  )r_   r   rM   r   r5  r   rU   r4  r   rF   r  s      r   test_list_inside_funcTestList.test_list_inside_func  se    7#Y$7 fll46HI6HdKKM6HIJ=vF J   A<c                    U R                  S5        [        R                  " SSS9nSR                  UR	                  S5       Vs/ s H  o"R                  5       PM     sn5      nU R                  [        U5        g s  snf )Nzpython_var = 13r;  TrJ   r2  )r_   r   rM   r   r5  r   rU   %correct_result_test_list_outside_funcr<  s      r   test_list_outside_funcTestList.test_list_outside_func  sf    ,-Y$7 fll46HI6HdKKM6HIJ>G Jr?  r+   N)r   r,   r-   r.   r8  r=  rB  r/   r+   r   r   r/  r/    s    -GHr   r/  c                       \ rS rSrS rSrg)
TestUpDowni  c                     U R                  S5        [        R                  " S5        U R                  [        [        R                  S5        [        R                  " SSS9nSU;   d   eSU;   d   eg )Nr   r   zcy downzcy upTrJ   zspam())r_   r   rM   assertRaisesrb   r  s     r   test_updownTestUpDown.test_updown  s_    78I,Y?W56!!!+v555r   r+   N)r   r,   r-   r.   rH  r/   r+   r   r   rE  rE    s    6r   rE  c                   F   ^  \ rS rSrU 4S jrU 4S jrS rS rS rSr	U =r
$ )TestExeci  c                    > [         TU ]  5         [        R                  " 5       u  U l        U l        [        R                  " U R                  S5      U l        g )Nzr+)	r6   setUptempfilemkstempfdtmpfilenameosfdopentmpfiler   r@   s    r   rM  TestExec.setUp  s:    $,$4$4$6!!yy$/r   c                    > [         TU ]  5          U R                  R                  5         [        R
                  " U R                  5        g ! [        R
                  " U R                  5        f = fr    )r6   rc   rT  closerR  removerQ  rU  s    r   rc   TestExec.tearDown  sH    	(LL IId&&'BIId&&'s   A "A.c                     [         R                  " SU R                  < SU< S35        U R                  R	                  5       R                  5       $ )Nzcy exec open(z, "w").write(str(z)))r   rM   rQ  rT  readstrip)r   r   s     r   eval_commandTestExec.eval_command  s<    151A1A7L 	M||  "((**r   c                 h    U R                  S5        U R                  SU R                  S5      5        g )Nr   z[0]z[a])
r_   rU   r^  r   rM   textwrapdedentrT  r\  r   r  s     r   test_cython_execTestExec.test_cython_exec  s1    78 	 1 1% 89r   c                     U R                  S5        [        R                  " S5        [        R                  " S5        U R                  SU R	                  S5      5        g )Nr   r   zcy exec some_random_var = 1414some_random_var)r_   r   rM   rU   r^  rN   s    r   test_python_execTestExec.test_python_exec  sF    78I23t001BCDr   )rP  rT  rQ  )r   r,   r-   r.   rM  rc   r^  rc  rh  r/   rg   rh   s   @r   rK  rK    s#    0
(+
%$E Er   rK  c                       \ rS rSrS rSrg)CySeti  c                     U R                  S5        [        R                  " S5        U R                  S[        S9nU R                  US5        g )Nr   z!cy set a = $cy_eval("{None: []}")r   )rE   z
{None: []})r_   r   rM   rG   r%  rU   )r   stringvalues     r   
test_cysetCySet.test_cyset  s@    7878mmCm5l3r   r+   N)r   r,   r-   r.   rn  r/   r+   r   r   rk  rk    s    4r   rk  c                       \ rS rSrSrS rSrg)
TestCyEvali  z!Test the $cy_eval() gdb function.c                    U R                  S5        [        R                  " SSS9n[        R                  " SU5      (       d   U5       e[        R                  " SSS9n[        R                  " SU5      (       d   U5       eg )Nr   zprint $cy_eval("None")TrJ   z\$\d+ = None\nzprint $cy_eval("[a]")z\$\d+ = \[0\])r_   r   rM   r   r  r  s     r   test_cy_evalTestCyEval.test_cy_eval  so     	785Fxx)622:F:24Exx(&119691r   r+   N)r   r,   r-   r.   rf   rs  r/   r+   r   r   rq  rq    s
    '	:r   rq  c                   &    \ rS rSrS rS rS rSrg)TestClosurei  c                 b    [         R                  " SU-   5        [         R                  " S5        g )Nz	cy break r   rL   )r   funcnames     r   break_and_run_funcTestClosure.break_and_run_func  s    K(*+Hr   c                 Z   U R                  S5        U R                  S[        R                  " SSS95        [        R                  " S5        U R                  [	        U R                  S5      5      S5        [        R                  " S	SS9R                  5       nU R                  US
5        g )Ninnerr1  r  TrJ   r   r   z'an object'
cy print aa = 'an object')ry  rU   r   rM   r%  rG   r]  r   print_results     r   
test_innerTestClosure.test_inner  s    (S[[EF 	IT]]3/0-@{{<4@FFH'89r   c                 |   U R                  S5        U R                  S[        R                  " SSS95        [        R                  " S5        U R                  S[        R                  " SSS95        [        R                  " S5        [        R                  " SSS9R	                  5       nU R                  US5        g )	Nouterr1  r  TrJ   r   r}  r~  )ry  rU   r   rM   r]  r  s     r   
test_outerTestClosure.test_outer  s    (S[[EF 	IS[[EF 	I{{<4@FFH'89r   r+   N)r   r,   r-   r.   ry  r  r  r/   r+   r   r   rv  rv    s    	::r   rv  	GDB_DEBUGz/dev/ttywc                      [         (       ap  [        R                  " [        R                  " S5      R
                  R                  S/U 5      n [        R                  SR                  S U  5       5      S-   5        g g )Nr   : c              3   8   #    U  H  n[        U5      v   M     g 7fr    )r%  )r   msgs     r   r   _debug.<locals>.<genexpr>  s     "@x3s88xs   r2  )
	_do_debug	itertoolschainsys	_getframef_coder   _debug_filewriter   )messagess    r   r   r     s[    y??CMM!$4$;$;$C$CS#I#+-#(("@x"@@4GH r   c           	      ,   [        [        R                  " 5       R                  S5      (       d/  Sn[        R
                  " U5        [        R                  " S5        g [        U S/S9n[        R                  " U[        R                  5      n[        R                  " 5       n[        R                  " U VVs/ s H  u  pVUR                  U5      PM     snn5      n[        R                   " SS9R#                  U5      nUR%                  5       $ s  snnf )Nsymbol_filezUnable to run tests, Python was not compiled with debugging information. Either compile python with -g or get a debug build (configure with --with-pydebug).r   r1  )fromlist)	verbosity)hasattrr   selected_inferior	progspacewarningswarnrR  _exit
__import__r"   
getmembersisclassunittest
TestLoader	TestSuiteloadTestsFromTestCaseTextTestRunnerr]   wasSuccessful)	
modulenamer  mteststest_loaderr%   clssuiterF   s	            r   run_unittest_in_moduler    s    3((*44mDDK 	c
zRD1""1goo6 ))+""EJKU	[..s3UKM ((1599%@##%% Ls   8D
c                      SSK Jn   [        [        5      n[        U R                  5      nU(       a  U(       d  [        R
                  " S5        gg)zr
Run the libcython and libpython tests. Ensure that an appropriate status is
returned to the parent test process.
r   )test_libpython_in_gdbr   N)Cython.Debugger.Testsr  r  r   r  exit)r  success_libcythonsuccess_libpythons      r   runtestsr  +  s:    
 <.x8./D/M/MN$5 %6r   c                     U q U(       aY  [        R                  " SS[        R                  [        R
                  [        R                  /S9nUR                  [        5        g [        5         g )NFT)counttraceoutfile
ignoredirs)	inferior_python_versionr  Tracer  stderrprefixexec_prefixrunfuncr  )version
trace_codetracers      r   mainr  8  sG     &5cjj(+

COO'DFx 
r   )F)7rf   rR  r   r  r  r   r   r"   r  r  ra  rN  r   r   r  r   r1  r   r   r   rR   argvr   r   r   TestCaser1   rk   r   r   r   r   r   r  r  r  r#  r*  r4  rA  r/  rE  rK  rk  rq  rv  environgetr  openr  r   r  r  r  r+   r   r   <module>r     s   
 	 
               - 7H$ H,5H%%1D ,5^%F- %FP6m 6*6X&& 6< <T0= 0+># +>\%# %"5 5*'M ',M 	7 	7( $) %H} H4	6 	6+E} +E\4M 4: ::- :> JJNN;'	z3'KI&*
r   