HEX
Server: Apache
System: Linux srv1.prosuiteplus.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: prosuiteplus (1001)
PHP: 8.3.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/pbr/tests/__pycache__/test_packaging.cpython-38.pyc
U

jP�^���@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddl
mZddlZddlmZddlmZddlmZddlmZej�ej�eddd��ZGdd	�d	ej�ZGd
d�dej�ZGdd
�d
ej�ZGdd�dej�Z Gdd�dej!�Z"Gdd�dej!�Z#Gdd�dej!�Z$Gdd�dej!�Z%Gdd�de
j&�Z'Gdd�dej!�Z(Gdd�dej!�Z)Gdd�dej!�Z*Gd d!�d!ej!�Z+Gd"d#�d#ej!�Z,Gd$d%�d%ej!�Z-Gd&d'�d'ej!�Z.Gd(d)�d)ej!�Z/d*d+�Z0dS),�N)�matchers)�	wheelfile)�git)�	packaging)�basez..csFeZdZdZ�fdd�Z�fdd�Zd
dd�Zd	d
�Zdd�Z�Z	S)�TestRepoz�A git repo for testing with.

    Use of TempHomeDir with this fixture is strongly recommended as due to the
    lack of config --local in older gits, it will write to the users global
    configuration without TempHomeDir.
    cstt|���||_dS�N)�superr�__init__�_basedir)�selfZbasedir��	__class__��:/usr/lib/python3/dist-packages/pbr/tests/test_packaging.pyr
LszTestRepo.__init__csBtt|���t�dddg|j�t��t�dddg|j�dS)NrZinit�.�add)r	r�setUpr�_run_cmdrZ_config_git�rr
rrrPszTestRepo.setUp�test commitcCsZtt�|j��}|jd|}t|d���t�dd|g|j�t�ddd|g|j�dS)Nz/%d�wtrr�commit�-m)�len�os�listdirr�open�closerr)r�message_content�files�pathrrrrVs
zTestRepo.commitcCst�ddddg|j�dS)Nr�resetz--hardzHEAD^�rrrrrrr�uncommit]szTestRepo.uncommitcCst�dddd|g|j�dS)Nr�tagz-smztest tagr#�r�versionrrrr%`s�zTestRepo.tag)r)
�__name__�
__module__�__qualname__�__doc__r
rrr$r%�
__classcell__rrr
rrDs
rcs eZdZdZ�fdd�Z�ZS)�
GPGKeyFixturezxCreates a GPG key for testing.

    It's recommended that this be used in concert with a unique home
    directory.
    c	s*tt|���|�t���}t�d�}t�	ddg|j
�}|d�d�D]>}|�|�}|rFt
|�d��t
|�d��t
|�d��f}q�qF|dkr�d	}tj
�|j
d
�}t|d��2}|ddkr�|ddkr�|�d�|�d
�W5QRX|ddkr�d}n|ddk�r
d}nd}t�	ddd||g|j
�dS)Nz#^gpg\s.*\s([\d+])\.([\d+])\.([\d+])Zgpgz	--versionr�
���)rrrz
key-configrzO
                %no-protection
                %transient-key
                a
            %no-ask-passphrase
            Key-Type: RSA
            Name-Real: Example Key
            Name-Comment: N/A
            Name-Email: example@example.com
            Expire-Date: 2d
            Preferences: (setpref)
            %commit
            z--quick-randomz--debug-quick-random�z	--gen-keyz--batch)r	r-r�
useFixture�fixtures�TempDir�re�compilerrr!�split�match�int�groupr�joinr�write)r�tempdirZgnupg_version_reZ
gnupg_version�lineZconfig_file�fZgnupg_randomr
rrrls8

�
�zGPGKeyFixture.setUp)r(r)r*r+rr,rrr
rr-esr-c@s"eZdZdZddd�Zdd�ZdS)	�Venvz�Create a virtual environment for testing with.

    :attr path: The path to the environment root.
    :attr python: The path to the python binary in the environment.
    rNcCsF||_|dkr dt}dd|g}||_|dkr<dddg|_n||_dS)a�Create a Venv fixture.

        :param reason: A human readable string to bake into the venv
            file path to aid diagnostics in the case of failures.
        :param modules: A list of modules to install, defaults to latest
            pip, wheel, and the working copy of PBR.
        :attr pip_cmd: A list to override the default pip_cmd passed to
            python for installing base packages.
        rzfile://%s#egg=pbrZpip�wheelNr�install)�_reason�PBR_ROOT�modules�pip_cmd)r�reasonrFrG�pbrrrrr
�s

z
Venv.__init__cCs�|�t���j}tj|dd�tj�|dd�}|g|jdg}|j	rxt
|j	�dkrx|�|j	�|�t�
d|j|��|�t|d�|�t|d�||_||_||fS)	NT)�clear�bin�pythonz-Urzmkvenv-r!)r3r4r5r!�
virtualenvZcreate_environmentrr<rGrFr�extendrZCapturedSubprocessrD�
addCleanup�delattrrL)rr!rLZcommandrrr�_setUp�s�zVenv._setUp)rN)r(r)r*r+r
rQrrrrrA�s
rAc@sJeZdZdZe�e�d��e�e�d��d�Zdd�Z	dd�Z
d	d
�ZdS)�CreatePackagesz�Creates packages from dict with defaults

        :param package_dirs: A dict of package name to directory strings
        {'pkg_a': '/tmp/path/to/tmp/pkg_a', 'pkg_b': '/tmp/path/to/tmp/pkg_b'}
    z�            #!/usr/bin/env python
            import setuptools
            setuptools.setup(
                setup_requires=['pbr'],
                pbr=True,
            )
        z=            [metadata]
            name = {pkg_name}
        ��setup.py�	setup.cfgcCs
||_dS)aXCreates packages from dict with defaults

            :param packages: a dict where the keys are the package name and a
            value that is a second dict that may be empty, containing keys of
            filenames and a string value of the contents.
            {'package-a': {'requirements.txt': 'string', 'setup.cfg': 'string'}
        N)�packages)rrVrrrr
�szCreatePackages.__init__c	Csltj�tj�||��}tj�|�}tj�|�sH|�|�rDt�|�nt�t	|d��}|�
|�W5QRXdS)Nr)rr!�abspathr<�dirname�exists�
startswith�makedirs�
ValueErrorrr=)rZ	directory�	file_name�contentsr!Zpath_dirr@rrr�
_writeFile�s
zCreatePackages._writeFilecCs�|�t���j}i}|jD]�}tj�||�}|||<t�|�dD]D}||j|krf|j|�|�}n|j	|j
|d�}|�|||�qB|j|D]}|�|||j||�q�|�t|���
�q|�t|d�||_|S)NrS)�pkg_name�package_dirs)r3r4r5r!rVrr<�mkdir�pop�defaults�formatr_rrrOrPra)rZtmpdirrar`Zpkg_pathZcfr^rrrrQ�s"

zCreatePackages._setUpN)r(r)r*r+�textwrap�dedent�six�urdr
r_rQrrrrrR�s�
rRcspeZdZdedd�fdedd�fgZ�fdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Z�Z
S)� TestPackagingInGitRepoWithCommit�preversionedT�rk�
postversionedFcs.tt|���|�t|j��|_|j��dSr)r	rjrr3r�package_dir�reporrr
rrrsz&TestPackagingInGitRepoWithCommit.setUpc	CsH|jddd�ttj�|jd�d��}|��}W5QRX|�|d�dS)N�sdistF��
allow_fail�AUTHORS�rr2��	run_setuprrr!r<rn�readZassertNotEqual�rr@Zbodyrrr�test_authorssz-TestPackagingInGitRepoWithCommit.test_authorsc	CsH|jddd�ttj�|jd�d��}|��}W5QRX|�|d�dS)NrpFrq�	ChangeLogrtr2rurxrrr�test_changelogsz/TestPackagingInGitRepoWithCommit.test_changelogc	CsV|jjdd�|jddd�ttj�|jd�d��}|��}W5QRX|�	d|�dS)	NzAllow *.openstack.org to work�rrpFrqrzrtz\*�
rorrvrrr!r<rnrw�assertInrxrrr�test_changelog_handles_astrisk#s
z?TestPackagingInGitRepoWithCommit.test_changelog_handles_astriskc	Csn|jjdd�|jddd�ttj�|jd�d��}|��}W5QRX|�	d|�|�	d	|�|�	d
|�dS)NzSee os_ for to_do about qemu_.r|rpFrqrzrtzos\_zto\_dozqemu\_r}rxrrr�+test_changelog_handles_dead_links_in_commit*szLTestPackagingInGitRepoWithCommit.test_changelog_handles_dead_links_in_commitc	CsV|jjdd�|jddd�ttj�|jd�d��}|��}W5QRX|�	d|�dS)	NzAllow `openstack.org` to `workr|rpFrqrzrtz\`r}rxrrr� test_changelog_handles_backticks3s
zATestPackagingInGitRepoWithCommit.test_changelog_handles_backticksc	Csf|jddd�ttj�|jd�d��}|��}W5QRX|�|t�	t�
d���|�|t�
d��dS)NrpFrqz$pbr_testpackage.egg-info/SOURCES.txtrtzpbr_testpackage/extra.pyzpbr_testpackage/__init__.py)rvrrr!r<rnrw�
assertThatr�Not�Containsrxrrr�test_manifest_exclude_honoured:s���z?TestPackagingInGitRepoWithCommit.test_manifest_exclude_honouredcCs4|jdd|jddd�\}}}|�|t�d��dS�NrC�--root�	installedFrqzGenerating ChangeLog�rv�temp_dir�
expectThatrr��r�stdout�_rrr�test_install_writes_changelogDs�z>TestPackagingInGitRepoWithCommit.test_install_writes_changelog)r(r)r*�dict�	scenariosrryr{rr�r�r�r�r,rrr
rrj	s�	
rjc@seZdZdd�ZdS)�TestExtrafileInstallationcCsF|jdd|jddd�\}}}|�|t�d��|�|t�d��dS)NrCr�r�Frqzcopying data_files/a.txtzcopying data_files/b.txtr�r�rrr�test_install_globLs���z+TestExtrafileInstallation.test_install_globN)r(r)r*r�rrrrr�Ksr�cs,eZdZ�fdd�Zdd�Zdd�Z�ZS)�#TestPackagingInGitRepoWithoutCommitcs0tt|���|�t|j��|jddd�dS)NrpFrq)r	r�rr3rrnrvrr
rrrXsz)TestPackagingInGitRepoWithoutCommit.setUpc	Cs:ttj�|jd�d��}|��}W5QRX|�d|�dS)Nrsrtr.�rrr!r<rnrw�assertEqualrxrrrry]sz0TestPackagingInGitRepoWithoutCommit.test_authorsc	Cs:ttj�|jd�d��}|��}W5QRX|�d|�dS)NrzrtzCHANGES
=======

r�rxrrrr{csz2TestPackagingInGitRepoWithoutCommit.test_changelog)r(r)r*rryr{r,rrr
rr�Vsr�cs,eZdZ�fdd�Zdd�Zdd�Z�ZS)�TestPackagingWheelscs�tt|���|�t|j��|jddd�tj�	|jd�}t�
|�d}tj�	||�}t�|�}|j
�d�}tj�	||�|_|�|j�|��dS)N�bdist_wheelFrqZdistrZnamever)r	r�rr3rrnrvrr!r<rrZ	WheelFileZparsed_filenamer;�extracted_wheel_dirZ
extractallr)rZdist_dirZrelative_wheel_filenameZabsolute_wheel_filenameZ
wheel_fileZ
wheel_namer
rrrls�
zTestPackagingWheels.setUpcCs`tj�|jd�}|�tj�|��t�|�}|�d|�|�d|�|�d|�|�d|�dS)Nz pbr_testpackage-0.0.data/scriptsZ
pbr_test_wsgiZpbr_test_wsgi_with_classZpbr_test_cmdZpbr_test_cmd_with_class)	rr!r<r��
assertTruerYrr~ZassertNotIn)rZscripts_dirZscriptsrrr�$test_data_directory_has_wsgi_scripts~s�
z8TestPackagingWheels.test_data_directory_has_wsgi_scriptscCs^tj�|jd�}d}t�}|r(d�|�}tj�||�}|�tj�|��|�tj�|��dS)N�pbr_testpackagez
testext.soztestext.{0}.so)rr!r<r��	get_soabirer�rY)rZbuilt_package_dirZstatic_object_filename�soabiZstatic_object_pathrrr�test_generates_c_extensions�s�
�z/TestPackagingWheels.test_generates_c_extensions)r(r)r*rr�r�r,rrr
rr�jsr�c@seZdZdd�Zdd�ZdS)�TestPackagingHelperscCs@d}tjdddd�}d}d}t�||||�}d}|�||�dS)	N�console_scripts�test-ep�
pbr.packaging)ZLocalInstallScripts��name�module_nameZattrs�#!/usr/bin/env fake-header
�=%(group)s %(module_name)s %(import_target)s %(invoke_target)sz`#!/usr/bin/env fake-header
console_scripts pbr.packaging LocalInstallScripts LocalInstallScripts)�
pkg_resources�
EntryPointr�generate_scriptr�)rr;�entry_point�header�templateZgenerated_scriptZexpected_scriptrrr�test_generate_script�s"���z)TestPackagingHelpers.test_generate_scriptcCsZd}tjddd�}d}d}|�ttj||||�tjdddd�}|�ttj||||�dS)	Nr�r�r�)r�r�r�r�)Zattr1Zattr2Zattr3r�)r�r��assertRaisesr\rr�)rr;r�r�r�rrr�+test_generate_script_validates_expectations�s8����z@TestPackagingHelpers.test_generate_script_validates_expectationsN)r(r)r*r�r�rrrrr��sr�cs4eZdZ�fdd�Zdd�Zdd�Zdd�Z�ZS)	�TestPackagingInPlainDirectorycstt|���dSr)r	r�rrr
rrr�sz#TestPackagingInPlainDirectory.setUpcCs4|jddd�tj�|jd�}|�tj�|��dS)NrpFrqrs�rvrr!r<rnZassertFalserY�r�filenamerrrry�sz*TestPackagingInPlainDirectory.test_authorscCs4|jddd�tj�|jd�}|�tj�|��dS)NrpFrqrzr�r�rrrr{�sz,TestPackagingInPlainDirectory.test_changelogcCs:|jdd|jddd�\}}}|�|t�t�d���dSr�)rvr�r�rr�r�r�rrr�test_install_no_ChangeLog�s��z7TestPackagingInPlainDirectory.test_install_no_ChangeLog)r(r)r*rryr{r�r,rrr
rr��sr�c@seZdZdd�Zdd�ZdS)�TestPresenceOfGitc	Cs4tj�td��}d|_|�dt���W5QRXdS)N�_run_shell_commandzgit version 1.8.4.1T)�mock�patch�objectrZreturn_valuer��_git_is_installed�rZ_commandrrr�testGitIsInstalled�s�z$TestPresenceOfGit.testGitIsInstalledc	Cs4tj�td��}t|_|�dt���W5QRXdS)Nr�F)r�r�r�r�OSError�side_effectr�r�r�rrr�testGitIsNotInstalled�s�z'TestPresenceOfGit.testGitIsNotInstalledN)r(r)r*r�r�rrrrr��sr�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�ParseRequirementsTestcCst�g�}|�g|�dSr)r�parse_requirementsr�)rZactualrrr�test_empty_requirements�s
z-ParseRequirementsTest.test_empty_requirementsc	Csnt��}tj�|d�}t|d��}|�d�W5QRXtj�	t
d|f��t
��}W5QRX|�dg|�dS)z/Ensure default files used if no files provided.�requirements.txt�wrIZREQUIREMENTS_FILESN)
�tempfile�mkdtemprr!r<rr=r�r�r�rr�r��rr>�requirementsr@�resultrrr�test_default_requirements�s
�z/ParseRequirementsTest.test_default_requirementsc	Cs\tjddd�\}}t|d��}|�d�W5QRX|�t�d|��|�ddgt�	��d	S)
z6Ensure environment variable used if no files provided.�	openstack�.setup��prefix�suffixr��foo
bar�PBR_REQUIREMENTS_FILES�foo�barN�
r��mkstemprr=r3r4ZEnvironmentVariabler�rr��rr��tmp_file�fhrrr�test_override_with_env�s
�
�z,ParseRequirementsTest.test_override_with_envc	Cs`tjddd�\}}t|d��}|�d�W5QRX|�t�dd|��|�dd	gt�	��dS)
Nr�r�r�r�r�r�z
no-such-file,r�r�r�r�rrr�%test_override_with_env_multiple_filess��
�z;ParseRequirementsTest.test_override_with_env_multiple_filesc	Cs|t��}tj�|d�}t|d��8}|�d�|�d�|�d�|�d�|�d�W5QRXt�|g�}|�	dg|�dS)	Nr�r�z-i https://myindex.local
z$  --index-url https://myindex.local
z) --extra-index-url https://myindex.local
z#--find-links https://myindex.local
zarequirement>=1.0
zarequirement>=1.0�
r�r�rr!r<rr=rr�r�r�rrr�test_index_presents



z(ParseRequirementsTest.test_index_presentc	Cs�t��}tj�|d�}tj�|d�}t|d��}|�d|�W5QRXt|d��}|�d�W5QRXt�|g�}|�	dg|�dS)Nr�z
nested.txtr�z-r rIr�)rr>r��nestedr@r�rrr�test_nested_requirementssz.ParseRequirementsTest.test_nested_requirementsN)	r(r)r*r�r�r�r�r�r�rrrrr��s

r�c@s�eZdZdddgd�fdddgd�fgZdd	difd
d	difgZddd
dgd�fddd
dgd�fddgd�fgZee�dddifdddifdddifgee�Zee�dddd�fgdddifdddifgee�Zdd �Zd!S)"�ParseRequirementsTestScenariosz
non-versionedFr�)�	versioned�expectedr�Tz
bar>=1.2.3znon-subdirectory�has_subdirectoryzhas-subdirectoryZnormalr�r�)�urlr�Znormal_with_commentsz-# this is a comment
foo
# and another one
barZremoves_index_linesz	-f foobarZssh_egg_urlr�z!git+ssh://foo.com/zipball#egg=barZgit_https_egg_urlz#git+https://foo.com/zipball#egg=barZhttp_egg_urlzhttps://foo.com/zipball#egg=barZgit_egg_url�git://foo.com/zipball#egg=bar)r�r�znon-editable�editablec	Cs�t��}|j}t|d�r&|jr&d|}t|d�r>|jr>d|}t|d�rV|jrVd|}t|jd��}|�	|�W5QRX|�
|jt�
|jg��dS)Nr�z-e %sr�z%s-1.2.3r�z%s&subdirectory=bazr�)r�ZNamedTemporaryFiler��hasattrr�r�r�rr�r=r�r�rr�)rr�Z
req_stringr�rrr�test_parse_requirementsNs�z6ParseRequirementsTestScenarios.test_parse_requirementsN)	r(r)r*Zversioned_scenariosZsubdirectory_scenariosr��
testscenariosZmultiply_scenariosr�rrrrr�*sB�

���


����

��
r�cs,eZdZ�fdd�Zdd�Zdd�Z�ZS)�ParseDependencyLinksTestcs&tt|���tjddd�\}|_dS)Nr�r�r�)r	r�rr�r�r�)rr�r
rrr_s�zParseDependencyLinksTest.setUpc	Cs>t|jd��}|�d�W5QRX|�dgt�|jg��dS)Nr�zhttp://test.com
zhttp://test.com�rr�r=r�r�parse_dependency_links�rr�rrr�test_parse_dependency_normalds�z5ParseDependencyLinksTest.test_parse_dependency_normalc	Cs>t|jd��}|�d�W5QRX|�dgt�|jg��dS)Nr�z -e git://foo.com/zipball#egg=barr�r�r�rrr�&test_parse_dependency_with_git_egg_urlks�z?ParseDependencyLinksTest.test_parse_dependency_with_git_egg_url)r(r)r*rr�r�r,rrr
rr�]sr�cs�eZdZdedd�fdedd�fgZ�fdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Z�fd0d1�Z�ZS)2�TestVersionsrkTrlrmFcsBtt|���|�t|j��|_|�t��|�t�	|j��dSr)
r	r�rr3rrnror-rZDiveDirrr
rrrzszTestVersions.setUpc
Cspt��}t�d|��<t�d��&}tj�d�ddig|_t�d�}W5QRXW5QRX|�	|j
�|�|�dS)Nzpbr.packaging.openzemail.message_from_fileZTest�Namer�)r�Z	mock_openr��email�errorsZMessageErrorr�rZ_get_version_from_pkg_metadatar�ZcalledZassertIsNone)rZmocked_openZmessage_from_filer'rrr�%test_email_parsing_errors_are_handled�s
��z2TestVersions.test_email_parsing_errors_are_handledcCs@|j��|j�d�|j�d�t��}|�|t�d��dS)N�1.2.3�Sem-Ver: api-break�
2.0.0.dev1�rorr%r�_get_version_from_gitr�r�
StartsWithr&rrr�test_capitalized_headers�s

z%TestVersions.test_capitalized_headerscCs@|j��|j�d�|j�d�t��}|�|t�d��dS)Nr�zSem-ver: api-breakr�r�r&rrr� test_capitalized_headers_partial�s

z-TestVersions.test_capitalized_headers_partialcCs0|j��|j�d�t�d�}|�d|�dS)Nr��rorr%rr�r�r&rrr�#test_tagged_version_has_tag_version�s

z0TestVersions.test_tagged_version_has_tag_versioncCs.|j��|j�d�t��}|�d|�dS)N�	1.2.3-rc2z
1.2.3.0rc2r�r&rrr�4test_tagged_version_with_semver_compliant_prerelease�s
zATestVersions.test_tagged_version_with_semver_compliant_prereleasecCs@|j��|j�d�|j�d�t��}|�|t�d��dS)Nz1.4r�r�r�r&rrr�&test_non_canonical_tagged_version_bump�s

z3TestVersions.test_non_canonical_tagged_version_bumpcCs>|j��|j�d�|j��t��}|�|t�d��dS)Nr��
1.2.4.dev1r�r&rrr�1test_untagged_version_has_dev_version_postversion�s


z>TestVersions.test_untagged_version_has_dev_version_postversioncCs>|j��|j�d�|j��t��}|�|t�d��dS)N�	1.2.3.0a1�1.2.3.0a2.dev1r�r&rrr�9test_untagged_pre_release_has_pre_dev_version_postversion�s


zFTestVersions.test_untagged_pre_release_has_pre_dev_version_postversioncCs@|j��|j�d�|j�d�t��}|�|t�d��dS)Nr��sem-ver: deprecationz
1.3.0.dev1r�r&rrr� test_untagged_version_minor_bump�s

z-TestVersions.test_untagged_version_minor_bumpcCs@|j��|j�d�|j�d�t��}|�|t�d��dS)Nr��sem-ver: api-breakr�r�r&rrr� test_untagged_version_major_bump�s

z-TestVersions.test_untagged_version_major_bumpcCs@|j��|j�d�|j��t�d�}|�|t�d��dS)Nr��1.2.5�
1.2.5.dev1r�r&rrr�0test_untagged_version_has_dev_version_preversion�s



z=TestVersions.test_untagged_version_has_dev_version_preversioncCs@|j��|j�d�|j��t�d�}|�|t�d��dS)Nrrr
r�r&rrr�:test_untagged_version_after_pre_has_dev_version_preversion�s



zGTestVersions.test_untagged_version_after_pre_has_dev_version_preversioncCs@|j��|j�d�|j��t�d�}|�|t�d��dS)Nrr�rr�r&rrr�9test_untagged_version_after_rc_has_dev_version_preversion�s



zFTestVersions.test_untagged_version_after_rc_has_dev_version_preversioncCs8|j��|j�d�|j��t��}|�d|�dS)Nrz1.2.3.0rc3.dev1r�r&rrr�;test_untagged_version_after_semver_compliant_prerelease_tag�s


zHTestVersions.test_untagged_version_after_semver_compliant_prerelease_tagcCsL|j��|j�d�|j��|�ttjd�}|�|jdt	�
d��dS)Nr�r�git history�rorr%r�r\rr�r��argsrr��r�errrrr�test_preversion_too_low_simple�s

�z+TestVersions.test_preversion_too_low_simplecCsN|j��|j�d�|j�d�|�ttjd�}|�|jdt	�
d��dS)Nr��sem-ver: featurez1.2.4rrrrrrr�&test_preversion_too_low_semver_headers�s
�z3TestVersions.test_preversion_too_low_semver_headerscs:�fdd����fdd�}|d��j�d�|d�dS)Ncs�jjd}t�||�S)Nz/.git)rorrZ_get_increment_kwargs)r%Zgit_dirrrr�
get_kwargssz=TestVersions.test_get_kwargs_corner_cases.<locals>.get_kwargscs��j����t��|���j�d���t��|���j�d���tdd��|���j���j�d���tdd��|���j���j�d���tdd��|���j�d���tddd��|��dS)	Nzsem-ver: bugfixrT)�minorrr
)�major)rr)rorr�r�r$)r%�rrrr�_check_combinationss


zFTestVersions.test_get_kwargs_corner_cases.<locals>._check_combinationsr2r�)ror%)rrrrr�test_get_kwargs_corner_cases�s
z)TestVersions.test_get_kwargs_corner_casescCs�|j��|j�d�|j��|j�d�t��}|�|t�d��|j��t��}|�|t�d��|j��|j�d�|j��|j�d�t��}|�|t�d��|j��|j�d�|j��|j�d	�t��}|�|t�d
��|j��|j�d�|j��|j�d�t��}|�|t�d
��|j��|j�d�|j��|j�d�t��}|�|t�d��dS)N�1Zbadverz
1.0.1.dev1z
1.0.1.dev2z1.2Zbadver2z
1.2.1.dev1r�Zbadver3rz	1.2.4.0a1Zbadver4z1.2.4.0a2.dev1�2znon-release-tag/2014.12.16-1z
2.0.1.dev1r�r&rrr�test_invalid_tag_ignoredsB










z%TestVersions.test_invalid_tag_ignoredcCs.|j��|j�d�t��}|�d|�dS)Nz	1.3.0.0a1r�r&rrr�test_valid_tag_honouredCs
z$TestVersions.test_valid_tag_honouredcCs:|j��|j�d�dtjd<t�d�}|�d|�dS)Nr�r �SKIP_WRITE_GIT_CHANGELOG)rorr%r�environrr�r�r&rrr�test_skip_write_git_changelogLs



z*TestVersions.test_skip_write_git_changelogcs tt|���tj�dd�dS)Nr$)r	r��tearDownrr%rcrr
rrr'TszTestVersions.tearDown)r(r)r*r�r�rr�r�r�r�rrrrr	rrrrrrrrr"r#r&r'r,rrr
rr�ss2�
+	r�c@seZdZdd�ZdS)�TestRequirementParsingc	Cs�dt�d�t�d�d�i}|�t|��j}|d}ddgdgdd	gd
gddgd
�}|�td��}|j}|j|dd|d�tj	�
|d�}tj	�
|d�}t|d��}	tt
�|	��}
W5QRX|��D]4\}}dd�|D�}
dd�|
|D�}|�|
|�q�dS)NZ
test_reqparseaD                        bar
                        quux<1.0; python_version=='2.6'
                        requests-aws>=0.1.4    # BSD License (3 clause)
                        Routes>=1.12.3,!=2.0,!=2.1;python_version=='2.7'
                        requests-kerberos>=0.6;python_version=='2.7' # MIT
                    aP                        [metadata]
                        name = test_reqparse

                        [extras]
                        test =
                            foo
                            baz>3.2 :python_version=='2.7' # MIT
                            bar>3.3 :python_version=='2.7' # MIT # Apache
                    )r�rUr�zrequests-aws>=0.1.4zquux<1.0zRoutes!=2.0,!=2.1,>=1.12.3zrequests-kerberos>=0.6r�zbaz>3.2zbar>3.3)Nz:(python_version=='2.6')z:(python_version=='2.7')�testztest:(python_version=='2.7')ZreqParse)rTr�F)rr�cwdztest_reqparse.egg-infozrequires.txtZrtcSsg|]}tj�|��qSr�r�ZRequirement�parse��.0�srrr�
<listcomp>�s�zCTestRequirementParsing.test_requirement_parsing.<locals>.<listcomp>cSsg|]}tj�|��qSrr+r-rrrr0�s�)rfrgr3rRrarArLrrr!r<rr�r�Zsplit_sections�itemsr�)rZpkgsZpkg_dirsZpkg_dirZexpected_requirements�venvZ
bin_pythonZegg_infoZrequires_txtZrequiresZgenerated_requirementsZsectionr�Z
exp_parsedZ
gen_parsedrrr�test_requirement_parsing[sF��������z/TestRequirementParsing.test_requirement_parsingN)r(r)r*r3rrrrr(Ysr(cs4eZdZ�fdd�Zdd�Zdd�Zdd�Z�ZS)	�TestRepositoryURLDependenciescsvtt|���tj�t��d�|_t	|jd��>}|�
d�dddddd	d
ddd
ddddddddddg��W5QRXdS)Nr�r�r.zH-e git+git://git.pro-ject.org/oslo.messaging#egg=oslo.messaging-1.0.0-rczE-e git+git://git.pro-ject.org/django-thumborize#egg=django-thumborizezJ-e git+git://git.pro-ject.org/django-thumborize#egg=django-thumborize-betazK-e git+git://git.pro-ject.org/django-thumborize#egg=django-thumborize2-betazQ-e git+git://git.pro-ject.org/django-thumborize#egg=django-thumborize2-beta-4.0.1z^-e git+git://git.pro-ject.org/django-thumborize#egg=django-thumborize2-beta-1.0.0-alpha.beta.1z�-e git+git://git.pro-ject.org/django-thumborize#egg=django-thumborize2-beta-1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okayz`-e git+git://git.pro-ject.org/django-thumborize#egg=django-thumborize2-beta-2.0.0-rc.1+build.123z+-e git+git://git.project.org/Proj#egg=Proj1�0git+https://git.project.org/Proj#egg=Proj2-0.0.1z+-e git+ssh://git.project.org/Proj#egg=Proj3�2svn+svn://svn.project.org/svn/Proj#egg=Proj4-0.0.2z;-e svn+http://svn.project.org/svn/Proj/trunk@2019#egg=Proj5�9hg+http://hg.project.org/Proj@da39a3ee5e6b#egg=Proj-0.0.3z.-e hg+http://hg.project.org/Proj@2019#egg=Proj�1hg+http://hg.project.org/Proj@v1.0#egg=Proj-0.0.4z9-e hg+http://hg.project.org/Proj@special_feature#egg=Proj�'git://foo.com/zipball#egg=foo-bar-1.2.4�
pypi-proj1�
pypi-proj2)r	r4rrr!r<r�r�r�rr=)rr@r
rrr�s6��z#TestRepositoryURLDependencies.setUpc/Cs�ddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d,d.g/}d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[dZd\g/}t|�D]$\}}|�||t�d]tj|��q�dS)^N�django-thumborize�django-thumborize-beta�django-thumborize2-beta�django-thumborize2-beta>=4.0.1�+django-thumborize2-beta>=1.0.0-alpha.beta.1zFdjango-thumborize2-beta>=1.0.0-alpha-a.b-c-long+build.1-aef.1-its-okay�-django-thumborize2-beta>=2.0.0-rc.1+build.123zdjango-thumborize-beta>=0.0.4zdjango-thumborize-beta>=1.2.3z django-thumborize-beta>=10.20.30z-django-thumborize-beta>=1.1.2-prerelease+metaz"django-thumborize-beta>=1.1.2+metaz(django-thumborize-beta>=1.1.2+meta-validz#django-thumborize-beta>=1.0.0-alphaz"django-thumborize-beta>=1.0.0-betaz(django-thumborize-beta>=1.0.0-alpha.betaz*django-thumborize-beta>=1.0.0-alpha.beta.1z%django-thumborize-beta>=1.0.0-alpha.1z*django-thumborize-beta>=1.0.0-alpha0.validz*django-thumborize-beta>=1.0.0-alpha.0validzNdjango-thumborize-beta>=1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okayz*django-thumborize-beta>=1.0.0-rc.1+build.1z,django-thumborize-beta>=2.0.0-rc.1+build.123z"django-thumborize-beta>=1.2.3-betaz+django-thumborize-beta>=10.2.3-DEV-SNAPSHOTz*django-thumborize-beta>=1.2.3-SNAPSHOT-123zdjango-thumborize-beta>=1.0.0zdjango-thumborize-beta>=2.0.0zdjango-thumborize-beta>=1.1.7z(django-thumborize-beta>=2.0.0+build.1848z(django-thumborize-beta>=2.0.1-alpha.1227z(django-thumborize-beta>=1.0.0-alpha+betaz<django-thumborize-beta>=1.2.3----RC-SNAPSHOT.12.9.1--.12+788z5django-thumborize-beta>=1.2.3----R-S.12.9.1--.12+metaz8django-thumborize-beta>=1.2.3----RC-SNAPSHOT.12.9.1--.12z:django-thumborize-beta>=1.0.0+0.build.1-rc.10000aaa-kk-0.1zGdjango-thumborize-beta>=999999999999999999.99999999999999.9999999999999�Proj1�Proj2>=0.0.1�Proj3�Proj4>=0.0.2�Proj5�Proj>=0.0.3�Proj�Proj>=0.0.4�foo-bar>=1.2.4zegg=django-thumborizezegg=django-thumborize-betazegg=django-thumborize2-betaz!egg=django-thumborize2-beta-4.0.1z.egg=django-thumborize2-beta-1.0.0-alpha.beta.1zIegg=django-thumborize2-beta-1.0.0-alpha-a.b-c-long+build.1-aef.1-its-okayz0egg=django-thumborize2-beta-2.0.0-rc.1+build.123z egg=django-thumborize-beta-0.0.4z egg=django-thumborize-beta-1.2.3z#egg=django-thumborize-beta-10.20.30z0egg=django-thumborize-beta-1.1.2-prerelease+metaz%egg=django-thumborize-beta-1.1.2+metaz+egg=django-thumborize-beta-1.1.2+meta-validz&egg=django-thumborize-beta-1.0.0-alphaz%egg=django-thumborize-beta-1.0.0-betaz+egg=django-thumborize-beta-1.0.0-alpha.betaz-egg=django-thumborize-beta-1.0.0-alpha.beta.1z(egg=django-thumborize-beta-1.0.0-alpha.1z-egg=django-thumborize-beta-1.0.0-alpha0.validz-egg=django-thumborize-beta-1.0.0-alpha.0validzQegg=django-thumborize-beta-1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okayz-egg=django-thumborize-beta-1.0.0-rc.1+build.1z/egg=django-thumborize-beta-2.0.0-rc.1+build.123z%egg=django-thumborize-beta-1.2.3-betaz.egg=django-thumborize-beta-10.2.3-DEV-SNAPSHOTz-egg=django-thumborize-beta-1.2.3-SNAPSHOT-123z egg=django-thumborize-beta-1.0.0z egg=django-thumborize-beta-2.0.0z egg=django-thumborize-beta-1.1.7z+egg=django-thumborize-beta-2.0.0+build.1848z+egg=django-thumborize-beta-2.0.1-alpha.1227z+egg=django-thumborize-beta-1.0.0-alpha+betaz?egg=django-thumborize-beta-1.2.3----RC-SNAPSHOT.12.9.1--.12+788z8egg=django-thumborize-beta-1.2.3----R-S.12.9.1--.12+metaz;egg=django-thumborize-beta-1.2.3----RC-SNAPSHOT.12.9.1--.12z=egg=django-thumborize-beta-1.0.0+0.build.1-rc.10000aaa-kk-0.1zJegg=django-thumborize-beta-999999999999999999.99999999999999.9999999999999z	egg=Proj1zegg=Proj2-0.0.1z	egg=Proj3zegg=Proj4-0.0.2z	egg=Proj5zegg=Proj-0.0.3zegg=Projzegg=Proj-0.0.4zegg=foo-bar-1.2.4zegg=([^&]+).*$)�	enumerater�r6�subrZegg_fragment)rr�Ztests�indexr)rrr�test_egg_fragment�s��2�1
��z/TestRepositoryURLDependencies.test_egg_fragmentcCsFt�|jg�}|�ddddddddd	d
ddd
dddddddg|�dS)Nzoslo.messaging>=1.0.0-rcr<r=r>r?r@zOdjango-thumborize2-beta>=1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okayrArBrCrDrErFrGrHrIrJr:r;)rr�r�r��rr�rrr� test_parse_repo_url_requirements s0��z>TestRepositoryURLDependencies.test_parse_repo_url_requirementscCsBt�|jg�}|�ddddddddd	d
ddd
dddddg|�dS)NzEgit+git://git.pro-ject.org/oslo.messaging#egg=oslo.messaging-1.0.0-rczBgit+git://git.pro-ject.org/django-thumborize#egg=django-thumborizezGgit+git://git.pro-ject.org/django-thumborize#egg=django-thumborize-betazHgit+git://git.pro-ject.org/django-thumborize#egg=django-thumborize2-betazNgit+git://git.pro-ject.org/django-thumborize#egg=django-thumborize2-beta-4.0.1z[git+git://git.pro-ject.org/django-thumborize#egg=django-thumborize2-beta-1.0.0-alpha.beta.1zgit+git://git.pro-ject.org/django-thumborize#egg=django-thumborize2-beta-1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okayz]git+git://git.pro-ject.org/django-thumborize#egg=django-thumborize2-beta-2.0.0-rc.1+build.123z(git+git://git.project.org/Proj#egg=Proj1r5z(git+ssh://git.project.org/Proj#egg=Proj3r6z8svn+http://svn.project.org/svn/Proj/trunk@2019#egg=Proj5r7z+hg+http://hg.project.org/Proj@2019#egg=Projr8z6hg+http://hg.project.org/Proj@special_feature#egg=Projr9)rr�r�r�rOrrr�$test_parse_repo_url_dependency_links0s.��zBTestRepositoryURLDependencies.test_parse_repo_url_dependency_links)r(r)r*rrNrPrQr,rrr
rr4�sir4cCs�d}zt�d�}t�d�}Wntk
r0YnX|rR|rRdt��krRd||f}|dkr�dt��kr�t��D]0\}}}|�d�rn|�d�rn|�d�d}q�qn|S)	NZSOABIZ	MULTIARCHZpypyz%s-%sz.pypyz.sorr/)	�	sysconfigZget_config_var�IOErrorZget_scheme_names�impZget_suffixesrZ�endswithr8)r�Zarchr�r�rrrr�Hs
r�)1r�Zemail.errorsrTrr6rRr�rfr4r�r�rhr�Z	testtoolsrrMrBrrIrrZ	pbr.testsrr!rWr<�__file__rEZFixturerr-rArRZBaseTestCaserjr�r�r�ZTestCaser�r�r�r�r�r�r�r(r4r�rrrr�<module>)sP!8+AB.*@3gB.