U
    jPŒ^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__© ú6/usr/lib/python3/dist-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!   )ÚlineZ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   ÿrC   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   rD   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)ÚBytesIOrE   Ú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 rA   )r   r   r   )r   )Úexist_filesr+   r,   rJ   Ì   ó    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
rK   r   rL   )r"   r    r   r   r!   r   r   r   ÚMonkeyPatchrM   Úwriter   r5   rN   Ú
assertTrue)r(   Z
author_oldZ
author_newZ	co_authorZco_author_byZgit_log_cmdZgit_co_log_cmdZgit_top_levelrX   Zauth_fhZauthorsr+   )rW   rR   r,   Útest_generate_authors·   sN    ÿÿ
   ýÿ
þþÿz!GitLogsTest.test_generate_authors)
r1   r2   r3   Ú_old_git_changelog_contentÚ_changelog_contentr6   r   rQ   r]   r7   r+   r+   r)   r,   rD   ‡   s   

þ
rD   c                   @   s   e Zd ZdgZdS )Ú_SphinxConfigZfooN)r1   r2   r3   Z	man_pagesr+   r+   r+   r,   r`   â   s   r`   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 rA   r+   ©ÚaÚkwr+   r+   r,   rJ   ô   rS   z&BaseSphinxTest.setUp.<locals>.<lambda>úsphinx.application.Sphinx.buildc                  _   s   d S rA   r+   rc   r+   r+   r,   rJ   ö   rS   ú sphinx.application.Sphinx.configú sphinx.config.Config.init_valuesc                  W   s   d S rA   r+   ©rd   r+   r+   r,   rJ   ú   rS   úsphinx.config.Config.__init__c                  W   s   d S rA   r+   ri   r+   r+   r,   rJ   ü   rS   ©Údist©Úfake_packageÚ
source_dirrd   Ú.Úbuild_sphinxrn   ©zfake_module.pyrS   ©z"another_fake_module_for_testing.pyrS   ©zfake_private_module.pyrS   Ú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   ra   r   Úsphinx.applicationÚapplicationÚSphinxÚ
messagelogÚ
statuscoder   r   rZ   r`   Ú	distutilsrl   ÚDistributionÚdistrÚpackagesÚcommand_optionsÚPythonPackager   ÚDiveDirÚhasattrrx   Úautodoc)r(   Úsphinxrl   Úpkg_fixturer   r)   r+   r,   r   è   sZ    

 ÿ ÿ ÿ ÿ ÿ
 ÿ þÿ
zBaseSphinxTest.setUp)r1   r2   r3   r   r7   r+   r+   r)   r,   ra   æ   s   ra   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   )rx   r‡   Úhas_autodocZtrue_autodoc_caps_with_excludesrw   )rx   r‡   r‹   rv   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.rstrv   ú(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   Zmanzhtml,man,doctestZdoctest)r   r‘   r   Úfinalize_optionsr.   ÚlenÚbuildersrO   ©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 )	Nry   r   ru   )úcommand lineúnon-existing-builderrq   Úbuilderr   r–   )
rx   r‡   r   rƒ   r   r‘   rP   r™   rO   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 )	Nry   r   ru   )rœ   zbuilder1,builder2rq   rž   Zbuilder1Zbuilder2)	rx   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   rb   c                  _   s   d S rA   r+   rc   r+   r+   r,   rJ   ˆ  rS   z&APIAutoDocTest.setUp.<locals>.<lambda>rf   c                  _   s   d S rA   r+   rc   r+   r+   r,   rJ   Š  rS   rg   rh   c                  W   s   d S rA   r+   ri   r+   r+   r,   rJ   Ž  rS   rj   c                  W   s   d S rA   r+   ri   r+   r+   r,   rJ     rS   rk   rm   ro   rd   rp   rq   rn   rr   rs   rt   ru   )r   r   ry   )r   r¡   r   rz   r{   r|   r}   r~   r   r   rZ   r`   r   rl   r€   r   r‚   rƒ   Zsphinx_optionsr„   r   r…   Ú
setdefaultÚpbr_options)r(   rˆ   rl   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¡   )Z
__future__r   r   Ú	cStringIOÚioÚStringIOrG   ÚImportErrorr   ru   r   r   r   Z	pbr.testsr   ZBaseTestCaser   r_   r?   r!   r;   r^   rD   Úobjectr`   ra   rŠ   r¡   r+   r+   r+   r,   Ú<module>   s.   
@

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