
    NgTU                     6   d dl Z d dlZd dlZd dlmZ 	 d dlmZmZ n# e$ r d dl	mZmZ Y nw xY w	 d dl
m
Z
 n# e$ r	 d dlm
Z
 Y nw xY wddlmZ ddlmZ dd	lmZmZmZ e j        j        Zd
 Z ed ee                     G d de                      ZdS )    N)TestCase)patchMock)StringIO   )Options)parse_command_line   )backup_Optionsrestore_Optionscheck_global_optionsc           
          | dt           j                            dd          t           j                            dd          dddddd	f	v rd
S t          |           S )N
source.pyx	/work/dirmy_working_pathfile.pyx	file1.pyx	file2.pyx	file3.pyxfoo.pyxbar.pyxT)ospathjoinunpatched_exists)r   s    ]/var/www/html/ai-engine/env/lib/python3.11/site-packages/Cython/Compiler/Tests/TestCmdLine.pypatched_existsr      se    
[,//
&55
 
 
 tD!!!    zos.path.exists)side_effect)newc                   `   e Zd Zd Zd Zg fdZg fdZd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8S )9CmdLineParserTestc                 ,    t                      | _        d S N)r   _options_backupselfs    r   setUpzCmdLineParserTest.setUp'   s    -//r   c                 .    t          | j                   d S r$   )r   r%   r&   s    r   tearDownzCmdLineParserTest.tearDown*   s    ,-----r   c                 X    |                      t          | j        |          d           d S )N )assertEqualr   r%   )r'   
white_lists     r   check_default_global_optionsz.CmdLineParserTest.check_default_global_options-   s-    -d.BJOOQSTTTTTr   c                    t          j        t           j                  }t                      }|j                                        D ]>}||vr8|                     t          |||          t          ||          d|z              ?d S )Nzerror in option )msg)r   CompilationOptionsdefault_optionsobject__dict__keysr-   getattr)r'   optionsr.   r3   no_valuenames         r   check_default_optionsz'CmdLineParserTest.check_default_options0   s    !4W5LMM88#,1133 	B 	BD:%%  $!A!A7?\`CaCagy  }A  hA   B  B  B	B 	Br   c                 \   t          g d          \  }}|                     |           |                     |j                   |                     |j                   |                     |j                   |                     |j                   |                     |j        dk               |                     t          j	                   |                     t          j
                   |                     t          j                   |                     |j        d           t          g d          \  }}|                     |           |                     t          |          dk               |                     |j                   |                     |j        d           d S )N)-Vz-lz-+z-t-vr>   r>   z-pz-D-az-3   )z-fz-2r   r
   r   )r	   assertFalse
assertTrueshow_versionuse_listing_filecplus
timestampsverboser   embed_pos_in_docstring
docstringsannotater-   language_levellenr'   r8   sourcess      r   test_short_optionsz$CmdLineParserTest.test_short_options7   s   - /
 /
 /
   	!!!,---0111&&&*+++1,---6777+,,,()))/333- /
 /
 /
   	   G)***+,,,/33333r   c                    t          g d          \  }}|                     |           |                     |j                   |                     |j                   |                     |j                   |                     t          j        d           |                     |j	                   |                     |j
        dk               |                     t          j                   |                     t          j                   |                     t          j                   |                     t          j                   |                     t          j                   t          ddg          \  }}|                     |           |                     t!          |          dk               |                     |j	                   d S )N)z	--versionz--create-listingz--cplus--embed--timestamps	--verboserS   rS   z--embed-positionsz--no-docstrings
--annotatez	--lenientmainr@   z--forcer   r
   )r	   rA   rB   rC   rD   rE   r-   r   embedrF   rG   rH   rI   rJ   error_on_unknown_nameserror_on_uninitializedrL   rM   s      r   test_long_optionsz#CmdLineParserTest.test_long_optionsN   s   - /
 /
 /
  
 	!!!,---0111&&&///*+++1,---6777+,,,()))78887888-|/
   	   G)***+,,,,,r   c                    t          g d          \  }}|                     |dg           |                     t          j        d           |                     |j        g d           |                     |j        d           |                     |j        d           |                     t          j        d           |                     t          j        d           | 	                    t          j
                   |                     t          j        d	           | 	                    |j                   |                     |j        d
           |                     |j        d         d           d S )N)--embed=huhuz-I/test/include/dir1z --include-dir=/test/include/dir2z--include-dir/test/include/dir3z--working=/work/dirr   z--output-file=/output/dirz--pre-import=/pre/importz--cleanup=3z--annotate-coverage=cov.xmlz--gdb-outdir=/gdb/outdirz--directive=wraparound=falser   huhu)z/test/include/dir1z/test/include/dir2r\   r   z/output/dirz/pre/importr@   zcov.xmlz/gdb/outdir
wraparoundF)r	   r-   r   rV   include_pathworking_pathoutput_file
pre_importgenerate_cleanup_coderB   rJ   annotate_coverage_xml	gdb_debug
output_dircompiler_directivesrM   s      r   test_options_with_valuesz*CmdLineParserTest.test_options_with_valuesh   s[   - /
 /
 /
   	<.111///-/q/q/qrrr-{;;;,m<<<+];;;6:::()))6	BBB)***+];;;4\BEJJJJJr   c                     t          ddg          \  }}|                     |dg           |                     t          j        d           d S )NrQ   r   rU   r	   r-   r   rV   rM   s      r   test_embed_before_positionalz.CmdLineParserTest.test_embed_before_positional   sY    -/
   	<.111/////r   c                     t          g d          \  }}|                     |dg           |                     t          j        d           d S )N)rQ   r[   r   r   r]   rj   rM   s      r   test_two_embedsz!CmdLineParserTest.test_two_embeds   ]    - /
 /
 /
   	<.111/////r   c                     t          g d          \  }}|                     |dg           |                     t          j        d           d S )N)r[   rQ   r   r   rU   rj   rM   s      r   test_two_embeds2z"CmdLineParserTest.test_two_embeds2   rn   r   c                 l    t          ddg          \  }}|                     t          j                   d S )Nr[   r   )r	   rA   r   rJ   rM   s      r   test_no_annotatez"CmdLineParserTest.test_no_annotate   s?    -L/
   	)*****r   c                 n    t          ddg          \  }}|                     t          j        d           d S )Nr?   r   defaultr	   r-   r   rJ   rM   s      r   test_annotate_shortz%CmdLineParserTest.test_annotate_short   sB    -/
   	)955555r   c                 n    t          ddg          \  }}|                     t          j        d           d S )NrT   r   rt   ru   rM   s      r   test_annotate_longz$CmdLineParserTest.test_annotate_long   sB    -/
   	)955555r   c                 n    t          ddg          \  }}|                     t          j        d           d S )N--annotate-fullcr   fullcru   rM   s      r   test_annotate_fullcz%CmdLineParserTest.test_annotate_fullc   sB    -/
   	)733333r   c                     t          g d          \  }}|                     |j        d           |                                  |                     |dg           d S )N)z-wr   r   r   r`   )r	   r-   r`   r/   r;   rM   s      r   test_short_wzCmdLineParserTest.test_short_w   sr    - /
 /
 /
   	-/@AAA))+++""7^,<=====r   c                     t          g d          \  }}|                     |j        d           |                                  |                     |dg           d S )N)z-o	my_outputr   r   ra   )r	   r-   ra   r/   r;   rM   s      r   test_short_ozCmdLineParserTest.test_short_o   sp    - /
 /
 /
   	,k:::))+++""7]O<<<<<r   c                     t          g d          \  }}|                     t          j        d           |                     dg           |                     |           d S )N)z-zmy_preimportr   r   rb   )r	   r-   r   rb   r/   r;   rM   s      r   test_short_zzCmdLineParserTest.test_short_z   sp    - /
 /
 /
   	+^<<<))<.999""7+++++r   c                     t          ddg          \  }}|                     t          j        d           |                     dg           |                     |           d S )Nz--convert-ranger   Tconvert_range)r	   r-   r   r   r/   r;   rM   s      r   test_convert_rangez$CmdLineParserTest.test_convert_range   sm    -/
   	.555))?*;<<<""7+++++r   c                     t          ddg          \  }}|                     |j        d           |                                  |                     |dg           d S )Nz--line-directivesr   Temit_linenums)r	   r-   r   r/   r;   rM   s      r   test_line_directivesz&CmdLineParserTest.test_line_directives   sm    -/
   	.555))+++""7_,=>>>>>r   c                     t          ddg          \  }}|                     |j        d           |                                  |                     |dg           d S )Nz--no-c-in-tracebackr   Fc_line_in_traceback)r	   r-   r   r/   r;   rM   s      r   test_no_c_in_tracebackz(CmdLineParserTest.test_no_c_in_traceback   sn    -!/
   	4e<<<))+++""7-B,CDDDDDr   c                    t          ddg          \  }}|                     |j        d           |                     |j        t          j                   |                                  |                     |ddg           d S )N--gdbr   Tre   rf   r	   r-   re   rf   r   curdirr/   r;   rM   s      r   test_gdbzCmdLineParserTest.test_gdb   s    -/
   	*D111+RY777))+++""7[,,GHHHHHr   c                     t          ddg          \  }}|                     |j        d           |                                  |                     |dg           d S )Nz--3strr   3strrK   )r	   r-   rK   r/   r;   rM   s      r   	test_3strzCmdLineParserTest.test_3str   sn    -/
   	/888))+++""7-=,>?????r   c                     t          ddg          \  }}|                     |j        d           |                                  |                     |dg           d S )Nz--capi-reexport-cincludesr   Tcapi_reexport_cincludes)r	   r-   r   r/   r;   rM   s      r   test_capi_reexport_cincludesz.CmdLineParserTest.test_capi_reexport_cincludes   sn    -'/
   	8$???))+++""7-F,GHHHHHr   c                     t          ddg          \  }}|                     t          j        d           |                     dg           |                     |           d S )Nz--fast-failr   T	fast_fail)r	   r-   r   r   r/   r;   rM   s      r   test_fast_failz CmdLineParserTest.test_fast_fail  sl    -/
   	*D111));-888""7+++++r   c                     t          ddg          \  }}|                     t          j        d           |                     dg           |                     |           d S )Nz--cimport-from-pyxr   Tcimport_from_pyx)r	   r-   r   r   r/   r;   rM   s      r   test_cimport_from_pyxz'CmdLineParserTest.test_cimport_from_pyx  sn    - /
   	14888))+=*>???""7+++++r   c                     t          ddg          \  }}|                     t          j        d           |                     dg           |                     |           d S )Nz-Werrorr   Twarning_errorsr	   r-   r   r   r/   r;   rM   s      r   test_WerrorzCmdLineParserTest.test_Werror  sn    -/
   	/666))+;*<===""7+++++r   c                     t          ddg          \  }}|                     t          j        d           |                     dg           |                     |           d S )Nz--warning-errorsr   Tr   r   rM   s      r   test_warning_errorsz%CmdLineParserTest.test_warning_errors#  sn    -/
   	/666))+;*<===""7+++++r   c                     t          ddg          \  }}|                     |j        t          j                   |                                  |                     |dg           d S )Nz-Wextrar   rg   r	   r-   rg   r   extra_warningsr/   r;   rM   s      r   test_WextrazCmdLineParserTest.test_Wextra,  sq    -/
   	4g6LMMM))+++""7-B,CDDDDDr   c                     t          ddg          \  }}|                     |j        t          j                   |                                  |                     |dg           d S )N--warning-extrar   rg   r   rM   s      r   test_warning_extraz$CmdLineParserTest.test_warning_extra5  sq    -/
   	4g6LMMM))+++""7-B,CDDDDDr   c                     t          ddg          \  }}|                     t          j        d           |                     dg           |                     |           d S )Nz--old-style-globalsr   Told_style_globals)r	   r-   r   r   r/   r;   rM   s      r   test_old_style_globalsz(CmdLineParserTest.test_old_style_globals>  sn    -!/
   	2D999))+>*?@@@""7+++++r   c                    t          g d          \  }}|                     |j        d         d           |                     |j        d         d           |                                  |                     |dg           d S )N)-Xcdivision=Truer   c_string_type=bytesr   	cdivisionTc_string_typebytesrg   r	   r-   rg   r/   r;   r'   r8   sources      r   test_directive_multiplez)CmdLineParserTest.test_directive_multipleG  s    , .
 .
 .
  
 	4[A4HHH4_EwOOO))+++""7-B,CDDDDDr   c                    t          g d          \  }}|                     |j        d         d           |                     |j        d         d           |                                  |                     |dg           d S )N)r   z"cdivision=True,c_string_type=bytesr   r   Tr   r   rg   r   r   s      r   test_directive_multiple_v2z,CmdLineParserTest.test_directive_multiple_v2R  s    , .
 .
 .
   	4[A4HHH4_EwOOO))+++""7-B,CDDDDDr   c                     t          g d          \  }}|                     |j        d         d           |                                  |                     |dg           d S )N)r   zcdivision=YeSr   r   Trg   r   r   s      r   test_directive_value_yesz*CmdLineParserTest.test_directive_value_yes\  sv    , .
 .
 .
   	4[A4HHH))+++""7-B,CDDDDDr   c                     t          g d          \  }}|                     |j        d         d           |                                  |                     |dg           d S )N)r   zcdivision=nor   r   Frg   r   r   s      r   test_directive_value_noz)CmdLineParserTest.test_directive_value_noe  sv    , .
 .
 .
   	4[A5III))+++""7-B,CDDDDDr   c                 L    |                      t          t          g d           d S )N)r   zcdivision=sadfasdr   assertRaises
ValueErrorr	   r&   s    r   test_directive_value_invalidz.CmdLineParserTest.test_directive_value_invalidn  8    *&8 ;
 ;
 ;
 	 	 	 	 	r   c                 L    |                      t          t          g d           d S )N)r   abracadabrar   r   r&   s    r   test_directive_key_invalidz,CmdLineParserTest.test_directive_key_invalidt  r   r   c                 L    |                      t          t          g d           d S )N)r   r   r   r   r&   s    r   test_directive_no_valuez)CmdLineParserTest.test_directive_no_valuez  r   r   c                     t          g d          \  }}|                     |j        d         d           |                                  |                     |dg           d S )N)-E	MYSIZE=10r   MYSIZE
   compile_time_envr	   r-   r   r/   r;   r   s      r   test_compile_time_env_shortz-CmdLineParserTest.test_compile_time_env_short  v    , .
 .
 .
   	1(;R@@@))+++""7-?,@AAAAAr   c                     t          g d          \  }}|                     |j        d         d           |                                  |                     |dg           d S )N)z--compile-time-envr   r   r   r   r   r   r   s      r   test_compile_time_env_longz,CmdLineParserTest.test_compile_time_env_long  r   r   c                    t          g d          \  }}|                     |j        d         d           |                     |j        d         d           |                                  |                     |dg           d S )N)r   r   r   z
ARRSIZE=11r   r   r   ARRSIZE   r   r   r   s      r   test_compile_time_env_multiplez0CmdLineParserTest.test_compile_time_env_multiple      , .
 .
 .
   	1(;R@@@1)<bAAA))+++""7-?,@AAAAAr   c                    t          g d          \  }}|                     |j        d         d           |                     |j        d         d           |                                  |                     |dg           d S )N)r   zMYSIZE=10,ARRSIZE=11r   r   r   r   r   r   r   r   s      r   !test_compile_time_env_multiple_v2z3CmdLineParserTest.test_compile_time_env_multiple_v2  r   r   c                 \    t          ddg          \  }}|                     |dg           d S )Nr=   r   r	   r-   rM   s      r   test_option_firstz#CmdLineParserTest.test_option_first  s7    -tZ.@AA:,/////r   c                 \    t          g d          \  }}|                     |dg           d S )N)r=   r   r?   r   r   rM   s      r   test_file_inbetweenz%CmdLineParserTest.test_file_inbetween  s9    -.F.F.FGG:,/////r   c                 \    t          ddg          \  }}|                     |dg           d S )Nr   r=   r   rM   s      r   test_option_trailingz&CmdLineParserTest.test_option_trailing  s7    -z4.@AA:,/////r   c                 ^    t          g d          \  }}|                     |g d           d S )N)r   r=   r   r?   r   )r   r   r   r   rM   s      r   test_multiple_filesz%CmdLineParserTest.test_multiple_files  sJ    - /
 /
 /
  
 	"I"I"IJJJJJr   c                     t          g d          \  }}ddlm} dD ]9}|                     t	          ||          |dv            t          ||d           :d S )N)z--debug-disposal-codez--debug-coercionr   r   )
DebugFlags)debug_disposal_codedebug_temp_allocdebug_coercion)r   r   )r	   Cython.Compilerr   r-   r7   setattr)r'   r8   rN   r   r:   s        r   test_debug_flagsz"CmdLineParserTest.test_debug_flags  s    - /
 /
 /
   	/.....Q 	) 	)DWZ66@i8ijjjJa((((	) 	)r   c                    t          g d          \  }}|                     |j        d           |                     |j        t          j                   |                                  |                     |ddg           d S )N)--gdb-outdir=my_dirr   r   Tre   rf   r   rM   s      r   test_gdb_overwrites_gdb_outdirz0CmdLineParserTest.test_gdb_overwrites_gdb_outdir  s    - /
 /
 /
   	*D111+RY777))+++""7[,,GHHHHHr   c                     t          g d          \  }}|                     |j        d           |                     |j        d           |                                  |                     |ddg           d S )N)r   r   r   Tmy_dirre   rf   )r	   r-   re   rf   r/   r;   rM   s      r   test_gdb_firstz CmdLineParserTest.test_gdb_first  s    - /
 /
 /
   	*D111+X666))+++""7[,,GHHHHHr   c                    t          g d          \  }}|                     t          j        d           |                     t          j        d           |                     ddg           |                     |           d S )N)rz   --annotate-coverage=my.xmlr   Tmy.xmlrJ   rd   r	   r-   r   rJ   rd   r/   r;   rM   s      r   #test_coverage_overwrites_annotationz5CmdLineParserTest.test_coverage_overwrites_annotation  s    - /
 /
 /
   	)40006AAA)):7N*OPPP""7+++++r   c                    t          g d          \  }}|                     t          j        d           |                     t          j        d           |                     ddg           |                     |           d S )N)r   rz   r   r{   r   rJ   rd   r   rM   s      r   test_coverage_firstz%CmdLineParserTest.test_coverage_first  s    - /
 /
 /
   	)73336AAA)):7N*OPPP""7+++++r   c                     t          g d          \  }}|                     t          j        d           |                     dg           |                     |           d S )N)rT   rz   r   r{   rJ   r	   r-   r   rJ   r/   r;   rM   s      r    test_annotate_first_fullc_secondz2CmdLineParserTest.test_annotate_first_fullc_second  sp    - /
 /
 /
   	)7333)):,777""7+++++r   c                     t          g d          \  }}|                     t          j        d           |                     dg           |                     |           d S )N)rz   rT   r   rt   rJ   r   rM   s      r   test_annotate_fullc_firstz+CmdLineParserTest.test_annotate_fullc_first  sp    - /
 /
 /
   	)9555)):,777""7+++++r   c                    t          g d          \  }}|                     t          |j                  t          t          j                  dz              |                                  |                     |dg           d S )N)r   r   r   r   r   r   r
   rg   )r	   rB   rL   rg   r   r   r/   r;   rM   s      r   !test_warning_extra_dont_overwritez3CmdLineParserTest.test_warning_extra_dont_overwrite  s    - /
 /
 /
   	G788#g>T:U:UXY:YZZZ))+++""7-B,CDDDDDr   c                 h   t          dg          \  }}|                     |j        d            |                                  |                     |           t          g d          \  }}|                     |j        d           |                                  |                     |dg           d S )Nr   )--module-namefoo.barr   r  module_name)r	   r-   r  r/   r;   rM   s      r   test_module_namez"CmdLineParserTest.test_module_name	  s    -/
   	,d333))+++""7+++- /
 /
 /
   	,i888))+++""7]O<<<<<r   c                 V    d fd	} |dgd            |dgd            |dgd            |dgd	            |d
gd            |dgd            |dgd            |ddgd            |ddgd            |ddgd            |g dd            |g dd           d S )Nc                 X   t           j        }t                      x}t           _        	                     t          t
          t          |                      |t           _        n# |t           _        w xY w|                                }d                    |	                                          }
                    |                    d          d|z             
                    d|v d|z             |r1
                    t          j        ||          |d|d           d S d S )NzMessage "{}"zusage: z %s does not start with "usage :"z	: error: z%s does not contain ": error :"z does not match search "")sysstderrr   r   
SystemExitr	   listgetvalueformatstriprB   
startswithresearch)argsregex
old_stderrr  r1   err_msgr'   s         r   errorz,CmdLineParserTest.test_errors.<locals>.error  s-   J"***,FSZ(!!*.@$t**MMM'

Z
''''//##C$++CIIKK88GOOCNN955>HJ J JOOK3.=GI I I 2	% 5 5!(%%%!12 2 2 2 22 2s   .A$ $A2z-1zunknown option -1z-Iz0argument -I/--include-dir: expected one argumentz--version=-az5argument -V/--version: ignored explicit argument '-a'z--version=--annotate=truezBargument -V/--version: ignored explicit argument '--annotate=true'z	--workingz,argument -w/--working: expected one argumentz--verbose=1z4argument -v/--verbose: ignored explicit argument '1'z	--cleanupz)argument --cleanup: expected one argumentz --debug-disposal-code-wrong-namer   z/unknown option --debug-disposal-code-wrong-namer  r   zNeed at least one source filer  )r  r  r   r   z5Only one source file allowed when using --module-name)r  r  rR   r   z*Cannot use --module-name with --timestampsr$    )r'   r  s   ` r   test_errorszCmdLineParserTest.test_errors  s   	2 	2 	2 	2 	2 	2$ 	tf!	# 	# 	#tf@	B 	B 	B~E	G 	G 	G*+"	# 	# 	# 	{m<	> 	> 	>}oD	F 	F 	F{m9	; 	; 	;1;??	A 	A 	A	*-	/ 	/ 	/	*-	/ 	/ 	/@@@E	G 	G 	GEEE:	< 	< 	< 	< 	<r   N):__name__
__module____qualname__r(   r*   r/   r;   rO   rY   rh   rk   rm   rp   rr   rv   rx   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r   r"   r"   %   s       0 0 0. . . 79 U U U U 9; B B B B4 4 4.- - -4K K K60 0 00 0 00 0 0+ + +6 6 66 6 64 4 4> > >= = =, , ,, , ,? ? ?E E EI I I@ @ @I I I, , ,, , ,, , ,, , ,E E EE E E, , ,	E 	E 	EE E EE E EE E E      B B BB B BB B BB B B0 0 00 0 00 0 0K K K) ) )I I II I I, , ,, , ,, , ,, , ,	E 	E 	E= = =+< +< +< +< +<r   r"   )r   r
  r  unittestr   unittest.mockr   r   ImportErrormockr   ior,   r   CmdLiner	   Utilsr   r   r   r   existsr   r   r"   r  r   r   <module>r&     s   				 



 				      !))))))))) ! ! !          !!!!!!!!          ( ( ( ( ( ( H H H H H H H H H H7> " " "  TTn===>>>]< ]< ]< ]< ]< ]< ]< ?>]< ]< ]<s    --8 AA