
    Oh7                        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ZddlmZ ej                  j!                  d      Z G d d	e	j$                        Z G d
 dej(                        Z G d d      Zy)    N)DistutilsPlatformError)support)get_platform   )msvcznot hasattr(msvc, "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    /mnt/c/Users/Administrator/Desktop/help_/test_env/lib/python3.12/site-packages/setuptools/_distutils/compilers/C/tests/test_msvc.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    	 	D"3_E]]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_spec2   s    x'''r   r"   N)r   Compilerr   
initialize)r   r   	plat_namer!   compilerr"   s      `  r   %test_cross_platform_compilation_pathsz6Testmsvccompiler.test_cross_platform_compilation_paths    s9      ==?	( 	D"46FG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_unicode8   s    - 
 !#

/BD I)

8	H""5)C>>#s***X^^%5!6666JJNN8$$2G

./ % JJNN8$$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      r5   zVS z is not installed)getattrr   r   skipr+   pathisdir)r   r4   lookupexpected_versionversionr<   s         r   test_get_vczTestmsvccompiler.test_get_vcI   sp    
 #/0"$B/4KK#cU"345****ww}}T"""r   )__name__
__module____qualname__r   r   markskipif	sysconfigr   
startswithparametrizer'   needs_winregr3   rA   r   r   r   r	   r	      s     [["I""$//66>   [[&&<>"	

'	
' H H  [[UL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   rO   zCheckThread.runZ   s-    	+GKM 	+LLNDM	+s    "77c                     | j                    S r   )rR   )r   s    r   __bool__zCheckThread.__bool__`   s    ==  r   )rB   rC   rD   rR   rO   rU   __classcell__)rS   s   @r   rL   rL   W   s    H+!r   rL   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-cd   )targetargsN)r   r#   _pathsrQ   
executablerangerL   spawnstartjoinall)r   r&   	inner_cmdcommandnthreadsthreads          r   test_concurrent_safezTestSpawn.test_concurrent_safee   s     ==?$H	>>43 INc

CDKx~~WI>
 
  	FLLN	 	FKKM	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/aNrm   )	distutilsrk   r   r#   r]   mockpatchobject	CCompilerr`   r+   r,   get)r   rk   r&   ro   s       r   test_concurrent_safe_fallbackz'TestSpawn.test_concurrent_safe_fallbackw   s|    
 	(==?$	4 ZZy22G_M 	$NNE7#	$ zz~~f%333	$ 	$s   BBN)rB   rC   rD   ri   rv   r   r   r   rX   rX   d   s    $4r   rX   )r+   rQ   rG   	threadingunittest.mockrq   distutils.errorsr   distutils.testsr   distutils.utilr   r    r   rE   rF   rJ   TempdirManagerr	   ThreadrL   rX   r   r   r   <module>r      si    	 
    3 # '  {{!!"?@C#w-- C#L
!)"" 
!$4 $4r   