
    ϶vg                        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                            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)support)get_platformz$not hasattr(_msvccompiler, "winreg")c            	       j   e Zd Zd Zej                             ej                    	                    d           d          ej        
                    dddd e            fg          d	                         Zed
             Zeej        
                    dd          d                         ZdS )Testmsvccompilerc                     d }|                     t          d|           t          j        t                    5  t          j        d           d d d            d S # 1 swxY w Y   d S )Nc                     dS )N)NN )	plat_specs    j/var/www/pixelcanvas.ch/venv/lib/python3.11/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   s    	 	 	 	M+<oNNN]122 	 	%(  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA"Awinz-Only run test for non-mingw Windows platforms)reasonzplat_name, expected)	win-arm64r   )	win-amd64r   Nc                     t          j                    }fd}|                    t           d|           |                    |           dS )zS
        Ensure a specified target platform is passed to _get_vcvars_spec.
        c                     |k    sJ d S 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!   sb      !-//	( 	( 	( 	( 	( 	M+=?OPPPI&&&&&r   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_unicode9   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      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   s    
 (83(8(899"$B//4 	6K4c444555*****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6>    [&&<<>>"	
 
' 
' 	 
' 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r   )superrun	Exceptionsysexc_info)r   	__class__s    r   rN   zCheckThread.run[   sK    	+GGKKMMMMM 	+ 	+ 	+LNNDMMMM	+s    % "A
A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   sL        H+ + + + +! ! ! ! ! ! !r   rK   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.
        r    z2import os; assert os.environ["PATH"] == "expected"z-cc                 >    g | ]}t          j        g           S ))targetargs)rK   spawn).0ncommandr%   s     r   
<listcomp>z2TestSpawn.test_concurrent_safe.<locals>.<listcomp>o   s7     
 
 
CDKx~WI>>>
 
 
r   d   N)	r   r"   _pathsrP   
executablerangestartjoinall)r   	inner_cmdthreadsthreadr_   r%   s       @@r   test_concurrent_safezTestSpawn.test_concurrent_safef   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   )	ccompilerr    c                 6    t           j        d         dk    sJ dS )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3333r   r\   zn/aNro   )	distutilsrm   r   r"   rb   mockpatchobject	CCompilerr\   r*   r+   get)r   rm   r%   rq   s       r   test_concurrent_safe_fallbackz'TestSpawn.test_concurrent_safe_fallbackx   s    
 	(''''' -//$	4 	4 	4 Zy2G_MM 	$ 	$NNE7###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ z~~f%%333333s   
A--A14A1N)rA   rB   rC   rk   rx   r   r   r   rW   rW   e   s2          $4 4 4 4 4r   rW   )__doc__r*   rP   rF   	threadingunittest.mockrs   rr   r   distutils.errorsr   distutils.testsr   distutils.utilr   r   rD   rE   rI   TempdirManagerr   ThreadrK   rW   r   r   r   <module>r      sC   ( ( 				 



               # # # # # # 3 3 3 3 3 3 # # # # # # ' ' ' ' ' ' {!!"HIIC# C# C# C# C#w- C# C# C#L
! 
! 
! 
! 
!)" 
! 
! 
!$4 $4 $4 $4 $4 $4 $4 $4 $4 $4r   