Ë
    nûàgÍ  ã                   ó
  — d 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 ddlmZ ddlZej                   j#                  d«      Z G d„ d	ej&                  «      Z G d
„ dej*                  «      Z G d„ d«      Zy)z"Tests for distutils._msvccompiler.é    N)Ú_msvccompiler)ÚDistutilsPlatformError)Úsupport)Úget_platformz$not hasattr(_msvccompiler, "winreg")c            	       óF  — e Zd Zd„ Zej
                  j                   ej                  «       j                  d«       d¬«      ej
                  j                  dddd e«       fg«      d	„ «       «       Zed
„ «       Zeej
                  j                  dd«      d„ «       «       Zy)ÚTestmsvccompilerc                 ó¾   — d„ }|j                  t        d|«       t        j                  t        «      5  t        j
                  d«       d d d «       y # 1 sw Y   y xY w)Nc                  ó   — y)N)NN© )Ú	plat_specs    úk/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/test_msvccompiler.pyÚ_find_vcvarsallz:Testmsvccompiler.test_no_compiler.<locals>._find_vcvarsall   s   € Øó    r   zwont find this version)Úsetattrr   ÚpytestÚraisesr   Ú_get_vc_env)ÚselfÚmonkeypatchr   s      r   Útest_no_compilerz!Testmsvccompiler.test_no_compiler   sO   € ò	ð 	×ÑœMÐ+<¸oÔNä�]‰]Ô1Ó2ñ 	Ü×%Ñ%Ø(ô÷	÷ 	ñ 	ús   ´AÁAÚwinz-Only run test for non-mingw Windows platforms)Úreasonzplat_name, expected)ú	win-arm64r   )ú	win-amd64r   Nc                 óˆ   ‡— t        j                  «       }ˆfd„}|j                  t         d|«       |j                  |«       y)zS
        Ensure a specified target platform is passed to _get_vcvars_spec.
        c                 ó   •— |‰k(  sJ ‚y ©Nr   )Úhost_platformÚplatformÚexpecteds     €r   Ú_get_vcvars_speczPTestmsvccompiler.test_cross_platform_compilation_paths.<locals>._get_vcvars_spec3   s   ø€ Ø˜xÒ'Ð'Ñ'r   r!   N)r   ÚMSVCCompilerr   Ú
initialize)r   r   Ú	plat_namer    Úcompilerr!   s      `  r   Ú%test_cross_platform_compilation_pathsz6Testmsvccompiler.test_cross_platform_compilation_paths!   s<   ø€ ô  !×-Ñ-Ó/ˆô	(ð 	×ÑœMÐ+=Ð?OÔPØ×Ñ˜IÕ&r   c                 óÖ  — d}d}t         j                  j                  dd «      }|t         j                  |<   	 t        j                  d«      }|j                  «       |v sJ ‚|||j                  «          k(  sJ ‚	 t         j                  j                  |«       |r|t         j                  d<   y y # t         j                  j                  |«       |r|t         j                  d<   w w xY w)Nu   á¹°á¸–á¹¤á¹ªâ”…á¹¼áº¨á¹œu	   â‚ƒâ�´â‚…ÚDISTUTILS_USE_SDKÚx86)ÚosÚenvironÚpopr   r   Úlower)r   Útest_varÚ
test_valueÚold_distutils_use_sdkÚenvs        r   Útest_get_vc_env_unicodez(Testmsvccompiler.test_get_vc_env_unicode9   sÉ   € à-ˆØ ˆ
ô !#§
¡
§¡Ð/BÀDÓ IÐØ)Œ�
‰
�8Ñð	HÜ×+Ñ+¨EÓ2ˆCØ—>‘>Ó# sÑ*Ð*Ð*Ø  X§^¡^Ó%5Ñ!6Ò6Ð6Ñ6ä�J‰J�N‰N˜8Ô$Ù$Ø2G”—
‘
Ð.Ò/ð %øô �J‰J�N‰N˜8Ô$Ù$Ø2G”—
‘
Ð.Ò/ð %ús   ¹AB1 Â17C(Úver©iß  iá  c                 óÔ   — t        t        d|› �«      }dddœ|   } |«       \  }}|st        j                  d|› d�«       ||k\  sJ ‚t        j
                  j                  |«      sJ ‚y )NÚ_find_vcé   é   r4   zVS z is not installed)Úgetattrr   r   Úskipr*   ÚpathÚisdir)r   r3   ÚlookupÚexpected_versionÚversionr;   s         r   Útest_get_vczTestmsvccompiler.test_get_vcJ   sp   € ô
 œ¨(°3°%Ð(8Ó9ˆØ"$¨BÑ/°Ñ4ÐÙ›‰ˆ�ÙÜ�K‰K˜#˜c˜UÐ"3Ð4Ô5ØÐ*Ò*Ð*Ð*Ü�w‰w�}‰}˜TÔ"Ð"Ñ"r   )Ú__name__Ú
__module__Ú__qualname__r   r   ÚmarkÚskipifÚ	sysconfigr   Ú
startswithÚparametrizer&   Úneeds_winregr2   r@   r   r   r   r   r      sÂ   „ òð ‡[�[×ÑØ"ˆI×"Ñ"Ó$×/Ñ/°Ó6Ð6Ø>ð ó ð ‡[�[×ÑØà&Ø&Ø‘<“>Ð"ð	
óñ
'óó	ð
'ð ñHó ðHð  Ø‡[�[×Ñ˜U LÓ1ñ	#ó 2ó ñ	#r   r   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚCheckThreadNc                 ót   •— 	 t         ‰| �  «        y # t        $ r t        j                  «       | _        Y y w xY wr   )ÚsuperÚrunÚ	ExceptionÚsysÚexc_info)r   Ú	__class__s    €r   rN   zCheckThread.run[   s-   ø€ ð	+Ü‰G‰K�MøÜò 	+ÜŸL™L›NˆDŽMð	+ús   ƒ ’"7¶7c                 ó   — | j                    S r   )rQ   )r   s    r   Ú__bool__zCheckThread.__bool__a   s   € Ø—=‘=Ð Ð r   )rA   rB   rC   rQ   rN   rT   Ú__classcell__)rR   s   @r   rK   rK   X   s   ø„ Ø€Hô+ö!r   rK   c                   ó   — e Zd Zd„ Zd„ Zy)Ú	TestSpawnc                 ó@  — t        j                  «       }d|_        d}t        j                  d|g}t        d«      D �cg c]  }t        |j                  |g¬«      ‘Œ }}|D ]  }|j                  «        Œ |D ]  }|j                  «        Œ t        |«      sJ ‚yc c}w )zK
        Concurrent calls to spawn should have consistent results.
        r    z2import os; assert os.environ["PATH"] == "expected"z-céd   )ÚtargetÚargsN)r   r"   Ú_pathsrP   Ú
executableÚrangerK   ÚspawnÚstartÚjoinÚall)r   r%   Ú	inner_cmdÚcommandÚnÚthreadsÚthreads          r   Útest_concurrent_safezTestSpawn.test_concurrent_safef   s    € ô !×-Ñ-Ó/ˆØ$ˆŒØHˆ	Ü—>‘> 4¨Ð3ˆô INÈcË
ö
ØCDŒK˜xŸ~™~°W°IÖ>ð
ˆð 
ð ò 	ˆFØ�L‰L�Nð	àò 	ˆFØ�K‰K�Mð	ä�7Œ|Ð‰|ùò
s   ¾Bc                 ó8  — ddl m} t        j                  «       }d|_        d„ }t
        j                  j                  |j                  d|«      5  |j                  dg«       ddd«       t        j                  j                  d«      dk7  sJ ‚y# 1 sw Y   Œ.xY w)	zy
        If CCompiler.spawn has been monkey-patched without support
        for an env, it should still execute.
        r   )Ú	ccompilerr    c                 ó4   — t         j                  d   dk(  sJ ‚y)z A spawn without an env argument.ÚPATHr    N)r*   r+   )r   Úcmds     r   ÚCCompiler_spawnz@TestSpawn.test_concurrent_safe_fallback.<locals>.CCompiler_spawn‚   s   € ä—:‘:˜fÑ%¨Ò3Ð3Ñ3r   r_   zn/aNrl   )Ú	distutilsrj   r   r"   r\   ÚmockÚpatchÚobjectÚ	CCompilerr_   r*   r+   Úget)r   rj   r%   rn   s       r   Útest_concurrent_safe_fallbackz'TestSpawn.test_concurrent_safe_fallbackx   s   € õ
 	(ä ×-Ñ-Ó/ˆØ$ˆŒò	4ô �Z‰Z×Ñ˜y×2Ñ2°G¸_ÓMñ 	$Ø�N‰N˜E˜7Ô#÷	$ô �z‰z�~‰~˜fÓ%¨Ò3Ð3Ñ3÷	$ð 	$ús   ÁBÂBN)rA   rB   rC   rh   ru   r   r   r   rW   rW   e   s   „ òó$4r   rW   )Ú__doc__r*   rP   rF   Ú	threadingÚunittest.mockrp   ro   r   Údistutils.errorsr   Údistutils.testsr   Údistutils.utilr   r   rD   rE   rI   ÚTempdirManagerr   ÚThreadrK   rW   r   r   r   ú<module>r~      sl   ðÙ (ã 	Û 
Û Û Ý Ý #Ý 3Ý #Ý 'ã à�{‰{×!Ñ!Ð"HÓI€ôC#�w×-Ñ-ô C#ôL
!�)×"Ñ"ô 
!÷$4ò $4r   