
    cH                        d dl mZ d dlZ	 d dlZej
                  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  G d dej                        Zd	Zd
 Zdj'                  d ej)                  d      D              Z G d dej                        Z G d de      Z G d dej                        Z G d de      Z G d dej                        Zy# e$ r d dlZej                  ZY w xY w)    )print_functionN)git)options)	packaging)basec                       e Zd Zd eddddej
                  d      fd edd	ddej
                  d      fd
 edd	ddej
                  d      fd eddddej
                  d      fd eddddej                  d      fd edd	ddej                  d      fd edd	ddej                  d      fd eddddej                  d      fgZ fdZd Z	 xZ
S )SkipFileWriteschangelog_option_trueskip_changelogTrueSKIP_WRITE_GIT_CHANGELOGN	ChangeLog)
option_keyoption_valueenv_key	env_valuepkg_funcfilenamechangelog_option_falseFalsechangelog_env_truechangelog_both_trueauthors_option_trueskip_authorsSKIP_GENERATE_AUTHORSAUTHORSauthors_option_falseauthors_env_trueauthors_both_truec                 X   t         t        |           | j                  t	        j
                               j                  | _        t        j                  j                  t        j                  j                        | _        t        j                  j                  | j                  d      | _        t        j                  j                  | j                        s| j                  d| j                  z         y t        j                  j                  | j                  | j                         | _        t#               | _        | j&                  %d| j(                  f| j$                  | j&                  <   | j                  t	        j*                  | j,                  | j.                               y )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existsskipTestr   dictoption_dictr   r   EnvironmentVariabler   r   self	__class__s    6/usr/lib/python3/dist-packages/pbr/tests/test_setup.pyr$   zSkipFileWrites.setUpI   s   nd)+)9)9);<AA7ww||DMM6:ww~~dll+MMF LL) *T^^T]]C6??&1<151B1B1DDT__-((t~~F	H    c                 L   | j                  | j                  | j                  | j                         | j	                  t
        j                  j                  | j                         | j                  j                         t        j                  v xs | j                  d u       y )N)r/   dest_dirr3   )r   r/   r)   r3   assertEqualr*   r(   r0   r   r   lowerr   TRUE_VALUESr   )r6   s    r8   	test_skipzSkipFileWrites.test_skipZ   s~    dll#~~"&"2"2 	 	4 	t}}--$$&'*=*== (^^4'	*r9   )__name__
__module____qualname__r2   r   write_git_changeloggenerate_authors	scenariosr$   r?   __classcell__r7   s   @r8   r	   r	   $   sZ    
!	)0D..
F	G 
"	)0D..
F	G 
	)0F..
F	G 
	)0F..
F	G 
	f-++i
A	B 
 	g-++i
A	B 
	g-++i
A	B 
	f-++i
A	B;!IFH"*r9   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                     | j                         s| S | j                  d      \  }}}|j                  dd      }dj                  |||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msgrefnames       r8   _make_old_git_changelog_formatrR   x   sM     ::<

6*Cgoogr*G;;S'*++r9   
c              #   2   K   | ]  }t        |        y wN)rR   ).0rN   s     r8   	<genexpr>rW      s      '0 #4('0s   c                   B     e Zd ZddeifddeifgZ fdZd Zd Z xZ	S )GitLogsTestzpre1.8.3	changelogz	post1.8.3c                    t         t        |           | j                  t	        j
                               j                  | _        t        j                  j                  t        j                  j                        | _        t        j                  j                  | j                  d      | _        | j                  t	        j                  d             | j                  t	        j                  d             y )Nr!   r   r   )r#   rY   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r4   r5   s    r8   r$   zGitLogsTest.setUp   s    k4&()9)9);<AA7ww||DMM6:(()@A	C(()CD	Fr9   c                      j                  t        j                   fd             t        j                   j
                   j                         t        t        j                  j                   j                  d      d      5 }|j                         } j                  d|        j                  d|        j                  d|        j                  d|        j                  d	|        j                  d
|        j                  d|        j                  d|        j                  d|        j                  d|        j                  d|        j                  d|        j                  d|        j                  d|        j                  d|        j                  d|        j                  d|        j                  d|       d d d        y # 1 sw Y   y xY w)Nc                 P    dt        j                  j                  d            iS )Nstdoutzutf-8)BytesIOrZ   encode)_r6   s    r8   <lambda>z6GitLogsTest.test_write_git_changelog.<locals>.<lambda>   s#    gdnn33G<=6
 r9   r/   r;   r   rz2013.2z0.5.17z------zRefactor hooks filez+Bug fix: create\_stack() fails when waitingzRefactor hooks file.182feb3zreview/monty_taylor/27519z0.5.13z0.6.712z(evil)zev()ilzev(ilzev)ilze(vi)lzMerge "z1\_foo.1)r%   r&   	FakePopenr   rC   r/   r)   openr*   r(   r.   readassertInassertNotIn)r6   ch_fhchangelog_contentss   `  r8   test_write_git_changelogz$GitLogsTest.test_write_git_changelog   s   ** ,
  	 	)-	9 "'',,t~~{;SA 	>U!&MM($67MM($67MM($67MM/1CDMM>"$ 35GHY(:;8:LMX'9:W&89T#56X'9:X'9:W&89W&89X'9:Y(:;[*<=+	> 	> 	>s   EG&&G/c                    d}d}d}d|z   }d| j                   z  }d| j                   z  }d}|||||| j                  i| j                   t        j                  j	                  | j
                  d      g| j                  t        j                  d	fd
             fd}| j                  t        j                  d|             t        t        j                  j	                  | j
                  d      d      5 }	|	j                  d|z         d d d        t        j                  | j                   | j
                         t        t        j                  j	                  | j
                  d      d      5 }	|	j                         }
| j                  ||
       | j                  ||
       | j                  ||
       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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                 F    t         j                  j                  |       v S rU   )r*   r(   r+   )r(   exist_filess    r8   rb   z3GitLogsTest.test_generate_authors.<locals>.<lambda>   s    .+= r9   c                 ,    dj                  |          S )N )r.   )cmdkwargscmd_maps     r8   _fake_run_shell_commandzBGitLogsTest.test_generate_authors.<locals>._fake_run_shell_command   s    388C=))r9   zpbr.git._run_shell_commandwz%s
rc   r   rd   )r/   r-   r*   r(   r.   r)   r%   r&   MonkeyPatchrh   writer   rD   ri   rj   )r6   
author_old
author_new	co_authorco_author_bygit_log_cmdgit_co_log_cmdgit_top_levelrw   auth_fhauthorsrv   rq   s              @@r8   test_generate_authorsz!GitLogsTest.test_generate_authors   s   /
/
,	*Y6 8ll 	 14<<?7L4==
 ||ww||DNNLAC,,=? 	@	* 	,,(#% 	& "'',,t~~|<cB 	/gMM&:-.	/ 	T\\&*nn	6 "'',,t~~y93? 	.7llnGMM*g.MM*g.MM)W-		. 	.	/ 	/	. 	.s   <G8AGGG)
r@   rA   rB   _old_git_changelog_content_changelog_contentrE   r$   rn   r   rF   rG   s   @r8   rY   rY      s8     
k#=>?	{$678I
F>>(.r9   rY   c                       e Zd ZdgZy)_SphinxConfigfooN)r@   rA   rB   	man_pages r9   r8   r   r      s	    Ir9   r   c                        e Zd Z fdZ xZS )BaseSphinxTestc                 j   t         t        |           dd l}g |j                  j
                  _        d|j                  j
                  _        | j                  t        j                  dd              | j                  t        j                  dd              | j                  t        j                  dt                     | j                  t        j                  dd              | j                  t        j                  d	d
              ddlm} |j                         | _        d| j                  _        dddgi| j                  j"                  d<   t        j$                  dg d      }| j                  |       | j                  t'        j(                  |j&                               i | j                  j"                  d<   t+        | d      rd| j                  j"                  d   d<   t+        | d      r8| j,                  r+| j                  j"                  d   }d| j.                  f|d<   y y y )Nr   "sphinx.application.Sphinx.__init__c                       y rU   r   akws     r8   rb   z&BaseSphinxTest.setUp.<locals>.<lambda>       r9   sphinx.application.Sphinx.buildc                       y rU   r   r   s     r8   rb   z&BaseSphinxTest.setUp.<locals>.<lambda>   r   r9    sphinx.application.Sphinx.config sphinx.config.Config.init_valuesc                       y rU   r   r   s    r8   rb   z&BaseSphinxTest.setUp.<locals>.<lambda>   r   r9   sphinx.config.Config.__init__c                       y rU   r   r   s    r8   rb   z&BaseSphinxTest.setUp.<locals>.<lambda>   r   r9   distfake_package
source_dirr   .build_sphinxr   )zfake_module.pyr9   )z"another_fake_module_for_testing.pyr9   )zfake_private_module.pyr9   pbrexcludes)r"   Xfake_package.fake_private_module
fake_package.another_fake_*
fake_package.unknown_moduleautodoc_exclude_moduleshas_optr"   autodoc_index_modules)r#   r   r$   sphinx.applicationapplicationSphinx
messagelog
statuscoder%   r&   ry   r   	distutilsr   Distributiondistrpackagescommand_optionsPythonPackager   DiveDirhasattrr   autodoc)r6   sphinxr   pkg_fixturer   r7   s        r8   r$   zBaseSphinxTest.setUp   s   nd)+ 	"/1!!,/0!!,,,02GI 	J,,-/DF 	G,,.? 	@,,.A 	B,,+_> 	?"&&(
/

3*6&

"">2,, >? 	$[%5%567,.

""5)4$L/DJJ&&u-.GH
 4#jj007G0;T\\/JG+, )5#r9   )r@   rA   rB   r$   rF   rG   s   @r8   r   r      s    )K )Kr9   r   c            
           e Zd Zd eddd      fd edddd      fd edd	d      fd
 eddd      fd eddd      fgZd Zd Zd Zd Zy)BuildSphinxTesttrue_autodoc_capsTr   )r   r   has_autodoctrue_autodoc_caps_with_excludesr   )r   r   r   r   true_autodoc_lowertruefalse_autodocr   F
no_autodocc                 D   t        j                  | j                        }|j                          | j	                  t
        j                  j                  d      | j                  k(         | j	                  t
        j                  j                  d      | j                  k(         | j                  rt        | d      r| j                  }n| j                  } |t
        j                  j                  d              |t
        j                  j                  d             y )Napi/autoindex.rst api/fake_package.fake_module.rstr   (api/fake_package.fake_private_module.rst4api/fake_package.another_fake_module_for_testing.rst)r   LocalBuildDocr   run
assertTruer*   r(   r0   r   r   assertFalse)r6   	build_doc	assertions      r8   test_build_doczBuildSphinxTest.test_build_doc&  s    ++DJJ7	GGNN./43C3CC	EGGNN247;7G7GH	I 74#<((IIGGNN:<	= 	GGNNFH	Ir9   c                    t        j                  | j                        }|j                          | j	                  dt        |j                               | j                  d|j                         t        j                  | j                        }d|_        |j                          | j	                  d|j                         t        j                  | j                        }d|_        |j                          | j	                  dt        |j                               | j                  d|j                         t        j                  | j                        }d|_        |j                          | j                  d|j                         | j                  d|j                         | j                  d|j                         y )N   htmlrJ   manzhtml,man,doctestdoctest)r   r   r   finalize_optionsr<   lenbuildersrj   r6   r   s     r8   test_builders_configz$BuildSphinxTest.test_builders_config:  sJ   ++DJJ7	""$C	 2 234fi001++DJJ7		""$Y//0++DJJ7	"	""$C	 2 234eY//0++DJJ7	/	""$fi001eY//0i!3!34r9   c                    | j                   r'dd| j                  fi| j                  j                  d<   d| j                  j                  d   d<   t	        j
                  | j                        }| j                  d|j                         | j                  d|j                         |j                          | j                  d|j                         | j                  d|j                         y )	Nr   r"   r   )command linenon-existing-builderr   builderr   r   )
r   r   r   r   r   r   rk   r   rj   r   r   s     r8   test_cmd_builder_overridez)BuildSphinxTest.test_cmd_builder_overrideV  s    <<'+t||)D1DJJ&&u-A4

"">29= ++DJJ7	/1C1CDfi001 	""$,i.@.@A!3!34r9   c                 <   | j                   r'dd| j                  fi| j                  j                  d<   d| j                  j                  d   d<   t	        j
                  | j                        }|j                          | j                  ddg|j                         y )	Nr   r"   r   )r   zbuilder1,builder2r   r   builder1builder2)	r   r   r   r   r   r   r   r<   r   r   s     r8   +test_cmd_builder_override_multiple_buildersz;BuildSphinxTest.test_cmd_builder_override_multiple_buildersj  s    <<'+t||)D1DJJ&&u-A1

"">29= ++DJJ7	""$*j193E3EFr9   N)	r@   rA   rB   r2   rE   r   r   r   r   r   r9   r8   r   r     s     
	dF	=	?	*	dF,
-	.
 
	dF	=	?		dG	?	A		eW%	@	BI I(585(Gr9   r   c                   *     e Zd Z fdZd Zd Z xZS )APIAutoDocTestc                    t         t        |           dd l}g |j                  j
                  _        d|j                  j
                  _        | j                  t        j                  dd              | j                  t        j                  dd              | j                  t        j                  dt                     | j                  t        j                  dd              | j                  t        j                  d	d
              ddlm} |j                         | _        d| j                  _        dddgi| j                  j"                  d<   | j                  j"                  d   | _        t        j&                  dg d      }| j                  |       | j                  t)        j*                  |j(                               | j                  j"                  j-                  di       | _        d| j.                  d<   y )Nr   r   c                       y rU   r   r   s     r8   rb   z&APIAutoDocTest.setUp.<locals>.<lambda>  r   r9   r   c                       y rU   r   r   s     r8   rb   z&APIAutoDocTest.setUp.<locals>.<lambda>  r   r9   r   r   c                       y rU   r   r   s    r8   rb   z&APIAutoDocTest.setUp.<locals>.<lambda>  r   r9   r   c                       y rU   r   r   s    r8   rb   z&APIAutoDocTest.setUp.<locals>.<lambda>  r   r9   r   r   r   r   r   r   r   r   r   )r"   r   r   )r#   r   r$   r   r   r   r   r   r%   r&   ry   r   r   r   r   r   r   r   sphinx_optionsr   r   r   
setdefaultpbr_options)r6   r   r   r   r7   s       r8   r$   zAPIAutoDocTest.setUp|  s   nd)+ 	"/1!!,/0!!,,,02GI 	J,,-/DF 	G,,.? 	@,,.A 	B,,+_> 	?"&&(
/

3*6&

"">2"jj88H,, >? 	$[%5%567::55@@K4I01r9   c                 >   t        j                  | j                        }|j                          t	        d| j
                         t	        d| j                  j                         | j                  t        j                  j                  d             | j                  t        j                  j                  d             | j                  t        j                  j                  d             | j                  t        j                  j                  d             y )NPBR OPTIONS:DISTR OPTIONS:r   r   r   r   )r   r   r   r   printr   r   r   r*   r(   r0   r   s     r8   test_default_api_build_dirz)APIAutoDocTest.test_default_api_build_dir  s    ++DJJ7	nd../

 : :;':;<'IJKGGNN:<	= 	GGNNFH	Ir9   c                     d| j                   d<   t        j                  | j                        }|j	                          t        d| j                          t        d| j                  j                         | j                  t        j                  j                  d             | j                  t        j                  j                  d             | j                  t        j                  j                  d             y )N)Nzcontributor/api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(   r0   r   s     r8   test_different_api_build_dirz+APIAutoDocTest.test_different_api_build_dir  s     +D'++DJJ7	nd../

 : :;'FGHGGNNIJ	LGGNNFH	Ir9   )r@   rA   rB   r$   r   r   rF   rG   s   @r8   r   r   z  s    "JHI Ir9   r   )
__future__r   r*   	cStringIOioStringIOr_   ImportErrorr&   r   r   r   r   	pbr.testsr   BaseTestCaser	   r   rR   r.   rL   r   rY   objectr   r   r   r   r   r9   r8   <module>r      s   " & 	kkG
     =*T&& =*@ (, "YY '0"((.'0 0 
X.$## X.vF +KT&& +K\cGn cGLEIT&& EIE  jjGs   C C'&C'