U
    f                     @   s  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Zejdddd Z	dd	 Z
d
d Zejjdddejje  ddejddejdejjddddejdejjddddejdejjddddejdejjddddejdejjdddgdd Zdd ZdS )    N)urlopen)URLErrorT)Zautousec                 C   s,   |  dddg }|tjkr(td dS )zY
    pytest_virtualenv may not work. if it doesn't, skip these
    tests. See #1284.
    python-czimport sys; print(sys.prefix)z/virtualenv is broken (see pypa/setuptools#1284)N)runstripsysprefixpytestskip)venvZvenv_prefix r   ?lib/python3.8/site-packages/setuptools/tests/test_virtualenv.pypytest_virtualenv_works   s    
r   c                 C   s    ddddt |g}| | dS )zC
    Check setuptools can be installed in a clean environment.
    r   -mpipinstallN)strr   )venv_without_setuptoolssetuptools_wheelcmdr   r   r   test_clean_env_install   s    r   c                   C   s:   t jdds6ztddd W n tk
r4   Y dS X dS )NZNETWORK_REQUIREDFzhttps://pypi.org   )ZtimeoutT)osenvirongetr   r   r   r   r   r   access_pypi   s    r   z*platform.python_implementation() == "PyPy"zChttps://github.com/pypa/setuptools/pull/2865#issuecomment-965834995)reasonz
no networkpip_versionzpip<20.1zsys.version_info >= (3, 12)z-pip 23.1.2 required for Python 3.12 and later)Zmarkszpip<21zpip<22zpip<23z,https://github.com/pypa/pip/archive/main.zipz#2975c              	   C   s   |}| ddddg | dk	r6| ddddd| dg ttj | dd	d
g W 5 Q R X | ddt|g | ddddt|g dS )z7
    Check pip can upgrade setuptools from source.
    r   r   z-UZwheelNr   r   z--retries=1r   zimport setuptoolsz--no-cache-dirz	--upgrade)r   r
   Zraises
subprocessZCalledProcessErrorr   )r   r   r   Zsetuptools_sdistr   r   r   r   test_pip_upgrade_from_source*   s    5r    c                 C   s,   |j j}dD ]}| jdd|dg|d qdS )zP
    Quick and dirty test to ensure all external dependencies are vendored.
    )Zuploadr   zsetup.pyz-h)cwdN)ZconfigZrootdirr   )Z	bare_venvZrequestZsetuptools_dirZcommandr   r   r   test_no_missing_dependenciesm   s    r"   )r   r   r   Zurllib.requestr   Zurllib.errorr   r
   Zfixturer   r   r   ZmarkZskipifZparametrizeZparamZxfailr    r"   r   r   r   r   <module>   sj   


&