ó
X¾÷Xc           @  sÅ  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z y d  d l Z e j Z	 Wn& e
 k
 r d  d l Z e j	 Z	 n Xd  d l Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d e j f d „  ƒ  YZ d	 Z d
 „  Z d j d „  e j d ƒ Dƒ ƒ Z d e j f d „  ƒ  YZ d e f d „  ƒ  YZ d e j f d „  ƒ  YZ d e f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ  d S(   iÿÿÿÿ(   t   print_functionN(   t   git(   t   options(   t	   packaging(   t   baset   SkipFileWritesc           B  s¸  e  Z d  e d d d d d d d d d e j d	 d
 ƒ f d e d d d d d d d d d e j d	 d
 ƒ f d e d d d d d d d d d e j d	 d
 ƒ f d e d d d d d d d d d e j d	 d
 ƒ f d e d d d d d d d d d e j d	 d ƒ f d e d d d d d d d d d e j d	 d ƒ f d e d d d d d d d d d e j d	 d ƒ f d e d d d d d d d d d e j d	 d ƒ f g Z d „  Z d „  Z	 RS(   t   changelog_option_truet
   option_keyt   skip_changelogt   option_valuet   Truet   env_keyt   SKIP_WRITE_GIT_CHANGELOGt	   env_valuet   pkg_funct   filenamet	   ChangeLogt   changelog_option_falset   Falset   changelog_env_truet   changelog_both_truet   authors_option_truet   skip_authorst   SKIP_GENERATE_AUTHORSt   AUTHORSt   authors_option_falset   authors_env_truet   authors_both_truec         C  s	  t  t |  ƒ j ƒ  |  j t j ƒ  ƒ j |  _ t j j	 t j j
 ƒ |  _ t j j |  j d ƒ |  _ t j j |  j ƒ s‘ |  j d |  j ƒ d  St j j |  j |  j ƒ |  _ t ƒ  |  _ |  j d  k	 ræ d |  j f |  j |  j <n  |  j t j |  j |  j ƒ ƒ d  S(   Ns   .gits*   %s is missing; skipping git-related checkss	   setup.cfg(   t   superR   t   setUpt
   useFixturet   fixturest   TempDirt   patht	   temp_patht   ost   abspatht   curdirt   root_dirt   joint   git_dirt   existst   skipTestR   t   dictt   option_dictR   t   NoneR	   t   EnvironmentVariableR   R   (   t   self(    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyR   L   s    	c         C  sj   |  j  d |  j d |  j d |  j ƒ |  j t j j |  j ƒ |  j	 j
 ƒ  t j k pb |  j d  k	 ƒ d  S(   NR(   t   dest_dirR,   (   R   R(   R"   R,   t   assertEqualR#   R!   R)   R   R	   t   lowerR   t   TRUE_VALUESR   R-   (   R/   (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt	   test_skip]   s    	
N(
   t   __name__t
   __module__R+   R-   R   t   write_git_changelogt   generate_authorst	   scenariosR   R4   (    (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyR   '   sD   	t­  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  sP   |  j  ƒ  s |  S|  j d ƒ \ } } } | j d d ƒ } d j | | | f ƒ S(   s=   Convert post-1.8.1 git log format to pre-1.8.1 git log formatt    s   tag: t    (   t   stript   splitt   replaceR'   (   t   linet   shat   msgt   refname(    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt   _make_old_git_changelog_formatz   s
    s   
c         c  s   |  ] } t  | ƒ Vq d  S(   N(   RD   (   t   .0R@   (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pys	   <genexpr>„   s   t   GitLogsTestc           B  sI   e  Z d  i e d 6f d i e d 6f g Z d „  Z d „  Z d „  Z RS(   s   pre1.8.3t	   changelogs	   post1.8.3c         C  s”   t  t |  ƒ j ƒ  |  j t j ƒ  ƒ j |  _ t j j	 t j j
 ƒ |  _ t j j |  j d ƒ |  _ |  j t j d ƒ ƒ |  j t j d ƒ ƒ d  S(   Ns   .gitR   R   (   R   RF   R   R   R   R    R!   R"   R#   R$   R%   R&   R'   R(   R.   (   R/   (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyR      s    c           s•  ˆ  j  t j ‡  f d †  ƒ ƒ t j d ˆ  j d ˆ  j ƒ t t j	 j
 ˆ  j d ƒ d ƒ 3} | 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 | ƒ Wd  QXd  S(   Nc           s   i t  ˆ  j j d ƒ ƒ d 6S(   Ns   utf-8t   stdout(   t   BytesIORG   t   encode(   t   _(   R/   (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt   <lambda>š   s   R(   R0   R   t   rs   2013.2s   0.5.17s   ------s   Refactor hooks files*   Bug fix: create_stack() fails when waitings   Refactor hooks file.t   182feb3s   review/monty_taylor/27519s   0.5.13s   0.6.7t   12s   (evil)s   ev()ils   ev(ils   ev)ils   e(vi)ls   Merge "s   1_foo.1(   R   R   t	   FakePopenR   R7   R(   R"   t   openR#   R!   R'   t   readt   assertInt   assertNotIn(   R/   t   ch_fht   changelog_contents(    (   R/   s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt   test_write_git_changelog™   s2    
$c           s  d } d } d } d | } d |  j  } d |  j  } d } i | | 6| | 6|  j | 6‰  |  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 ƒ  }	 |	 j
 d | ƒ Wd  QXt j d |  j  d |  j ƒ t	 t j j |  j d ƒ d ƒ L }	 |	 j ƒ  }
 |  j | |
 k ƒ |  j | |
 k ƒ |  j | |
 k ƒ Wd  QXd  S(   Nu   Foo Foo <email@foo.com>u   Bar Bar <email@bar.com>u   Foo Bar <foo@bar.com>u   Co-authored-by: s)   git --git-dir=%s log --format=%%aN <%%aE>s   git --git-dir=%s logs   git rev-parse --show-toplevels
   AUTHORS.ins   os.path.existsc           s   t  j j |  ƒ ˆ  k S(   N(   R#   R!   R$   (   R!   (   t   exist_files(    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyRL   Í   s    c           s   ˆ  d j  |  ƒ S(   Nt    (   R'   (   t   cmdt   kwargs(   t   cmd_map(    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt   _fake_run_shell_commandÏ   s    s   pbr.git._run_shell_commandt   ws   %s
R(   R0   R   RM   (   R(   R&   R#   R!   R'   R"   R   R   t   MonkeyPatchRQ   t   writeR   R8   RR   t
   assertTrue(   R/   t
   author_oldt
   author_newt	   co_authort   co_author_byt   git_log_cmdt   git_co_log_cmdt   git_top_levelR]   t   auth_fht   authors(    (   R\   RX   s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt   test_generate_authors¸   s<    


$
$(   R5   R6   t   _old_git_changelog_contentt   _changelog_contentR9   R   RW   Rk   (    (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyRF   ˆ   s
   	
	t   _SphinxConfigc           B  s   e  Z d  g Z RS(   t   foo(   R5   R6   t	   man_pages(    (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyRn   ã   s   t   BaseSphinxTestc           B  s   e  Z d  „  Z RS(   c         C  s  t  t |  ƒ 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
 _ i d d g d 6|  j
 j d <t j d d d d g ƒ } |  j | ƒ |  j t j | j ƒ ƒ i  |  j
 j d <t |  d ƒ r[d  |  j
 j d d <n  t |  d ƒ r™|  j r™|  j
 j d } d |  j f | d <n  d  S(!   Ns"   sphinx.application.Sphinx.__init__c          _  s   d  S(   N(   R-   (   t   at   kw(    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyRL   í   s    s   sphinx.application.Sphinx.buildc          _  s   d  S(   N(   R-   (   Rr   Rs   (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyRL   ï   s    s    sphinx.application.Sphinx.configs    sphinx.config.Config.init_valuesc          W  s   d  S(   N(   R-   (   Rr   (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyRL   ó   s    s   sphinx.config.Config.__init__c          W  s   d  S(   N(   R-   (   Rr   (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyRL   õ   s    iÿÿÿÿ(   t   distt   fake_packageRr   t   .t
   source_dirt   build_sphinxs   fake_module.pyR<   s"   another_fake_module_for_testing.pys   fake_private_module.pyt   pbrt   excludess	   setup.cfgsX   fake_package.fake_private_module
fake_package.another_fake_*
fake_package.unknown_modulet   autodoc_exclude_modulest   has_optt   autodoc_index_modules(   Ru   (   s   fake_module.pyR<   (   s"   another_fake_module_for_testing.pyR<   (   s   fake_private_module.pyR<   (   s	   setup.cfgsX   fake_package.fake_private_module
fake_package.another_fake_*
fake_package.unknown_module(   R   Rq   R   R   R   R_   Rn   t	   distutilsRt   t   Distributiont   distrt   packagest   command_optionst   PythonPackageR   t   DiveDirt   hasattrR|   t   autodoc(   R/   Rt   t   pkg_fixtureR   (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyR   é   s:     (   R5   R6   R   (    (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyRq   ç   s   t   BuildSphinxTestc           B  sÎ   e  Z d  e d e d d d e ƒ f d e d e d d d e d d ƒ f d e d e d d	 d e ƒ f d
 e d e d d d e ƒ f d e d e d d d e ƒ f g Z d „  Z d „  Z d „  Z d „  Z	 RS(   t   true_autodoc_capsR|   R†   R
   t   has_autodoct   true_autodoc_caps_with_excludesRz   sX   fake_package.fake_private_module
fake_package.another_fake_*
fake_package.unknown_modulet   true_autodoc_lowert   truet   false_autodocR   t
   no_autodocc         C  s¾   t  j |  j ƒ } | j ƒ  |  j t j j d ƒ |  j k ƒ |  j t j j d ƒ |  j k ƒ |  j sy t	 |  d ƒ r… |  j
 } n	 |  j } | t j j d ƒ ƒ | t j j d ƒ ƒ d  S(   Ns   api/autoindex.rsts    api/fake_package.fake_module.rstRz   s(   api/fake_package.fake_private_module.rsts4   api/fake_package.another_fake_module_for_testing.rst(   R   t   LocalBuildDocR€   t   runRa   R#   R!   R)   RŠ   R…   t   assertFalse(   R/   t	   build_doct	   assertion(    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt   test_build_doc  s     
			
	c         C  sF  t  j |  j ƒ } | j ƒ  |  j d t | j ƒ ƒ |  j d | 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 ƒ d  S(   Ni   t   htmlt   manR<   i   s   html,man,doctestt   doctest(   R   R   R€   t   finalize_optionsR1   t   lent   buildersRS   (   R/   R“   (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt   test_builders_config3  s(    
	
	
	
c         C  s¬   |  j  r, i d |  j f d 6|  j j d <n  d	 |  j j d d <t j |  j ƒ } |  j d | j ƒ |  j d | j ƒ | j	 ƒ  |  j d | j ƒ |  j d | j ƒ d  S(
   Ns	   setup.cfgR}   Ry   s   command lines   non-existing-builderRx   t   builderR–   (   s   command lines   non-existing-builder(
   R|   R†   R€   R‚   R   R   RT   R›   RS   R™   (   R/   R“   (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt   test_cmd_builder_overrideP  s    	 
c         C  sy   |  j  r, i d |  j f d 6|  j j d <n  d
 |  j j d d <t j |  j ƒ } | j ƒ  |  j d d	 g | j ƒ d  S(   Ns	   setup.cfgR}   Ry   s   command lines   builder1,builder2Rx   R   t   builder1t   builder2(   s   command lines   builder1,builder2(	   R|   R†   R€   R‚   R   R   R™   R1   R›   (   R/   R“   (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt+   test_cmd_builder_override_multiple_buildersd  s    	 
(
   R5   R6   R+   R
   R   R9   R•   Rœ   Rž   R¡   (    (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyRˆ     s   	!			t   ParseRequirementsTestScenariosc           B  s8  e  Z d  i e d 6d g d 6f d i e d 6d g d 6f g Z d i d d 6d d g d 6f d	 i d
 d 6d d g d 6f d i d d 6g  d 6f g Z e e j d i d d 6f d i d d 6f d i d d 6f g e ƒ Z e e j d i d d 6d d 6f g d i e d 6f d i e d 6f g e ƒ Z d „  Z RS(   s   non-versionedt	   versionedt   bart   expecteds
   bar>=1.2.3t   normals   foo
bart   urlRo   t   normal_with_commentss-   # this is a comment
foo
# and another one
bart   removes_index_liness	   -f foobart   ssh_egg_urls!   git+ssh://foo.com/zipball#egg=bart   git_https_egg_urls#   git+https://foo.com/zipball#egg=bart   http_egg_urls   https://foo.com/zipball#egg=bart   git_egg_urls   git://foo.com/zipball#egg=bart   names   non-editablet   editablec         C  s­   t  j ƒ  } |  j } t |  d ƒ r: |  j r: d | } n  t |  d ƒ r_ |  j r_ d | } n  t | j d ƒ  } | j | ƒ Wd  QX|  j	 |  j
 t j | j g ƒ ƒ d  S(   NR¯   s   -e %sR£   s   %s-1.2.3R^   (   t   tempfilet   NamedTemporaryFileR§   R…   R¯   R£   RQ   R®   R`   R1   R¥   R   t   parse_requirements(   R/   t   tmp_filet
   req_stringt   fh(    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt   test_parse_requirements“  s    	(	   R5   R6   R   R
   t   versioned_scenariosR9   t   testscenariost   multiply_scenariosR¶   (    (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyR¢   t  s&    	
	
t   ParseRequirementsTestc           B  s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C  s8   t  t |  ƒ j ƒ  t j d d d d ƒ \ } |  _ d  S(   Nt   prefixt	   openstackt   suffixs   .setup(   R   Rº   R   R°   t   mkstempR³   (   R/   t   fd(    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyR   ¢  s    c         C  sd   t  |  j d ƒ  } | j d ƒ Wd  QX|  j t j d |  j ƒ ƒ |  j d d g t j ƒ  ƒ d  S(   NR^   s   foo
bart   PBR_REQUIREMENTS_FILESRo   R¤   (	   RQ   R³   R`   R   R   R.   R1   R   R²   (   R/   Rµ   (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt)   test_parse_requirements_override_with_env§  s    	c         C  sh   t  |  j d ƒ  } | j d ƒ Wd  QX|  j t j d d |  j ƒ ƒ |  j d d g t j ƒ  ƒ d  S(   NR^   s   foo
barRÀ   s   no-such-file,Ro   R¤   (	   RQ   R³   R`   R   R   R.   R1   R   R²   (   R/   Rµ   (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt8   test_parse_requirements_override_with_env_multiple_files°  s    	c         C  s#   t  j g  ƒ } |  j g  | ƒ d  S(   N(   R   t   get_reqs_from_filesR1   (   R/   t   actual(    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt$   test_get_requirement_from_file_empty¹  s    c         C  sP   t  d t j d d ƒ  } | j d ƒ Wd  QX|  j d d g t j ƒ  ƒ d  S(   Ns   requirements-py%d.txti    R^   s3   # this is a comment
foobar
# and another one
foobazt   foobart   foobaz(   RQ   t   syst   version_infoR`   R1   R   R²   (   R/   Rµ   (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt&   test_parse_requirements_python_version½  s
    c         C  su   t  d d ƒ  } | j d ƒ Wd  QXt  d t j d d ƒ  } | j d ƒ Wd  QX|  j d d g t j ƒ  ƒ d  S(	   Ns   requirements-py1.txtR^   t   thisisatraps   requirements-py%d.txti    s3   # this is a comment
foobar
# and another one
foobazRÆ   RÇ   (   RQ   R`   RÈ   RÉ   R1   R   R²   (   R/   Rµ   (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt,   test_parse_requirements_right_python_versionÄ  s    (   R5   R6   R   RÁ   RÂ   RÅ   RÊ   RÌ   (    (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyRº      s   							t   ParseDependencyLinksTestc           B  s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C  s8   t  t |  ƒ j ƒ  t j d d d d ƒ \ } |  _ d  S(   NR»   R¼   R½   s   .setup(   R   RÍ   R   R°   R¾   R³   (   R/   R¿   (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyR   Ð  s    c         C  sN   t  |  j d ƒ  } | j d ƒ Wd  QX|  j d g t j |  j g ƒ ƒ d  S(   NR^   s   http://test.com
s   http://test.com(   RQ   R³   R`   R1   R   t   parse_dependency_links(   R/   Rµ   (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt   test_parse_dependency_normalÕ  s
    c         C  sN   t  |  j d ƒ  } | j d ƒ Wd  QX|  j d g t j |  j g ƒ ƒ d  S(   NR^   s    -e git://foo.com/zipball#egg=bars   git://foo.com/zipball#egg=bar(   RQ   R³   R`   R1   R   RÎ   (   R/   Rµ   (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt&   test_parse_dependency_with_git_egg_urlÜ  s
    (   R5   R6   R   RÏ   RÐ   (    (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyRÍ   Î  s   		(!   t
   __future__R    R#   RÈ   R°   R¸   t	   cStringIOt   iot   StringIORI   t   ImportErrorR   Ry   R   R   R   t	   pbr.testsR   t   BaseTestCaseR   Rm   RD   R'   R>   Rl   RF   t   objectRn   Rq   Rˆ   R¢   Rº   RÍ   (    (    (    s1   /tmp/pip-build-h1VYrz/pbr/pbr/tests/test_setup.pyt   <module>   s8   P		[&g,.