Ë
    pPêjŸ  ã                  óî   — 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m	Z	 ddl
mZ ddlmZ ddlmZmZ ddlmZmZ dd	lmZmZ d
gZ G d„ de«      Zdd„Zdd„Zdd„Z G d„ dej8                  «      Zy)z�End-to-end test cases for the daemon (dmypy).

These are special because they run multiple shell commands.

This also includes some unit tests.
é    )ÚannotationsN)Ú%filter_out_missing_top_level_packages)ÚFileSystemCache)ÚSearchPaths)ÚPREFIXÚtest_temp_dir)ÚDataDrivenTestCaseÚ	DataSuite)Úassert_string_arrays_equalÚnormalize_error_messageszdaemon.testc                  ó   — e Zd ZeZdd„Zy)ÚDaemonSuitec                óR   — 	 t        |«       t        d«       y # t        d«       w xY w)Nz
dmypy kill)Útest_daemonÚrun_cmd)ÚselfÚtestcases     úY/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/test/testdaemon.pyÚrun_casezDaemonSuite.run_case   s"   € ð	"Ü˜Ô!ô �LÕ!øŒG�LÕ!ús   ‚ ™&N©r   r	   ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Údaemon_filesÚfilesr   © ó    r   r   r      s   „ Ø€Eô"r   r   c                ó¾  — | j                   €J d«       ‚t        t        | j                  «      «      D ]©  \  }}|d   }|dd  }|j	                  d«      sJ ‚|dd  j                  «       }|j                  dt        j                  «      }t        |«      \  }}|j                  «       }t        |«      }|r|j                  d|z  «       t        ||d|dz   |fz  «       Œ« y )Nztest was not properly set upr   é   ú$z{python}z== Return code: %dz,Command %d (%s) did not give expected output)Úold_cwdÚ	enumerateÚparse_scriptÚinputÚ
startswithÚstripÚreplaceÚsysÚ
executabler   Ú
splitlinesr   Úappendr   )r   ÚiÚstepÚcmdÚexpected_linesÚstsÚoutputÚoutput_liness           r   r   r   &   sà   € Ø×ÑÐ'ÐGÐ)GÓGÐ'Üœ\¨(¯.©.Ó9Ó:ò 
‰ˆˆ4Ø�1‰gˆØ˜a˜b˜ˆØ�~‰~˜cÔ"Ð"Ð"Ø�!�"ˆg�m‰m‹oˆØ�k‰k˜*¤c§n¡nÓ5ˆÜ˜c“l‰ˆˆVØ×(Ñ(Ó*ˆÜ/°Ó=ˆÙØ×ÑÐ 4°sÑ :Ô;Ü"ØØØ:¸aÀ!¹eÀS¸\ÑIõ	
ñ
r   c                óÜ   — g }g }| D ]O  }|j                  d«      r+|r)|d   j                  d«      sJ ‚|j                  |«       g }|j                  |«       ŒQ |r|j                  |«       |S )z¾Parse testcase.input into steps.

    Each command starts with a line starting with '$'.
    The first line (less '$') is sent to the shell.
    The remaining lines are expected output.
    r"   r   )r'   r-   )r&   Ústepsr/   Úlines       r   r%   r%   :   sw   € ð €EØ€DØò ˆØ�?‰?˜3ÔÙØ˜A‘w×)Ñ)¨#Ô.Ð.Ð.Ø—‘˜TÔ"Ø�Ø�‰�DÕðñ Ø�‰�TÔØ€Lr   c                óú  — | dd  j                  d«      r	d| vr| dz  } | j                  d«      rt        j                  dz   | z   } | j                  d«      rt        j                  dz   | z   } t        j                  j                  «       }t        |d	<   	 t        j                  | d
t        j                  d
t        |¬«      }d|fS # t        j                  $ r"}|j                  |j                  fcY d }~S d }~ww xY w)Nr!   zmypy run --z--show-error-codesz --hide-error-codeszdmypy z	 -m mypy.zmypy z -mÚ
PYTHONPATHT)ÚshellÚstderrÚtextÚcwdÚenvr   )r'   r*   r+   ÚosÚenvironÚcopyr   Ú
subprocessÚcheck_outputÚSTDOUTr   ÚCalledProcessErrorÚ
returncoder3   )r&   r>   r3   Úerrs       r   r   r   O   sã   € ØˆQˆR€y×Ñ˜MÔ*Ð/CÈ5Ñ/PØÐ&Ñ&ˆØ×Ñ˜Ô!Ü—‘ Ñ,¨uÑ4ˆØ×Ñ˜Ô Ü—‘ Ñ&¨Ñ.ˆÜ
�*‰*�/‰/Ó
€CÜ€CˆÑð*Ü×(Ñ(Ø˜¤j×&7Ñ&7¸dÌÐ[^ô
ˆð �&ˆyÐøÜ×(Ñ(ò *Ø�~‰~˜sŸz™zÐ)Õ)ûð*ús   Â0C ÃC:ÃC5Ã/C:Ã5C:c                  ó    — e Zd ZdZdd„Zdd„Zy)ÚDaemonUtilitySuitezUnit tests for helpersc           	     óR  ‡— t        j                  «       5 Š| j                  ‰d«       | j                  ‰d«       | j                  ‰d«       | j                  ‰d«       | j                  ‰d«       | j                  ‰d«       | j                  ‰d«       | j                  ‰d«       | j                  ‰d	«       dˆfd
„}t         |d«      f |d«      f |d«       |d«      f |d«      f¬«      }t	        «       }t        h d£||«      }|h d£k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nzbase/a/z	base/b.pyz
base/c.pyizbase/missing.txtztypeshed/d.pyiztypeshed/@python2/ezpkg1/f-stubszpkg2/g-python2-stubszmpath/sub/long_name/c                óD   •— t         j                  j                  ‰| «      S )N)r?   ÚpathÚjoin)ÚpÚtds    €r   ÚmakepathzODaemonUtilitySuite.test_filter_out_missing_top_level_packages.<locals>.makepathp   s   ø€ Ü—w‘w—|‘| B¨Ó*Ð*r   Úbasez	mpath/subÚpkg1Úpkg2Útypeshed)Úpython_pathÚ	mypy_pathÚpackage_pathÚtypeshed_path>
   ÚaÚbÚcÚdÚeÚfÚgÚffÚmissingÚ	long_name>   rY   rZ   r[   r\   r^   rb   )rN   Ústrr   rc   )ÚtempfileÚTemporaryDirectoryÚ	make_filer   r   r   )r   rP   ÚsearchÚfscacheÚresrO   s        @r   Ú*test_filter_out_missing_top_level_packagesz=DaemonUtilitySuite.test_filter_out_missing_top_level_packagesd   s  ø€ Ü×(Ñ(Ó*ð 	A¨bØ�N‰N˜2˜yÔ)Ø�N‰N˜2˜{Ô+Ø�N‰N˜2˜|Ô,Ø�N‰N˜2Ð1Ô2Ø�N‰N˜2Ð/Ô0Ø�N‰N˜2Ð4Ô5Ø�N‰N˜2˜~Ô.Ø�N‰N˜2Ð5Ô6Ø�N‰N˜2Ð5Ô6õ+ô !Ù% fÓ-Ð/Ù# KÓ0Ð2Ù& vÓ.±¸Ó0@ÐAÙ'¨
Ó3Ð5ô	ˆFô &Ó'ˆGÜ7ÚQÐSYÐ[bóˆCð Ò@Ò@Ð@Ñ@÷1	A÷ 	Añ 	Aús   –C=DÄD&c                ó4  — t         j                  j                  ||«      }t        j                  t         j                  j	                  |«      d¬«       |j                  d«      s't        |d«      5 }|j                  d«       d d d «       y y # 1 sw Y   y xY w)NT)Úexist_okú/Úwz# test file)r?   rL   rM   ÚmakedirsÚdirnameÚendswithÚopenÚwrite)r   rQ   rL   Úfullpathr^   s        r   rf   zDaemonUtilitySuite.make_file   st   € Ü—7‘7—<‘<  dÓ+ˆÜ
�‰”B—G‘G—O‘O HÓ-¸Õ=Ø�}‰}˜SÔ!Ü�h Ó$ð '¨Ø—‘˜Ô&÷'ð 'ð "÷'ð 'ús   Á2BÂBN)r   r   )rQ   rc   rL   rc   r   r   )r   r   r   Ú__doc__rj   rf   r   r   r   rI   rI   a   s   „ Ù óAô6'r   rI   r   )r&   z	list[str]r   zlist[list[str]])r&   rc   r   ztuple[int, str])ru   Ú
__future__r   r?   rB   r*   rd   ÚunittestÚmypy.dmypy_serverr   Úmypy.fscacher   Úmypy.modulefinderr   Úmypy.test.configr   r   Úmypy.test.datar	   r
   Úmypy.test.helpersr   r   r   r   r   r%   r   ÚTestCaserI   r   r   r   ú<module>r      sf   ðñõ #ã 	Û Û 
Û Û å CÝ (Ý )ß 2ß 8ß Rð ˆ€ô"�)ô "ó
ó(ó**ô$#'˜×*Ñ*õ #'r   