
    ]f                         d 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Zej                            d          Z G d dej                  Z G d	 d
ej                  Z G d d          ZdS )z"Tests for distutils._msvccompiler.    N)_msvccompiler)DistutilsPlatformError)supportz$not hasattr(_msvccompiler, "winreg")c                       e Zd Zd Zed             Zeej                            dd          d                         Z	dS )Testmsvccompilerc                    d }t           j        }|t           _        	 t          j        t                    5  t          j        d           d d d            n# 1 swxY w Y   |t           _        d S # |t           _        w xY w)Nc                     dS )N)NN )	plat_specs    j/var/www/html/software/conda/lib/python3.11/site-packages/setuptools/_distutils/tests/test_msvccompiler.py_find_vcvarsallz:Testmsvccompiler.test_no_compiler.<locals>._find_vcvarsall   s    :    zwont find this version)r   r   pytestraisesr   _get_vc_env)selfr   old_find_vcvarsalls      r   test_no_compilerz!Testmsvccompiler.test_no_compiler   s    	 	 	 +:(7%	?566  ),                
 -?M))),>M)>>>>s.   A0 AA0 AA0 AA0 0A>c                    d}d}t           j                            dd           }|t           j        |<   	 t          j        d          }|                                |v sJ |||                                         k    sJ 	 t           j                            |           |r|t           j        d<   d S d S # t           j                            |           |r|t           j        d<   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_unicode"   s    - 
 !#
/BD I I)
8	H+E22C>>##s****X^^%5%5!666666JNN8$$$$ H2G
.///H H JNN8$$$$ H2G
./GGGGs   AB6 62C(veri  i  c                     t          t          d|           }ddd|         } |            \  }}|st          j        d| d           ||k    sJ t          j                            |          sJ d S )N_find_vc      r"   zVS z is not installed)getattrr   r   skipr   pathisdir)r   r!   lookupexpected_versionversionr)   s         r   test_get_vczTestmsvccompiler.test_get_vc3   s    
 (83(8(899"$B//4 	6K4c444555*****w}}T"""""""r   N)
__name__
__module____qualname__r   needs_winregr    r   markparametrizer.   r
   r   r   r   r      sy        ? ? ?" H H \H  [UL11	# 	# 21 \	# 	# 	#r   r   c                   (     e Zd ZdZ fdZd Z xZS )CheckThreadNc                     	 t                                                       d S # t          $ r t          j                    | _        Y d S w xY wN)superrun	Exceptionsysexc_info)r   	__class__s    r   r:   zCheckThread.runD   sK    	+GGKKMMMMM 	+ 	+ 	+LNNDMMMM	+s    % "A
Ac                     | j          S r8   )r=   )r   s    r   __bool__zCheckThread.__bool__J   s    =  r   )r/   r0   r1   r=   r:   r@   __classcell__)r>   s   @r   r6   r6   A   sL        H+ + + + +! ! ! ! ! ! !r   r6   c                       e Zd Zd Zd ZdS )	TestSpawnc                    t          j                    d_        d}t          j        d|gfdt          d          D             }|D ]}|                                 |D ]}|                                 t          |          sJ dS )zK
        Concurrent calls to spawn should have consistent results.
        expectedz2import os; assert os.environ["PATH"] == "expected"z-cc                 >    g | ]}t          j        g           S ))targetargs)r6   spawn).0ncommandcompilers     r   
<listcomp>z2TestSpawn.test_concurrent_safe.<locals>.<listcomp>X   s7     
 
 
CDKx~WI>>>
 
 
r   d   N)	r   MSVCCompiler_pathsr<   
executablerangestartjoinall)r   	inner_cmdthreadsthreadrL   rM   s       @@r   test_concurrent_safezTestSpawn.test_concurrent_safeO   s     !-//$H	>43
 
 
 
 
HMc


 
 
  	 	FLLNNNN 	 	FKKMMMM7||r   c                 >   ddl m} t          j                    }d|_        d }t
          j                            |j        d|          5  |	                    dg           ddd           n# 1 swxY w Y   t          j                            d          dk    sJ dS )	zy
        If CCompiler.spawn has been monkey-patched without support
        for an env, it should still execute.
        r   )	ccompilerrE   c                 6    t           j        d         dk    sJ dS )z A spawn without an env argument.PATHrE   N)r   r   )r   cmds     r   CCompiler_spawnz@TestSpawn.test_concurrent_safe_fallback.<locals>.CCompiler_spawnk   s     :f%333333r   rI   zn/aNr^   )	distutilsr\   r   rP   rQ   mockpatchobject	CCompilerrI   r   r   get)r   r\   rM   r`   s       r   test_concurrent_safe_fallbackz'TestSpawn.test_concurrent_safe_fallbacka   s    
 	(''''' -//$	4 	4 	4 Zy2G_MM 	$ 	$NNE7###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ z~~f%%333333s   
A--A14A1N)r/   r0   r1   rZ   rg   r
   r   r   rC   rC   N   s2          $4 4 4 4 4r   rC   )__doc__r   r<   	threadingunittest.mockrb   ra   r   distutils.errorsr   distutils.testsr   r   r3   skipifr2   TempdirManagerr   Threadr6   rC   r
   r   r   <module>rp      s   ( ( 				 



           # # # # # # 3 3 3 3 3 3 # # # # # # {!!"HII.# .# .# .# .#w- .# .# .#b
! 
! 
! 
! 
!)" 
! 
! 
!$4 $4 $4 $4 $4 $4 $4 $4 $4 $4r   