U
    jP^*                     @   s,  d dl Zd dl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	 e
ejddZejddZejdd	Zejd
dZejddZddge ddeg Ze
ejddZejejedddZdd ZG dd dejZG dd dejZG dd dejZG dd dejZdS )    N)base)test_packagingPIPFLAGS 
PIPVERSIONpip
PBRVERSIONpbrREPODIR
WHEELHOUSE-minstall-fPROJECTSz..c               
   c   s   t sd S tddg} tD ]}| }|dd }z@ttjt |dd }d|	 krfW 5 Q R  W qW 5 Q R X W n t
k
r   Y qY nX || krq|t||dfV  qd S )	NZtempestrequirements/setup.pyZrtr	   )name
short_name)r
   setr   stripsplitopenospathjoinreadIOErrordict)Zexcludesr   r   f r!   </usr/lib/python3/dist-packages/pbr/tests/test_integration.pyall_projects#   s,      
r#   c                       sH   e Zd Zee Z fddZee	j
dddkddd Z  ZS )	TestIntegrationc              	      s@   t dtjdd}| tt|   W 5 Q R X t	  d S )NZOS_TEST_TIMEOUTZ600)
fixturesZEnvironmentVariabler   environgetsuperr$   setUpr   Z_config_git)selfenv	__class__r!   r"   r)   ;   s     zTestIntegration.setUpPBR_INTEGRATIONN1integration tests not enabledc           	      C   s  |  tjdddtjt| jgtjtdd |  tjddtjt| jdd	 tj|  t	 jd
}|  tdddtjt| j|g |  t
jdddtgtd}|j}|  tjd|ddg|d |  t
jdddtgtd}|j}tj|dttj|dd }|  td|gt |g  |  t
jdddtgtd}|j}|j}|  td|gt d| g  | jdkrd}t|D ]\}}}d|krd}q| | |  t
jdddtgtd}|j}|j}|  td|gt d|g  d S )Nzsync-reqpythonz	update.pyr   cwdzcommit-requirementsz.git diff --quiet || git commit -amrequirementsT)r3   shellZprojectZcloneZgitsdistr   wheel)modulesZpip_cmdr   ZtarballZdistr   zinstall-gitzgit+file://ZnovaFzmigrate.cfgz	install-ez-e)
useFixturer   CapturedSubprocessr   r   r   r
   r   r%   TempDirr   Venvr   PIP_CMDr1   listdirwalkZ
assertTrue)	r*   r   venvr1   filenamerootfound_	filenamesr!   r!   r"   test_integrationD   s            

 z TestIntegration.test_integration)__name__
__module____qualname__listr#   	scenariosr)   	testtools
skipUnlessr   r&   r'   rE   __classcell__r!   r!   r,   r"   r$   7   s   
	r$   c                   @   s.   e Zd Zeejdddkddd ZdS )TestInstallWithoutPbrr.   Nr/   r0   c           	      C   s  |  t j}tj|d}t| | jtj	ddd|fdt
d tj|d}t| tdtd	| d
tdtddd}|  t|j}|d }|d }| jtj	ddd|fd|d |  tdddg}|j}|  tjd|gddg |d d S )NZdistdirr   r5   -dF)
allow_failr3   Ztestpkga&                      #!/usr/bin/env python
                    import setuptools
                    setuptools.setup(
                        name = 'pkgTest',
                        tests_require = ['pkgReq'],
                        test_suite='pkgReq'
                    )
                zW                    [easy_install]
                    find_links = %s
                )r   z	setup.cfgz(                    pbr
                zE                    print("FakeTest loaded and ran")
                )requirements.txtzpkgReq/__init__.py)pkgTestpkgReqrR   rS   Znopbrr   r6   Ztestr2   )r8   r%   r:   r   r   r   mkdir_run_cmdsys
executablePBR_ROOTtextwrapdedentr   CreatePackagespackage_dirsr;   r1   r   r9   )	r*   ZtempdirZdist_dirZtest_pkg_dirpkgspkg_dirsZreq_pkg_dirr?   r1   r!   r!   r"   test_install_without_pbr   sD    
 
	   z.TestInstallWithoutPbr.test_install_without_pbr)	rF   rG   rH   rK   rL   r   r&   r'   r_   r!   r!   r!   r"   rN      s
   rN   c                	   @   s   e Zd Zdddgifdddgifdddgifddd	d
gifddddgifddddgifgZeejdddkddd Z	dS )TestMarkersPipzpip-1.5r7   zpip>=1.5,<1.6zpip-6.0zpip>=6.0,<6.1z
pip-latestr   zsetuptools-EL7
pip==1.4.1setuptools==0.9.8zsetuptools-Trustypip==1.5setuptools==2.2zsetuptools-minimumzsetuptools==0.7.2r.   Nr/   r0   c           	   	   C   s  dt dii i d}| t|j}| t j}t	j
|d}| td}|j}t	| | jD ]"}| j|dddd	|g|jd
d ql|D ]"}| j|ddd|g|| d
d q| j|ddddd|dg|jd
d | d| j|dddg|jd
dd  d S )NrQ   zr                    pkg_a; python_version=='1.2'
                    pkg_b; python_version!='1.2'
                )test_markersZpkg_aZpkg_bZrepoZmarkersr   r   r   z	--upgradeFr3   rP   r   r5   rO   z
--no-indexr   re   zpkg-bZfreezer   )rY   rZ   r8   r   r[   r\   r%   r:   r   r   r   r;   r1   rT   r7   rU   ZassertIn)	r*   r]   r^   Ztemp_dirZrepo_dirr?   
bin_pythonmodulepkgr!   r!   r"   test_pip_versions   sT    	

  
  
  z TestMarkersPip.test_pip_versions)
rF   rG   rH   rJ   rK   rL   r   r&   r'   rj   r!   r!   r!   r"   r`      s   	r`   c                   @   sr   e Zd Zdddgddfdddgddfd	d
dgddfdddgddfgZeejdddkddd Z	dS )TestLTSSupportZEL7ra   rb   T)r7   
py3supportZTrustyrc   rd   ZJessiez
pip==1.5.6zsetuptools==5.5.1ZWheezyPrecisezsetuptools==0.6c11Fr.   Nr/   r0   c                 C   sb   t jd dkr| js| d | tjd| jd}|j}dt	 }| j
|ddd	|g|jd
d d S )Nr      z9This combination will not install with py3, skipping testZ
setuptools)r7   zfile://%s#egg=pbrr   r   r   Frf   )rV   version_inforl   ZskipTestr8   r   r;   r7   r1   rX   rU   r   )r*   r?   rg   r	   r!   r!   r"   test_lts_venv_default_versions   s    
 z-TestLTSSupport.test_lts_venv_default_versions)
rF   rG   rH   rJ   rK   rL   r   r&   r'   ro   r!   r!   r!   r"   rk      s$   rk   )os.pathr   ZshlexrV   r%   rK   rY   Z	pbr.testsr   r   r   r&   r'   r   r   r   r
   r   r<   r   r   abspathr   __file__rX   r#   ZBaseTestCaser$   rN   r`   rk   r!   r!   r!   r"   <module>   s(   N72