a
    3jM                     @   sJ  d dl mZ e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 e
jd	d
gd ddlmZmZmZmZmZmZmZmZmZ dd ZedddZeejd
dG dd dZ ej!e ed\Z"Z#eejd
dG dd dZ$ej!e$ed\Z%Z&eejd
dG dd dej'Z(dS )   )utilzimportlib.machinery    N)support)get_platform)contextmanager)temp_modulewinregwin)Zrequired_on)		CreateKeyHKEY_CURRENT_USERSetValueREG_SZKEY_ALL_ACCESSEnumKeyCloseKey	DeleteKeyOpenKeyc                 C   sp   zt | |td}W n ty&   Y d S 0 zt|d}W n tyL   Y qZY n0 t|| q(t| t| | d S )N)accessr   )r   r   OSErrorr   delete_registry_treer   r   )rootsubkeyhkeyZ	subsubkey r   \/www/server/python_manager/versions/3.9.10/lib/python3.9/test/test_importlib/test_windows.pyr      s    
r   c              	   c   s   | j jr| j j}n| j j}|j|dtjd d  d}zzt|d>}tt	|}|d u r^|d }t
|dt| d V  W d    n1 s0    Y  W | j jrtj|}tt	| n | j jrtj|}tt	| 0 d S )Nz%d.%d   )fullnamesys_versionza = 1z.py )WindowsRegistryFinderDEBUG_BUILDREGISTRY_KEY_DEBUGREGISTRY_KEYformatsysversion_infor   r
   r   r   r   ospathdirnamer   )	machinerynamer'   r   keylocationr   r   r   r   setup_module$   s&    

&r-   zrequires Windowsc                   @   s:   e Zd Zde Zdd Zdd Zdd Z	dd	 Z
d
S )WindowsRegistryFinderTestsz	spamham{}c                 C   s   | j jd}| |d  d S NZspam)r)   r   	find_specassertIs)selfspecr   r   r   test_find_spec_missing?   s    z1WindowsRegistryFinderTests.test_find_spec_missingc                 C   s   | j jd}| |d  d S r/   )r)   r   find_moduler1   )r2   loaderr   r   r   test_find_module_missingC   s    z3WindowsRegistryFinderTests.test_find_module_missingc                 C   sj   t | j| jH | jj| j}| jj| j}| |d  | |d  W d    n1 s\0    Y  d S )N)r-   r)   test_moduler   r5   r0   ZassertIsNotr2   r6   r3   r   r   r   test_module_foundG   s
    z,WindowsRegistryFinderTests.test_module_foundc                 C   sj   t | j| jddD | jj| j}| jj| j}| | | | W d    n1 s\0    Y  d S )N.)r'   )r-   r)   r8   r   r5   r0   ZassertIsNoner9   r   r   r   test_module_not_foundN   s
    
z0WindowsRegistryFinderTests.test_module_not_foundN)__name__
__module____qualname__r#   r&   getpidr8   r4   r7   r:   r<   r   r   r   r   r.   9   s
   r.   )r)   c                   @   s   e Zd Zdd ZdS )WindowsExtensionSuffixTestsc                 C   s|   | j j}dtjtddt }z|d}W n$ t	yT   |d}d| }Y n0 | 
|| ||}| || d S )Nz.cp{0.major}{0.minor}-{1}.pydz[^a-zA-Z0-9]_z.pydz_d.pydZ_d)r)   EXTENSION_SUFFIXESr#   r$   r%   resubr   index
ValueErrorZassertInZ
assertLess)r2   suffixesZexpected_tagZ
untagged_iZtagged_ir   r   r   test_tagged_suffix[   s    

z.WindowsExtensionSuffixTests.test_tagged_suffixN)r=   r>   r?   rI   r   r   r   r   rA   Y   s   rA   c                   @   s   e Zd Zdd Zdd ZdS )WindowsBootstrapPathTestsc                 G   s8   ddl m} || }| | kr(d S | || d S )Nr   )
_path_join)Zimportlib._bootstrap_externalrK   casefoldZassertEqual)r2   ZexpectedZinputsrK   actualr   r   r   
check_joinr   s
    z$WindowsBootstrapPathTests.check_joinc              	   C   s  |  dddd |  dddddd |  dddd |  ddd |  dd |  d	d
d |  d	dd
d |  d	dd	 |  dddd |  ddd |  ddd |  dddd |  ddd |  dddd |  ddddd |  dddddd |  ddddddd |  dddddd |  dd |  dd |  dd d! |  dd"d! |  d#d#d! |  d$d%d! |  d$d&d! d S )'NzC:\A\BzC:\ABzD:\DzC:BzA\BzD:AzD:zC:\B\CzA\B\CCzB\CzA\B/CzB/CzA/zB\zA\../Cz../CzA.\.\BzA.r;   z\\Server\Share\A\B\Cz\\Server\Sharez\Az\\Server2\Share2z\\Serverz\Sharez\\Server\Share\\zC:\AzC:/Ar   zC:/zC:z//Server/Share\z//Server/Share/z//Server/Share)rN   )r2   r   r   r   test_path_joiny   s6    
z(WindowsBootstrapPathTests.test_path_joinN)r=   r>   r?   rN   rS   r   r   r   r   rJ   p   s   rJ   )N))r   r   Z	test_utilZimport_importlibr)   r&   rD   r$   Zunittesttestr   Zdistutils.utilr   
contextlibr   r   import_moduler   r
   r   r   r   r   r   r   r   r   r   r-   Z
skipUnlessplatform
startswithr.   Z	test_bothZ!Frozen_WindowsRegistryFinderTestsZ!Source_WindowsRegistryFinderTestsrA   Z"Frozen_WindowsExtensionSuffixTestsZ"Source_WindowsExtensionSuffixTestsZTestCaserJ   r   r   r   r   <module>   s4   
,