3 F\H @sddlmZddlZyddlZejZWn"ek rHddlZejZYnXddlZddl m Z ddl m Z ddl m Z ddl mZGdddejZd Zd d Zd jd dejd DZGdddejZGdddeZGdddejZGdddeZGdddejZdS))print_functionN)git)options) packaging)basecseZdZdeddddejddfdedd ddejddfd edd ddejddfd eddddejddfd ed dddejddfded d ddejddfded d ddejddfded dddejddfgZfddZddZ Z S)SkipFileWritesZchangelog_option_trueZskip_changelogTrueSKIP_WRITE_GIT_CHANGELOGN ChangeLog) option_key option_valueenv_key env_valuepkg_funcfilenameZchangelog_option_falseFalseZchangelog_env_trueZchangelog_both_trueZauthors_option_trueZ skip_authorsSKIP_GENERATE_AUTHORSAUTHORSZauthors_option_falseZauthors_env_trueZauthors_both_truecstt|j|jtjj|_tjj tjj |_ tjj |j d|_ tjj|j sf|jd|j dStjj |j|j|_t|_|jdk rd|jf|j|j<|jtj|j|jdS)Nz.gitz*%s is missing; skipping git-related checksz setup.cfg)superrsetUp useFixturefixturesTempDirpath temp_pathosabspathcurdirroot_dirjoingit_direxistsZskipTestrdict option_dictr r EnvironmentVariabler r)self) __class__i/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-install-emcbgzcf/pbr/pbr/tests/test_setup.pyrIs  zSkipFileWrites.setUpcCsH|j|j|j|jd|jtjj|j |j j t j kp@|j dk dS)N)r dest_dirr#)rr rr# assertEqualrrr!rr lowerrZ TRUE_VALUESr)r%r'r'r( test_skipZs zSkipFileWrites.test_skip) __name__ __module__ __qualname__r"rwrite_git_changeloggenerate_authors scenariosrr, __classcell__r'r')r&r(r$sD        ra7780758Break parser (tag: refs/tags/1_foo.1) 04316feMake python (refs/heads/review/monty_taylor/27519) 378261aAdd an integration test script. 3c373acMerge "Lib (HEAD, tag: refs/tags/2013.2.rc2, tag: refs/tags/2013.2, refs/heads/mile-proposed) 182feb3Fix pip invocation for old versions of pip. (tag: refs/tags/0.5.17) fa4f46eRemove explicit depend on distribute. (tag: refs/tags/0.5.16) d1c53ddUse pip instead of easy_install for installation. a793ea1Merge "Skip git-checkout related tests when .git is missing" 6c27ce7Skip git-checkout related tests when .git is missing 451e513Bug fix: create_stack() fails when waiting 4c8cfe4Improve test coverage: network delete API (tag: refs/tags/(evil)) d7e6167Bug fix: Fix pass thru filtering in list_networks (tag: refs/tags/ev()il) c47ec15Consider 'in-use' a non-pending volume for caching (tag: refs/tags/ev)il) 8696fbdImprove test coverage: private extension API (tag: refs/tags/ev(il) f0440f8Improve test coverage: hypervisor list (tag: refs/tags/e(vi)l) 04984a5Refactor hooks file. (HEAD, tag: 0.6.7,b, tag: refs/tags/(12), refs/heads/master) a65e8eeRemove jinja pin. (tag: refs/tags/0.5.14, tag: refs/tags/0.5.13) cCs8|js |S|jd\}}}|jdd}dj|||fS)z=Convert post-1.8.1 git log format to pre-1.8.1 git log formatztag: )stripsplitreplacer)lineshamsgZrefnamer'r'r(_make_old_git_changelog_formatws  r< ccs|]}t|VqdS)N)r<).0r9r'r'r( sr?csDeZdZddeifddeifgZfddZddZdd ZZ S) GitLogsTestzpre1.8.3 changelogz post1.8.3cshtt|j|jtjj|_tjj tjj |_ tjj |j d|_ |jtjd|jtjddS)Nz.gitrr )rr@rrrrrrrrrrrr r$)r%)r&r'r(rs zGitLogsTest.setUpc s0jtjfddtjjjdttj j jdd}|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|WdQRXdS)NcsdtjjdiS)Nstdoutzutf-8)BytesIOrAencode)_)r%r'r(sz6GitLogsTest.test_write_git_changelog..)r r)r rz2013.2z0.5.17z------zRefactor hooks filez+Bug fix: create\_stack() fails when waitingzRefactor hooks file.Z182feb3zreview/monty_taylor/27519z0.5.13z0.6.7Z12z(evil)zev()ilzev(ilzev)ilze(vi)lzMerge "z1\_foo.1)rrZ FakePopenrr0r ropenrrrreadassertIn assertNotIn)r%Zch_fhZchangelog_contentsr')r%r(test_write_git_changelogs2                 z$GitLogsTest.test_write_git_changelogc s&d}d}d}d|}d|j}d|j}d}||||||ji|jtjj|jdg|jtjd fd d fd d }|jtjd|t tjj|jdd} | j d|WdQRXt j |j|jdt tjj|jdd8} | j } |j|| k|j|| k|j|| kWdQRXdS)NzFoo Foo zBar Bar zFoo Bar zCo-authored-by: z)git --git-dir=%s log --format=%%aN <%%aE>zgit --git-dir=%s logzgit rev-parse --show-toplevelz AUTHORS.inzos.path.existscstjj|kS)N)rrr)r) exist_filesr'r(rFsz3GitLogsTest.test_generate_authors..csdj|S)N )r)cmdkwargs)cmd_mapr'r(_fake_run_shell_commandszBGitLogsTest.test_generate_authors.._fake_run_shell_commandzpbr.git._run_shell_commandwz%s )r r)rrG)r rrrrrrr MonkeyPatchrHwriterr1rI assertTrue) r%Z author_oldZ author_newZ co_authorZ co_author_byZ git_log_cmdZgit_co_log_cmdZ git_top_levelrRZauth_fhZauthorsr')rQrMr(test_generate_authorss:    z!GitLogsTest.test_generate_authors) r-r.r/_old_git_changelog_content_changelog_contentr2rrLrWr3r'r')r&r(r@s   r@c@seZdZdgZdS) _SphinxConfigZfooN)r-r.r/Z man_pagesr'r'r'r(rZsrZcseZdZfddZZS)BaseSphinxTestcsNtt|jddl}g|jj_d|jj_|jt j ddd|jt j ddd|jt j dt |jt j dd d|jt j d d ddd l m }|j|_d|j_dddgi|jjd<t jd ddd g}|j||jtj|ji|jjd<t|drd!|jjdd<t|drJ|jrJ|jjd}d|jf|d<dS)"Nrz"sphinx.application.Sphinx.__init__c_sdS)Nr')akwr'r'r(rFsz&BaseSphinxTest.setUp..zsphinx.application.Sphinx.buildc_sdS)Nr')r\r]r'r'r(rFsz sphinx.application.Sphinx.configz sphinx.config.Config.init_valuescWsdS)Nr')r\r'r'r(rFszsphinx.config.Config.__init__cWsdS)Nr')r\r'r'r(rFs)dist fake_package source_dirr\. build_sphinxfake_module.py"another_fake_module_for_testing.pyfake_private_module.pypbrexcludes setup.cfgXfake_package.fake_private_module fake_package.another_fake_* fake_package.unknown_moduleZautodoc_exclude_moduleshas_optautodoc_index_modules)r_)rcrd)rerd)rfrd)rirj)rr[rsphinx.application applicationSphinx messagelog statuscoderrrTrZ distutilsr^ Distributiondistrpackagescommand_options PythonPackagerDiveDirhasattrrkautodoc)r%sphinxr^ pkg_fixturer)r&r'r(rs>         zBaseSphinxTest.setUp)r-r.r/rr3r'r')r&r(r[sr[c @seZdZdeddddfdedddddfdedd ddfd edd d dfd ed d d dfgZddZddZddZddZdS)BuildSphinxTestZtrue_autodoc_capsTr)rkrz has_autodocZtrue_autodoc_caps_with_excludeszXfake_package.fake_private_module fake_package.another_fake_* fake_package.unknown_module)rkrzr~rhZtrue_autodoc_lowertrueZ false_autodocrFZ no_autodoccCstj|j}|j|jtjjd|jk|jtjjd|jk|j sVt |dr^|j }n|j}|tjjd|tjjddS)Nzapi/autoindex.rstz api/fake_package.fake_module.rstrhz(api/fake_package.fake_private_module.rstz4api/fake_package.another_fake_module_for_testing.rst) r LocalBuildDocrtrunrVrrr!r~ryZ assertFalse)r% build_docZ assertionr'r'r(test_build_doc$s  zBuildSphinxTest.test_build_doccCstj|j}|j|jdt|j|jd|jtj|j}d|_|j|jd|jtj|j}d|_|j|jdt|j|jd|jtj|j}d|_|j|jd|j|jd|j|jd|jdS)Nhtmlr5Zmanzhtml,man,doctestdoctest)rrrtfinalize_optionsr*lenbuildersrJ)r%rr'r'r(test_builders_config8s&    z$BuildSphinxTest.test_builders_configcCs||jrdd|jfi|jjd<d |jjdd<tj|j}|jd|j|jd|j|j |jd|j|jd|jdS) Nrlz setup.cfgrg command linenon-existing-builderrbbuilderr)rr) rkrzrtrvrrrKrrJr)r%rr'r'r(test_cmd_builder_overrideTs z)BuildSphinxTest.test_cmd_builder_overridecCsV|jrdd|jfi|jjd<d |jjdd<tj|j}|j|jdd g|jdS) Nrlz setup.cfgrg command linebuilder1,builder2rbrZbuilder1Zbuilder2)rr) rkrzrtrvrrrr*r)r%rr'r'r(+test_cmd_builder_override_multiple_buildershs  z;BuildSphinxTest.test_cmd_builder_override_multiple_buildersN) r-r.r/r"r2rrrrr'r'r'r(r}sr}cs,eZdZfddZddZddZZS)APIAutoDocTestcs"tt|jddl}g|jj_d|jj_|jt j ddd|jt j ddd|jt j dt |jt j dd d|jt j d d ddd l m }|j|_d|j_dddgi|jjd<|jjd|_t jd dddg}|j||jtj|j|jjjdi|_d|jd<dS)Nrz"sphinx.application.Sphinx.__init__c_sdS)Nr')r\r]r'r'r(rFsz&APIAutoDocTest.setUp..zsphinx.application.Sphinx.buildc_sdS)Nr')r\r]r'r'r(rFsz sphinx.application.Sphinx.configz sphinx.config.Config.init_valuescWsdS)Nr')r\r'r'r(rFszsphinx.config.Config.__init__cWsdS)Nr')r\r'r'r(rFs)r^r_r`r\rarbfake_module.pyrd"another_fake_module_for_testing.pyfake_private_module.pyrg setup.cfgrrl)r_)rrd)rrd)rrd)rr)rrrrmrnrorprqrrrTrZrrr^rsrtrurvZsphinx_optionsrwrrx setdefault pbr_options)r%r{r^r|)r&r'r(rzs6      zAPIAutoDocTest.setUpcCsztj|j}|jtd|jtd|jj|jtj j d|jtj j d|jtj j d|jtj j ddS)Nz PBR OPTIONS:zDISTR OPTIONS:zapi/autoindex.rstz api/fake_package.fake_module.rstz(api/fake_package.fake_private_module.rstz4api/fake_package.another_fake_module_for_testing.rst) rrrtrprintrrvrVrrr!)r%rr'r'r(test_default_api_build_dirs  z)APIAutoDocTest.test_default_api_build_dircCsrd|jd<tj|j}|jtd|jtd|jj|jtj j d|jtj j d|jtj j ddS) Ncontributor/apiZ api_doc_dirz PBR OPTIONS:zDISTR OPTIONS:zcontributor/api/autoindex.rstz,contributor/api/fake_package.fake_module.rstz4contributor/api/fake_package.fake_private_module.rst)Nr) rrrrtrrrvrVrrr!)r%rr'r'r(test_different_api_build_dirs   z+APIAutoDocTest.test_different_api_build_dir)r-r.r/rrrr3r'r')r&r(rxs $r) __future__rr cStringIOioStringIOrC ImportErrorrrgrrrZ pbr.testsrZ BaseTestCaserrYr<rr7rXr@objectrZr[r}rr'r'r'r(s.       P [.f