Ë
    pPêj#  ã                  óN  — d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	m
Z
mZ ddlmZmZ ddlmZmZmZ 	 ej&                  dk\  r e ej*                  d«      «      rdZnddlZddlZej2                  Zg d	¢Z G d
„ de«      Zdd„Zdd„Zdd„Zdd„Z y# e$ r dZY Œ9w xY w)zsTest cases for the command line.

To begin we test that "mypy <directory>[/]" always recurses down the
whole tree.
é    )ÚannotationsN)ÚPREFIXÚtest_temp_dir)ÚDataDrivenTestCaseÚ	DataSuite)Úassert_string_arrays_equalÚcheck_test_output_filesÚnormalize_error_messages)é   é   ÚPy_GIL_DISABLED)zcmdline.testzcmdline.pyproject.testúreports.testzenvvars.testc                  ó   — e Zd ZeZdZdd„Zy)ÚPythonCmdlineSuiteTc                óæ   — t         €At        j                  j                  |j                  «      dk(  rt        j                  d«       dgt        |j                  «      z   D ]  }t        ||«       Œ y )Nr   z$Cannot import lxml. Is it installed?é   )
ÚlxmlÚosÚpathÚbasenameÚfileÚpytestÚskipÚsortedÚoutput2Útest_python_cmdline)ÚselfÚtestcaseÚsteps      úZ/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/test/testcmdline.pyÚrun_casezPythonCmdlineSuite.run_case.   sY   € Üˆ<œBŸG™G×,Ñ,¨X¯]©]Ó;¸~ÒMÜ�K‰KÐ>Ô?Ø�Cœ& ×!1Ñ!1Ó2Ñ2ò 	0ˆDÜ ¨$Õ/ñ	0ó    N)r   r   ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Úcmdline_filesÚfilesÚ
native_sepr!   © r"   r    r   r   *   s   „ Ø€EØ€Jô0r"   r   c           
     óF	  — | j                   €J d«       ‚d}t        j                  j                  t        |«      }t        |dd¬«      5 }| j                  D ]  }|j                  |› d�«       Œ 	 d d d «       t        t        dj                  | j                  «      «      |«      }t        | j                  «      dkD  rt        | j                  d   «      nd }|j                  d«       d	|vr|j                  d
«       d|vr|j                  d«       d|vr|j                  d«       t        ddg}t        j                  j                  «       }	|	j!                  dd «       t        j                  j                  t        j                  j#                  t        «      d«      }
t$        |	d<   t        j                  j'                  |
«      r|	dxx   t        j(                  |
z   z  cc<   t        j                  j                  t        |xs d«      }|D �cg c]1  }|j+                  dt        j                  j#                  |«      «      ‘Œ3 }}t-        j.                  ||z   t,        j0                  t,        j0                  ||	¬«      }|j3                  «       \  }}|j4                  }t7        |d«      j9                  «       D �cg c]  }|j;                  d«      ‘Œ }}t7        |d«      j9                  «       D �cg c]  }|j;                  d«      ‘Œ }}dt        j                  v r.t=        |«      D ]   \  }}|j?                  d«      sŒ|||dz   …=  n t        j@                  |«       | jB                  rE|s|r4tE        d| jF                  rd|z  nd|dj                  ||z   «      fz  «      ‚tI        | |«       y | jJ                  rtM        ||z   «      }|rdnd}||k7  r|j                  d|› �«       |dk(  r| jN                  n| jF                  |   }|D �cg c]%  }|j+                  dt        jP                  z   d«      ‘Œ' }}tS        ||d jU                  | jV                  | jX                  | jF                  rd|z  nd«      «       y # 1 sw Y   �ŒxY wc c}w c c}w c c}w c c}w )!Nztest was not properly set upz_program.pyÚwÚutf8)Úencodingú
r   z--show-tracebackz--error-summaryz--no-error-summaryz--show-error-codesz--hide-error-codesz--disallow-empty-bodiesz--allow-empty-bodiesz-mÚmypyÚCOLUMNSÚpypathÚ
PYTHONPATHÚ z$CWD)ÚstdoutÚstderrÚcwdÚenvz
ÚPYCHARM_HOSTEDzpydev debugger: é   z6Expected zero status and empty stderr%s, got %d and
%sz on step %dr   z== Return code: ÚtmpzInvalid output ({}, line {}){})-Úold_cwdr   r   Újoinr   ÚopenÚinputÚwriteÚ
parse_argsÚnormalize_devnullÚlenÚ	parse_cwdÚappendÚpython3_pathÚenvironÚcopyÚpopÚabspathr   ÚisdirÚpathsepÚreplaceÚ
subprocessÚPopenÚPIPEÚcommunicateÚ
returncodeÚstrÚ
splitlinesÚrstripÚ	enumerateÚ
startswithÚremoveÚoutput_filesÚAssertionErrorr   r	   Únormalize_outputr
   ÚoutputÚsepr   Úformatr   Úline)r   r   ÚprogramÚprogram_pathr   ÚsÚargsÚ
custom_cwdÚfixedr9   Ú
extra_pathr8   ÚargÚprocessÚoutbÚerrbÚresultÚoutÚerrÚposr`   Úobvious_resultÚexpected_outs                          r    r   r   5   sæ  € Ø×ÑÐ'ÐGÐ)GÓGÐ'à€GÜ—7‘7—<‘<¤¨wÓ7€LÜ	ˆl˜C¨&Ô	1ð !°TØ—‘ò 	!ˆAØ�J‰J˜!˜˜B�xÕ ñ	!÷!ô Ô'¨¯	©	°(·.±.Ó(AÓBÀDÓI€DÜ14°X·^±^Ó1DÀqÒ1H”˜8Ÿ>™>¨!Ñ,Ô-Èd€JØ‡K�KÐ"Ô#Ø Ñ$Ø�‰Ð(Ô)Ø 4Ñ'Ø�‰Ð(Ô)Ø ¨Ñ,Ø�‰Ð*Ô+ä˜4 Ð(€EÜ
�*‰*�/‰/Ó
€CØ‡G�GˆI�tÔÜ—‘—‘œbŸg™gŸo™o¬mÓ<¸hÓG€JÜ€CˆÑÜ	‡w�w‡}�}�ZÔ ØˆLÓœRŸZ™Z¨*Ñ4Ñ4ÓÜ
�'‰'�,‰,”} jÒ&6°BÓ
7€CØAEÖF¸#ˆC�K‰K˜¤§¡§¡°Ó 4Õ5ÐF€DÐFÜ×ÑØ�‰œZŸ_™_´Z·_±_È#ÐSVô€Gð ×$Ñ$Ó&�J€Dˆ$Ø×Ñ€Fä%(¨¨vÓ%6×%AÑ%AÓ%CÖ
D ˆ1�8‰8�FÕÐ
D€CÐ
DÜ%(¨¨vÓ%6×%AÑ%AÓ%CÖ
D ˆ1�8‰8�FÕÐ
D€CÐ
Dàœ2Ÿ:™:Ñ%Ü" 3›ò 	‰IˆC�Ø�‰Ð1Õ2à˜˜c A™g˜Ð&Ùð		ô ‡I�IˆlÔà×Òá‘&Ü ØIØ+3×+;Ò+;�= 4Ò'ÀÀVÈTÏYÉYÐWZÐ]`ÑW`ÓMaÐbñcóð ô 	  ¨$Õ/à×$Ò$Ü*¨3°©9Ó5ˆCÙ!™ qˆØ˜VÒ#Ø�J‰JÐ)¨&¨Ð2Ô3Ø*.°!ª)�x—’¸×9IÑ9IÈ$Ñ9Oˆà?KÖL¸!˜Ÿ	™	 %¬"¯&©&¡.°"Õ5ÐLˆÐLÜ"ØØØ,×3Ñ3Ø—‘˜xŸ}™}Àh×FVÒFV¨m¸dÒ.BÐ\^óõ	
÷u!ñ !üò* Gùò EùÚ
Dùò8 Ms$   Á&RÈ6RÊ?RË5RÐ*RÒRc                ó  — t        j                  d| t         j                  ¬«      }|dkD  r.t        j                  d|› d�| t         j                  ¬«      }|�|}|sg S t        j                  |j                  d«      «      S )zªParse the program for the command line.

    This should have the form

      # cmd[N]: mypy <options>

    For example:

      # cmd: mypy pkg/ or # cmd2: mypy pkg/
    z# cmd: mypy (.*)$)Úflagsr   z# cmdz: mypy (.*)$)ÚreÚsearchÚ	MULTILINEÚshlexÚsplitÚgroup)Útextr   ÚmÚalt_ms       r    rB   rB   }   sk   € ô 	�	‰	Ð% t´2·<±<Ô@€AØˆa‚xÜ—	‘	˜E $  |Ð4°dÄ"Ç,Á,ÔOˆØÐØˆAÙØˆ	Ü�;‰;�q—w‘w˜q“zÓ"Ð"r"   c                óX   — t        j                  d| «      }|r|j                  d«      S dS )z¤Parse the second line of the program for the command line.

    This should have the form

      # cwd: <directory>

    For example:

      # cwd: main/subdir
    z# cwd: (.*)$r   N)rt   Úmatchry   )r`   r{   s     r    rE   rE   ’   s)   € ô 	�‰� Ó&€AÙˆ1�7‰7�1‹:Ð$ Ð$r"   c                óB   — | j                  dt        j                  «      S )Nz	/dev/null)rN   r   Údevnull)r`   s    r    rC   rC   ¡   s   € Ø�<‰<˜¤R§Z¡ZÓ0Ð0r"   )r   r   r   Úintr#   r$   )rz   rT   r   r�   r#   z	list[str])r`   rT   r#   z
str | None)r`   rT   r#   rT   )!Ú__doc__Ú
__future__r   r   rt   rw   rO   ÚsysÚ	sysconfigÚmypy.test.configr   r   Úmypy.test.datar   r   Úmypy.test.helpersr   r	   r
   Úversion_infoÚboolÚget_config_varr   ÚImportErrorr   Ú
executablerG   r(   r   r   rB   rE   rC   r+   r"   r    ú<module>rŽ      s³   ðñõ #ã 	Û 	Û Û Û 
Û ç 2ß 8÷ñ ðØ
×Ñ˜7Ò"¡tÐ,D¨I×,DÑ,DÐEVÓ,WÔ'Xà‰ãó ð �~‰~€ò [€ô0˜ô 0óE
óP#ó*%ô1øðG ò Ø‚Dðús   ¼.B ÂB$Â#B$