U
    ui	                     @   s`   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dZG dd dZ	d	d
 Z
dd ZdS )zReusable functions and classes for different types of integration tests.

For example ``Archive`` can be used to check the contents of distribution built
with setuptools, and ``run`` will always try to be as verbose as possible to
facilitate debugging.
    NPath)ZipFilec                 C   sz   t j| dddtj|pi d}|jd |j }td td|  d|j d|  |jd	kr`|S t |j| |j|jd S )
NTutf-8)capture_outputtextencodingenv
z<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~z	Command: z
return code: z

r   )	
subprocessrunosenvironstdoutstderrprint
returncodeCalledProcessError)cmdr	   rout r   H/tmp/pip-unpacked-wheel-9osl9suo/setuptools/tests/integration/helpers.pyr      s    	
r   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )Archivez5Compatibility layer for ZipFile/Info and TarFile/Infoc                 C   sH   || _ |dr t|d| _n$|dr6t|| _nt| dd S )Nztar.gzr:gzzipz# doesn't seem to be a zip or tar.gz)	_filenameendswithtarfileopen_objr   
ValueError)selffilenamer   r   r   __init__&   s    

zArchive.__init__c                 C   s$   t | jdrt| j S t| jS )Ninfolist)hasattrr    iterr%   )r"   r   r   r   __iter__/   s    zArchive.__iter__c                 C   s   t |dr|jS |jS )Nr#   )r&   r#   name)r"   zip_or_tar_infor   r   r   get_name4   s    
zArchive.get_namec                 C   s\   t | jdrJ| j|}|d kr<d|j d| j }t|t| dS t| j|dS )NextractfilezInvalid z in r   )r&   r    r,   r)   r   r!   strread)r"   r*   contentmsgr   r   r   get_content9   s    zArchive.get_contentN)__name__
__module____qualname____doc__r$   r(   r+   r1   r   r   r   r   r   #   s
   	r   c              	   C   sF   t | d}dd | D }W 5 Q R X dd |D }dd |D S )Nr   c                 S   s   g | ]}t |qS r   r   .0fr   r   r   
<listcomp>E   s     z%get_sdist_members.<locals>.<listcomp>c                 s   s"   | ]}d  |jdd V  qdS )/   N)joinpartsr6   r   r   r   	<genexpr>G   s     z$get_sdist_members.<locals>.<genexpr>c                 S   s   h | ]}|r|qS r   r   r6   r   r   r   	<setcomp>H   s      z$get_sdist_members.<locals>.<setcomp>)r   r   getnames)Z
sdist_pathtarfilesZrelative_filesr   r   r   get_sdist_membersC   s    rC   c              
   C   s,   t | }t| W  5 Q R  S Q R X d S )N)r   setnamelist)
wheel_pathzipfiler   r   r   get_wheel_membersK   s    
rH   )N)r5   r   r   r   pathlibr   rG   r   r   r   rC   rH   r   r   r   r   <module>   s   
 