U
    ÇZjH  ã                   @   s  d dl mZ d dlZzd dlZejZW n" ek
rH   d dlZejZY nX d dlZd dl	m
Z
 d dl	mZ d dl	mZ d dlmZ G dd„ dejƒZd	Zd
d„ Zd dd„ e d¡D ƒ¡ZG dd„ dejƒZG dd„ deƒZG dd„ dejƒZG dd„ deƒZG dd„ dejƒZdS )é    )Úprint_functionN)Úgit)Úoptions)Ú	packaging)Úbasec                       sè   e Zd Zdeddddejdd�fdedd	ddejdd�fd
edd	ddejdd�fdeddddejdd�fdeddddejdd�fdedd	ddejdd�fdedd	ddejdd�fdeddddejdd�fgZ‡ fdd„Zdd„ Z	‡  Z
S )ÚSkipFileWritesZchangelog_option_trueZskip_changelogÚTrueÚSKIP_WRITE_GIT_CHANGELOGNÚ	ChangeLog)Ú
option_keyÚoption_valueÚenv_keyÚ	env_valueÚpkg_funcÚfilenameZchangelog_option_falseÚFalseZchangelog_env_trueZchangelog_both_trueZauthors_option_trueZskip_authorsÚSKIP_GENERATE_AUTHORSÚAUTHORSZauthors_option_falseZauthors_env_trueZauthors_both_truec                    s¸   t t| ƒ ¡  |  t ¡ ¡j| _tj 	tjj
¡| _tj | jd¡| _tj | j¡sf|  d| j ¡ d S tj | j| j¡| _tƒ | _| jd k	ržd| jf| j| j< |  t | j| j¡¡ d S )Nú.gitz*%s is missing; skipping git-related checksú	setup.cfg)Úsuperr   ÚsetUpÚ
useFixtureÚfixturesÚTempDirÚpathÚ	temp_pathÚosÚabspathÚcurdirÚroot_dirÚjoinÚgit_dirÚexistsZskipTestr   ÚdictÚoption_dictr   r   ÚEnvironmentVariabler   r   ©Úself©Ú	__class__© úW/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/pbr/tests/test_setup.pyr   I   s$    ÿ
ÿÿzSkipFileWrites.setUpc                 C   sH   | j | j| j| jd� |  tj | j¡ | j	 
¡ tjkp@| jd k	¡ d S )N)r"   Údest_dirr%   )r   r"   r   r%   ÚassertEqualr   r   r#   r   r   Úlowerr   ZTRUE_VALUESr   r'   r+   r+   r,   Ú	test_skipZ   s    þýzSkipFileWrites.test_skip)Ú__name__Ú
__module__Ú__qualname__r$   r   Úwrite_git_changelogÚgenerate_authorsÚ	scenariosr   r0   Ú__classcell__r+   r+   r)   r,   r   $   s†     þÿ  þÿ  þÿ  þÿ  þÿ  þÿ  þÿ  þÿã#r   a­  7780758 Break parser  (tag: refs/tags/1_foo.1)
04316fe Make python  (refs/heads/review/monty_taylor/27519)
378261a Add an integration test script. 
3c373ac Merge "Lib  (HEAD, tag: refs/tags/2013.2.rc2, tag: refs/tags/2013.2, refs/heads/mile-proposed)
182feb3 Fix pip invocation for old versions of pip.  (tag: refs/tags/0.5.17)
fa4f46e Remove explicit depend on distribute.  (tag: refs/tags/0.5.16)
d1c53dd Use pip instead of easy_install for installation. 
a793ea1 Merge "Skip git-checkout related tests when .git is missing" 
6c27ce7 Skip git-checkout related tests when .git is missing 
451e513 Bug fix: create_stack() fails when waiting 
4c8cfe4 Improve test coverage: network delete API  (tag: refs/tags/(evil))
d7e6167 Bug fix: Fix pass thru filtering in list_networks  (tag: refs/tags/ev()il)
c47ec15 Consider 'in-use' a non-pending volume for caching  (tag: refs/tags/ev)il)
8696fbd Improve test coverage: private extension API  (tag: refs/tags/ev(il)
f0440f8 Improve test coverage: hypervisor list  (tag: refs/tags/e(vi)l)
04984a5 Refactor hooks file.  (HEAD, tag: 0.6.7,b, tag: refs/tags/(12), refs/heads/master)
a65e8ee Remove jinja pin.  (tag: refs/tags/0.5.14, tag: refs/tags/0.5.13)
c                 C   s8   |   ¡ s| S |  d¡\}}}| dd¡}d |||f¡S )z=Convert post-1.8.1 git log format to pre-1.8.1 git log formatú ztag: Ú )ÚstripÚsplitÚreplacer!   )ÚlineÚshaÚmsgZrefnamer+   r+   r,   Ú_make_old_git_changelog_formatx   s
    r@   Ú
c                 c   s   | ]}t |ƒV  qd S ©N)r@   )Ú.0r=   r+   r+   r,   Ú	<genexpr>‚   s   ÿrD   c                       sD   e Zd ZddeifddeifgZ‡ fdd„Zdd„ Zdd	„ Z‡  Z	S )
ÚGitLogsTestzpre1.8.3Ú	changelogz	post1.8.3c                    sh   t t| ƒ ¡  |  t ¡ ¡j| _tj 	tjj
¡| _tj | jd¡| _|  t d¡¡ |  t d¡¡ d S )Nr   r   r	   )r   rE   r   r   r   r   r   r   r   r   r   r    r!   r"   r&   r'   r)   r+   r,   r   Ž   s    ÿÿzGitLogsTest.setUpc              	      s0  ˆ   t ‡ fdd„¡¡ tjˆ jˆ jd� ttj	 
ˆ jd¡dƒ�æ}| ¡ }ˆ  d|¡ ˆ  d|¡ ˆ  d|¡ ˆ  d	|¡ ˆ  d
|¡ ˆ  d|¡ ˆ  d|¡ ˆ  d|¡ ˆ  d|¡ ˆ  d|¡ ˆ  d|¡ ˆ  d|¡ ˆ  d|¡ ˆ  d|¡ ˆ  d|¡ ˆ  d|¡ ˆ  d|¡ ˆ  d|¡ W 5 Q R X d S )Nc                    s   dt ˆ j d¡ƒiS )NÚstdoutzutf-8)ÚBytesIOrF   Úencode)Ú_r'   r+   r,   Ú<lambda>™   s     ÿz6GitLogsTest.test_write_git_changelog.<locals>.<lambda>©r"   r-   r
   Úrz2013.2z0.5.17z------zRefactor hooks filez+Bug fix: create\_stack() fails when waitingzRefactor hooks file.Z182feb3zreview/monty_taylor/27519z0.5.13z0.6.7Z12z(evil)zev()ilzev(ilzev)ilze(vi)lzMerge "z1\_foo.1)r   r   Z	FakePopenr   r4   r"   r   Úopenr   r   r!   ÚreadÚassertInÚassertNotIn)r(   Zch_fhZchangelog_contentsr+   r'   r,   Útest_write_git_changelog˜   s6    ÿþz$GitLogsTest.test_write_git_changelogc              	      s&  d}d}d}d| }d| j  }d| j  }d}|||||| ji‰ | j tj | jd¡g‰|  t d	‡fd
d„¡¡ ‡ fdd„}|  t d|¡¡ t	tj | jd¡dƒ�}	|	 
d| ¡ W 5 Q R X tj| j | jd� t	tj | jd¡dƒ�8}	|	 ¡ }
|  ||
k¡ |  ||
k¡ |  ||
k¡ W 5 Q R X d S )NzFoo Foo <email@foo.com>zBar Bar <email@bar.com>zFoo Bar <foo@bar.com>zCo-authored-by: z)git --git-dir=%s log --format=%%aN <%%aE>zgit --git-dir=%s logzgit rev-parse --show-toplevelz
AUTHORS.inzos.path.existsc                    s   t j | ¡ˆ kS rB   )r   r   r   )r   )Úexist_filesr+   r,   rK   Ì   ó    z3GitLogsTest.test_generate_authors.<locals>.<lambda>c                    s   ˆ d  | ¡ S )Nú )r!   )ÚcmdÚkwargs)Úcmd_mapr+   r,   Ú_fake_run_shell_commandÎ   s    zBGitLogsTest.test_generate_authors.<locals>._fake_run_shell_commandzpbr.git._run_shell_commandÚwz%s
rL   r   rM   )r"   r    r   r   r!   r   r   r   ÚMonkeyPatchrN   Úwriter   r5   rO   Ú
assertTrue)r(   Z
author_oldZ
author_newZ	co_authorZco_author_byZgit_log_cmdZgit_co_log_cmdZgit_top_levelrY   Zauth_fhZauthorsr+   )rX   rS   r,   Útest_generate_authors·   sN    ÿÿ
   ýÿ
þþÿz!GitLogsTest.test_generate_authors)
r1   r2   r3   Ú_old_git_changelog_contentÚ_changelog_contentr6   r   rR   r^   r7   r+   r+   r)   r,   rE   ‡   s   

þ
rE   c                   @   s   e Zd ZdgZdS )Ú_SphinxConfigZfooN)r1   r2   r3   Z	man_pagesr+   r+   r+   r,   ra   â   s   ra   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚBaseSphinxTestc                    sN  t t| ƒ ¡  dd l}g |jj_d|jj_|  t	 
ddd„ ¡¡ |  t	 
ddd„ ¡¡ |  t	 
dt¡¡ |  t	 
dd	d„ ¡¡ |  t	 
d
dd„ ¡¡ ddlm} | ¡ | _d| j_dddgi| jjd< t	 ddddg¡}|  |¡ |  t |j¡¡ i | jjd< t| dƒ�rd| jjd d< t| dƒ�rJ| j�rJ| jjd }d| jf|d< d S )Nr   ú"sphinx.application.Sphinx.__init__c                  _   s   d S rB   r+   ©ÚaÚkwr+   r+   r,   rK   ô   rT   z&BaseSphinxTest.setUp.<locals>.<lambda>úsphinx.application.Sphinx.buildc                  _   s   d S rB   r+   rd   r+   r+   r,   rK   ö   rT   ú sphinx.application.Sphinx.configú sphinx.config.Config.init_valuesc                  W   s   d S rB   r+   ©re   r+   r+   r,   rK   ú   rT   úsphinx.config.Config.__init__c                  W   s   d S rB   r+   rj   r+   r+   r,   rK   ü   rT   ©Údist©Úfake_packageÚ
source_dirre   Ú.Úbuild_sphinxro   ©zfake_module.pyrT   ©z"another_fake_module_for_testing.pyrT   ©zfake_private_module.pyrT   ÚpbrÚexcludes)r   úXfake_package.fake_private_module
fake_package.another_fake_*
fake_package.unknown_moduleZautodoc_exclude_modulesÚhas_optr   Úautodoc_index_modules)r   rb   r   Úsphinx.applicationÚapplicationÚSphinxÚ
messagelogÚ
statuscoder   r   r[   ra   Ú	distutilsrm   ÚDistributionÚdistrÚpackagesÚcommand_optionsÚPythonPackager   ÚDiveDirÚhasattrry   Úautodoc)r(   Úsphinxrm   Úpkg_fixturer   r)   r+   r,   r   è   sZ    

 ÿ ÿ ÿ ÿ ÿ
 ÿ þÿ
zBaseSphinxTest.setUp)r1   r2   r3   r   r7   r+   r+   r)   r,   rb   æ   s   rb   c                
   @   s‚   e Zd Zdedddd�fdeddddd�fdedd	dd�fd
edddd�fdedddd�fgZdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚBuildSphinxTestZtrue_autodoc_capsTr   )ry   rˆ   Úhas_autodocZtrue_autodoc_caps_with_excludesrx   )ry   rˆ   rŒ   rw   Ztrue_autodoc_lowerÚtrueZfalse_autodocr   FZ
no_autodocc                 C   s†   t  | j¡}| ¡  |  tj d¡| jk¡ |  tj d¡| jk¡ | jrTt	| dƒr\| j
}n| j}|tj d¡ƒ |tj d¡ƒ d S )Núapi/autoindex.rstú api/fake_package.fake_module.rstrw   ú(api/fake_package.fake_private_module.rstú4api/fake_package.another_fake_module_for_testing.rst)r   ÚLocalBuildDocr‚   Úrunr]   r   r   r#   rŒ   r‡   ZassertFalse)r(   Ú	build_docZ	assertionr+   r+   r,   Útest_build_doc&  s2    ÿÿÿÿÿÿÿÿzBuildSphinxTest.test_build_docc                 C   sÞ   t  | j¡}| ¡  |  dt|jƒ¡ |  d|j¡ t  | j¡}d|_| ¡  |  d|j¡ t  | j¡}d|_| ¡  |  dt|jƒ¡ |  d|j¡ t  | j¡}d|_| ¡  |  d|j¡ |  d|j¡ |  d|j¡ d S )Né   Úhtmlr9   Úmanzhtml,man,doctestÚdoctest)r   r’   r‚   Úfinalize_optionsr.   ÚlenÚbuildersrP   ©r(   r”   r+   r+   r,   Útest_builders_config:  s&    z$BuildSphinxTest.test_builders_configc                 C   s|   | j rdd| jfi| jjd< d| jjd d< t | j¡}|  d|j¡ |  d|j¡ | 	¡  |  d|j¡ |  d|j¡ d S )	Nrz   r   rv   )úcommand lineúnon-existing-builderrr   Úbuilderr    r—   )
ry   rˆ   r‚   r„   r   r’   rQ   rœ   rP   rš   r�   r+   r+   r,   Útest_cmd_builder_overrideV  s     ÿz)BuildSphinxTest.test_cmd_builder_overridec                 C   sV   | j rdd| jfi| jjd< d| jjd d< t | j¡}| ¡  |  ddg|j¡ d S )	Nrz   r   rv   )rŸ   zbuilder1,builder2rr   r¡   Zbuilder1Zbuilder2)	ry   rˆ   r‚   r„   r   r’   rš   r.   rœ   r�   r+   r+   r,   Ú+test_cmd_builder_override_multiple_buildersj  s     ÿz;BuildSphinxTest.test_cmd_builder_override_multiple_buildersN)	r1   r2   r3   r$   r6   r•   rž   r¢   r£   r+   r+   r+   r,   r‹     s,   ÿÿÿÿÿÿôr‹   c                       s,   e Zd Z‡ fdd„Zdd„ Zdd„ Z‡  ZS )ÚAPIAutoDocTestc                    s"  t t| ƒ ¡  dd l}g |jj_d|jj_|  t	 
ddd„ ¡¡ |  t	 
ddd„ ¡¡ |  t	 
dt¡¡ |  t	 
dd	d„ ¡¡ |  t	 
d
dd„ ¡¡ ddlm} | ¡ | _d| j_dddgi| jjd< | jjd | _t	 ddddg¡}|  |¡ |  t |j¡¡ | jj di ¡| _d| jd< d S )Nr   rc   c                  _   s   d S rB   r+   rd   r+   r+   r,   rK   ˆ  rT   z&APIAutoDocTest.setUp.<locals>.<lambda>rg   c                  _   s   d S rB   r+   rd   r+   r+   r,   rK   Š  rT   rh   ri   c                  W   s   d S rB   r+   rj   r+   r+   r,   rK   Ž  rT   rk   c                  W   s   d S rB   r+   rj   r+   r+   r,   rK   �  rT   rl   rn   rp   re   rq   rr   ro   rs   rt   ru   rv   )r   r   rz   )r   r¤   r   r{   r|   r}   r~   r   r   r   r[   ra   r€   rm   r�   r‚   rƒ   r„   Zsphinx_optionsr…   r   r†   Ú
setdefaultÚpbr_options)r(   r‰   rm   rŠ   r)   r+   r,   r   |  sT    

 ÿ ÿ ÿ ÿ ÿ
 ÿ þÿ
zAPIAutoDocTest.setUpc                 C   sz   t  | j¡}| ¡  td| jƒ td| jjƒ |  tj	 
d¡¡ |  tj	 
d¡¡ |  tj	 
d¡¡ |  tj	 
d¡¡ d S )NúPBR OPTIONS:úDISTR OPTIONS:rŽ   r�   r�   r‘   )r   r’   r‚   r“   Úprintr¦   r„   r]   r   r   r#   r�   r+   r+   r,   Útest_default_api_build_dir   s     ÿÿÿÿz)APIAutoDocTest.test_default_api_build_dirc                 C   sr   d| j d< t | j¡}| ¡  td| j ƒ td| jjƒ |  tj	 
d¡¡ |  tj	 
d¡¡ |  tj	 
d¡¡ d S )N)Nzcontributor/apiZapi_doc_dirr§   r¨   zcontributor/api/autoindex.rstz,contributor/api/fake_package.fake_module.rstz4contributor/api/fake_package.fake_private_module.rst)r¦   r   r’   r‚   r“   r©   r„   r]   r   r   r#   r�   r+   r+   r,   Útest_different_api_build_dir°  s    

ÿÿÿz+APIAutoDocTest.test_different_api_build_dir)r1   r2   r3   r   rª   r«   r7   r+   r+   r)   r,   r¤   z  s   $r¤   )Ú
__future__r   r   Ú	cStringIOÚioÚStringIOrH   ÚImportErrorr   rv   r   r   r   Z	pbr.testsr   ZBaseTestCaser   r`   r@   r!   r;   r_   rE   Úobjectra   rb   r‹   r¤   r+   r+   r+   r,   Ú<module>   s.   
@

þ[.f