o
    Ni;                     @   s
  d dl mZ d dl mZ 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Zd dlmZ d dlm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dd ZG dd dejZG dd dejZ ej!d d dk rd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d(dd)d*gifgZ"n1ej!d d d+k rd,dd-d.gifd/dd0d1gifd(dd)d*gifd2dd3d4gifgZ"n	d5dd6d7gifgZ"G d8d9 d9ejZ#G d:d; d;ejZ$dS )<    )absolute_import)print_functionN)ConfigParser)fixtures)base)utilPIPFLAGS 
PIPVERSIONpip
PBRVERSIONpbrREPODIR
WHEELHOUSE-minstall-fPROJECTSc               	   c   s    t jdd dkrd S tsd S d} tddg}tD ]T}| }|dd }z,tt j	
t|dd	}d
| vrC	 W d    W qW d    n1 sMw   Y  W n	 ty\   Y qw ||v rbq| d7 } |||dfV  q| sutdd S )NPBR_INTEGRATION1r   tempestrequirements/setup.pyrtr      )name
short_namez:no projects found: is PROJECTS set, and do the paths exist)osenvirongetr   setr   stripsplitopenpathjoinreadIOError	Exception)yieldedexcludesr   r   f r.   Y/home/ubuntu/.local/lib/python3.10/site-packages/pbr/tests/functional/test_integration.pyall_projects(   sB   r0   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                    sT   t dtjdd}| tt|   W d    n1 sw   Y  t	  d S )NOS_TEST_TIMEOUT600)
r   EnvironmentVariabler   r    r!   superr1   setUpr   
config_git)selfenv	__class__r.   r/   r6   M   s   zTestIntegration.setUpr   Nr   integration tests not enabledc              
   C   s  t jt| j}t j|d}tj| j }t j	|r;t
 }|| |dr;|jdddd}tj| }t jtdd}t j| t jd}t|d:}t|d	%}	|D ]}
|
d
d }tj| }||krx|	|
 q^W d    n1 sw   Y  W d    n1 sw   Y  td|g }| tjddddtgtd}|j}| tjd|ddg|d | tjddddtgtd}|j}t j|dt t j|dd }| td|g| |g  | tjddddtgtd}|j}|j}| td|g| d| g  | jdkr6d}t |D ]\}}}d|v r/d}q#| | | tjddddtgtd}|j}|j}| td|g| d|g  d S )N	setup.cfgmetadatar   notapackagename)fallbackr   zupper-constraints.txtrwz===r   z-csdistr   wheelsetuptools<80)modulespip_cmdr   cwdtarballdistzinstall-gitzgit+file://novaFzalembic.iniTzinstall-editablez-e)r   r&   r'   r   r   	packagingutilscanonicalize_namelowerexistsr   r(   has_sectionr!   
useFixturer   TempDirr%   r$   writePIP_CMDpbr_fixturesVenvr   pythonCapturedSubprocesslistdirwalk
assertTrue)r8   r&   	setup_cfgproject_nameconfigraw_nameconstraintstmp_constraintssrcdestline
constraintrG   venvrY   filenamerootfound_	filenamesr.   r.   r/   test_integrationW   s   


	





z TestIntegration.test_integration)__name__
__module____qualname__listr0   	scenariosr6   	testtools
skipUnlessr   r    r!   rn   __classcell__r.   r.   r:   r/   r1   I   s    

r1   c                   @   s.   e Zd Zeejdddkddd ZdS )TestInstallWithoutPbrr   Nr   r<   c           
      C   s`  |  t j}tj|d}t| | jtj	ddd|fdt
jd tj|d}t| tdtd	| d
tddtddd}|  t
|j}|d }|d }| jtj	ddd|fd|d |  t
dg d}|j}|  t
jd|gddg |d |  t
jd|gddg |d tj|jdd}	|  t
jd|	gdg |d d S )Ndistdirr   rC   -dF)
allow_failrI   testpkgau                      #!/usr/bin/env python
                    import setuptools
                    setuptools.setup(
                        name = 'pkgTest',
                        # TODO(clarkb) should we use a random prefix to
                        # avoid collisions?
                        install_requires = ['pkgReq'],
                    )
                    z[                    [easy_install]
                    find_links = %s
                    )r   r=   z,                    pbr
                    r	   zI                    print("FakeTest loaded and ran")
                    )requirements.txtzpkgReq/__init__.pyzpkgReq/__main__.py)pkgTestpkgReqr}   r~   nopbr)r   rD   rE   r   rH   r   binr   freeze)rS   r   rT   r&   r   r'   mkdir_run_cmdsys
executablerW   PBR_ROOTtextwrapdedentPackagespackage_dirsrX   rY   rZ   )
r8   tempdirdist_dirtest_pkg_dirpkgspkg_dirsreq_pkg_dirrh   rY   pbr_cmdr.   r.   r/   test_install_without_pbr   st   


*

z.TestInstallWithoutPbr.test_install_without_pbr)	ro   rp   rq   rt   ru   r   r    r!   r   r.   r.   r.   r/   rw      s    rw      )r   
   r   BionicrF   z
pip==9.0.1zsetuptools==39.0.1Stretchzsetuptools==33.1.1EL8z
pip==9.0.3zsetuptools==39.2.0Busterz	pip==18.1zsetuptools==40.8.0Focalzpip==20.0.2zsetuptools==45.2.0)r      r   Bullseyezpip==20.3.4zsetuptools==52.0.0Bookwormzpip==23.0.1zsetuptools==66.1.1Jammyzpip==22.0.2zsetuptools==59.6.0Noblezpip==24.0.0zsetuptools==68.1.2c                   @   sD   e Zd Zddddgifge Zeej	dddkdd	d
 Z
dS )TestMarkersPipz
pip-latestrF   r   
setuptoolsr   Nr   r<   c           	      C   s  dt dii i d}| t|j}| t j}t	j
|d}| td}|j}t	| | jD ]}| tjd|ddd	d
|g|jd q6|D ]}| j|ddd|g|| dd qM| j|ddd	ddd|dg|jdd | j|g d|jddd }| d|v pd|v  d S )Nr|   zr                    pkg_a; python_version=='1.2'
                    pkg_b; python_version!='1.2'
                )test_markerspkg_apkg_brepomarkerszpip-versionr   r   r   z	--upgraderH   r   rC   ry   F)rI   rz   z
--no-indexz--no-build-isolationr   r   )r   r   r   r   r   zpkg-b)r   r   rS   rW   r   r   r   rT   r&   r   r'   rX   rY   r   rF   rZ   r   r]   )	r8   r   r   temp_dirrepo_dirrh   
bin_pythonmodulepkgr.   r.   r/   test_pip_versionsU  sf   

	
	z TestMarkersPip.test_pip_versions)ro   rp   rq   lts_scenariosrs   rt   ru   r   r    r!   r   r.   r.   r.   r/   r   O  s    r   c                   @   s2   e Zd ZeZeej	dddkddd Z
dS )TestLTSSupportr   Nr   r<   c              	   C   sL   |  tjd| jd}|j}dtj }|  tjd|ddd|g|jd d S )	Nr   )rF   zfile://%s#egg=pbrzlts-supportr   r   r   rH   )rS   rW   rX   rF   rY   r   rZ   r&   )r8   rh   r   r   r.   r.   r/   test_lts_venv_default_versions  s   
z-TestLTSSupport.test_lts_venv_default_versions)ro   rp   rq   r   rs   rt   ru   r   r    r!   r   r.   r.   r.   r/   r     s    r   )%
__future__r   r   os.pathr   shlexr   r   packaging.utilsrM   rt   r   pbr._compat.fiver   	pbr.testsrW   pbr.tests.functionalr   r   r$   r    r!   r   r
   r   r   r   rV   r   r0   BaseTestCaser1   rw   version_infor   r   r   r.   r.   r.   r/   <module>   sR   ! lK