HOME


Mini Shell 1.0
Redirecting to https://devs.lapieza.net/iniciar-sesion Redirecting to https://devs.lapieza.net/iniciar-sesion.
DIR: /proc/1991111/cwd/lib/python3/dist-packages/pbr/tests/__pycache__/
Upload File :
Current File : //proc/1991111/cwd/lib/python3/dist-packages/pbr/tests/__pycache__/test_packaging.cpython-311.pyc
�

㦧b7����ddlZddlZddlZddlZddlZddlZddlZddlZddlZ	ddl	m
Z
n#e$rddl
Z
YnwxYwddlZddl
Z
ddlZddlZddlmZddlZddlmZddlmZddlmZddlmZej�ej�eddd����ZGd	�d
ej��ZGd�dej��Z Gd
�dej��Z!Gd�dej��Z"Gd�dej#��Z$Gd�dej#��Z%Gd�dej#��Z&Gd�dej#��Z'Gd�dej(��Z)Gd�dej#��Z*Gd�dej#��Z+Gd�d ej#��Z,Gd!�d"ej#��Z-Gd#�d$ej#��Z.Gd%�d&ej#��Z/Gd'�d(ej#��Z0Gd)�d*ej#��Z1Gd+�d,ej#��Z2d-�Z3dS).�N)�mock)�matchers)�	wheelfile)�git)�	packaging)�basez..c�@��eZdZdZ�fd�Z�fd�Zdd�Zd�Zd�Z�xZ	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.
    c�d��tt|�����||_dS�N)�superr
�__init__�_basedir)�self�basedir�	__class__s  ��:/usr/lib/python3/dist-packages/pbr/tests/test_packaging.pyrzTestRepo.__init__Os*���
�h����&�&�(�(�(���
�
�
�c����tt|�����tjgd�|j��tj��tjgd�|j��dS)N)r�init�.)r�addr)r
r
�setUpr�_run_cmdr�_config_git�rrs �rrzTestRepo.setUpSsj���
�h����#�#�%�%�%��
�*�*�*�D�M�:�:�:�������
�)�)�)�4�=�9�9�9�9�9r�test commitc�&�ttj|j����}|jd|zz}t	|d�����t
jdd|g|j��t
jddd|g|j��dS)Nz/%d�wtrr�commit�-m)�len�os�listdirr�open�closerr)r�message_content�files�paths    rr zTestRepo.commitYs����B�J�t�}�-�-�.�.���}�u�u�}�,���T�4����� � � ��
�u�e�T�*�D�M�:�:�:��
�u�h��o�>��
�N�N�N�N�Nrc�>�tjgd�|j��dS)N)r�resetz--hardzHEAD^�rrr)rs r�uncommitzTestRepo.uncommit`s#���
�9�9�9�4�=�I�I�I�I�Irc�D�tjdddd|g|j��dS)Nr�tagz-smztest tagr,�r�versions  rr/zTestRepo.tagcs7���
�
�E�5�*�g�6��
�	G�	G�	G�	G�	Gr)r)
�__name__�
__module__�__qualname__�__doc__rrr r-r/�
__classcell__�rs@rr
r
Gs���������� � � � � �:�:�:�:�:�O�O�O�O�J�J�J�G�G�G�G�G�G�Grr
c�"��eZdZdZ�fd�Z�xZS)�
GPGKeyFixturezxCreates a GPG key for testing.

    It's recommended that this be used in concert with a unique home
    directory.
    c����tt|�����|�t	j����}t
jd��}tj	ddg|j
��}|d�d��D]�}|�|��}|rgt|�d����t|�d����t|�d����f}n��|�d	}tj
�|j
d
��}t#|d��5}|ddkr!|ddkr|�d��|�d
��ddd��n#1swxYwY|ddkrd}n|ddkrd}nd}tj	ddd||g|j
��dS)Nz#^gpg\s.*\s([\d+])\.([\d+])\.([\d+])�gpgz	--versionr�
���)rrrz
key-configrzO
                %no-protection
                %transient-key
                z�
            %no-ask-passphrase
            Key-Type: RSA
            Name-Real: Example Key
            Name-Comment: N/A
            Name-Email: example@example.com
            Expire-Date: 2d
            %commit
            z--quick-randomz--debug-quick-random�z	--gen-keyz--batch)r
r9r�
useFixture�fixtures�TempDir�re�compilerrr)�split�match�int�groupr#�joinr%�write)	r�tempdir�gnupg_version_re�
gnupg_version�line�config_file�f�gnupg_randomrs	        �rrzGPGKeyFixture.setUpos@���
�m�T�"�"�(�(�*�*�*��/�/�(�"2�"4�"4�5�5���:�&L�M�M���
�u�k�&:�G�L�I�I�
�!�!�$�*�*�4�0�0�		*�		*�D�,�2�2�4�8�8�M��
�!$�]�%8�%8��%;�%;�!<�!<�!$�]�%8�%8��%;�%;�!<�!<�!$�]�%8�%8��%;�%;�!<�!<�!>�
���	
��$� )�
��g�l�l�7�<��>�>��
�+�t�
$�
$�	���Q��1�$�$��q�)9�Q�)>�)>��������
�G�G��
�
�
�
	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�&���q� � �+�L�L�
�1�
��
"�
"�1�L�L��L��
�
�K��L�+�F��L�	�	�	�	�	s�AF#�#F'�*F')r2r3r4r5rr6r7s@rr9r9hsB���������-�-�-�-�-�-�-�-�-rr9c� �eZdZdZdd�Zd�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.
    �Nc�l�||_|dkrdddtg}||_|�gd�|_dS||_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.
        rU�pip�wheel�buildN)r!rWz-v�install)�_reason�PBR_ROOT�modules�pip_cmd)r�reasonr]r^s    rrz
Venv.__init__�sJ������b�=�=��g�w��9�G�����?�9�9�9�D�L�L�L�"�D�L�L�Lrc�H�|�tj����j}t	j|g��tj�|dd��}|g|jzdgz}|j	rbt|j	��dkrJ|�|j	��|�tj
d|jz|����|�t |d��|�t |d��||_||_||fS)N�bin�pythonz-Urzmkvenv-r))rArBrCr)�
virtualenv�cli_runr#rJr^r]r"�extendr�CapturedSubprocessr[�
addCleanup�delattrrb)rr)rb�commands    r�_setUpzVenv._setUp�s�����x�/�1�1�2�2�7����D�6�"�"�"�����d�E�8�4�4���(�T�\�)�T�F�2���<�	4�C���-�-��1�1��N�N�4�<�(�(�(��O�O�D�3��D�L�(�'�3�3�
4�
4�
4������v�.�.�.������x�0�0�0���	�����V�|�r)rUN)r2r3r4r5rrjrUrrrTrT�sA��������#�#�#�#�&����rrTc��eZdZdZejejd����ejejd����d�Zd�Z	d�Z
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.cfgc��||_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)rrqs  rrzCreatePackages.__init__�s��!��
�
�
rc���tj�tj�||����}tj�|��}tj�|��s1|�|��rtj|��nt�t|d��5}|�
|��ddd��dS#1swxYwYdS)Nr)r#r)�abspathrJ�dirname�exists�
startswith�makedirs�
ValueErrorr%rK)r�	directory�	file_name�contentsr)�path_dirrQs       r�
_writeFilezCreatePackages._writeFile�s���w���r�w�|�|�I�y�A�A�B�B���7�?�?�4�(�(���w�~�~�h�'�'�	!��"�"�9�-�-�
!���H�%�%�%�%� � �
�$��
�
�	��
�G�G�H����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�=C � C$�'C$c���|�tj����j}i}|jD�]}t
j�||��}|||<tj|��dD]j}||j|vr!|j|�|��}n!|j	|�
|���}|�|||���k|j|D]*}|�|||j||���+|�t|�����
����|�t|d��||_|S)Nrm)�pkg_name�package_dirs)rArBrCr)rqr#rJ�mkdir�pop�defaults�formatr}r
r rgrhr�)r�tmpdirr�r�pkg_path�cfr{s       rrjzCreatePackages._setUp�sa������!1�!3�!3�4�4�9�����
�
	9�
	9�H��w�|�|�F�H�5�5�H�%-�L��"��H�X����/�
8�
8�����x�0�0�0�#�}�X�6�:�:�2�>�>�H�H�#�}�R�0�7�7��7�J�J�H�����"�h�7�7�7�7��m�H�-�
K�
K������"�d�m�H�.E�b�.I�J�J�J�J��O�O�H�X�.�.�/�/�6�6�8�8�8�8������~�6�6�6�(����rN)r2r3r4r5�textwrap�dedent�six�ur�rr}rjrUrrrlrl�s���������$�H�O�E�C�E�+�%
�%
���%�X�_�U�S�U�,�&
�&
���
�
�H�!�!�!�	�	�	�����rrlc���eZdZded���fded���fgZ�fd�Zd�Zd�Zd	�Zd
�Z	d�Z
d�Zd
�Z�xZ
S)� TestPackagingInGitRepoWithCommit�preversionedT�r��
postversionedFc����tt|�����|�t	|j����|_|j���dSr)r
r�rrAr
�package_dir�repor rs �rrz&TestPackagingInGitRepoWithCommit.setUpsX���
�.��5�5�;�;�=�=�=��O�O�H�T�-=�$>�$>�?�?��	��	�������rc��|�dd���ttj�|jd��d��5}|���}ddd��n#1swxYwY|�|d��dS)N�sdistF��
allow_fail�AUTHORS�rr@��	run_setupr%r#r)rJr��read�assertNotEqual�rrQ�bodys   r�test_authorsz-TestPackagingInGitRepoWithCommit.test_authorss������w�5��1�1�1�
�"�'�,�,�t�/��;�;�S�
A�
A�	�Q��6�6�8�8�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����D�"�%�%�%�%�%��A,�,A0�3A0c��|�dd���ttj�|jd��d��5}|���}ddd��n#1swxYwY|�|d��dS)Nr�Fr��	ChangeLogr�r@r�r�s   r�test_changelogz/TestPackagingInGitRepoWithCommit.test_changelogs������w�5��1�1�1�
�"�'�,�,�t�/��=�=�s�
C�
C�	�q��6�6�8�8�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
���D�"�%�%�%�%�%r�c�T�|j�d���|�dd���ttj�|jd��d��5}|���}ddd��n#1swxYwY|�	d|��dS)	NzAllow *.openstack.org to work�r'r�Fr�r�r�z\*�
r�r r�r%r#r)rJr�r��assertInr�s   r�test_changelog_handles_astriskz?TestPackagingInGitRepoWithCommit.test_changelog_handles_astrisk%s����	���)H��I�I�I����w�5��1�1�1�
�"�'�,�,�t�/��=�=�s�
C�
C�	�q��6�6�8�8�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�e�T�"�"�"�"�"��&B�B�Bc��|j�d���|�dd���ttj�|jd��d��5}|���}ddd��n#1swxYwY|�	d|��|�	d	|��|�	d
|��dS)NzSee os_ for to_do about qemu_.r�r�Fr�r�r�zos\_zto\_dozqemu\_r�r�s   r�+test_changelog_handles_dead_links_in_commitzLTestPackagingInGitRepoWithCommit.test_changelog_handles_dead_links_in_commit,s����	���)I��J�J�J����w�5��1�1�1�
�"�'�,�,�t�/��=�=�s�
C�
C�	�q��6�6�8�8�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�g�t�$�$�$��
�
�i��&�&�&��
�
�i��&�&�&�&�&r�c�T�|j�d���|�dd���ttj�|jd��d��5}|���}ddd��n#1swxYwY|�	d|��dS)	NzAllow `openstack.org` to `workr�r�Fr�r�r�z\`r�r�s   r� test_changelog_handles_backtickszATestPackagingInGitRepoWithCommit.test_changelog_handles_backticks5s����	���)I��J�J�J����w�5��1�1�1�
�"�'�,�,�t�/��=�=�s�
C�
C�	�q��6�6�8�8�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�e�T�"�"�"�"�"r�c��|�dd���ttj�|jd��d��5}|���}ddd��n#1swxYwY|�|tj	tj
d������|�|tj
d����dS)Nr�Fr�z$pbr_testpackage.egg-info/SOURCES.txtr�zpbr_testpackage/extra.pyzpbr_testpackage/__init__.py)r�r%r#r)rJr�r��
assertThatr�Not�Containsr�s   r�test_manifest_exclude_honouredz?TestPackagingInGitRepoWithCommit.test_manifest_exclude_honoured<s�����w�5��1�1�1�
�"�'�,�,�� �6�8�8�9<�>�>�	�AB��6�6�8�8�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
����(�,�x�0�1K�L�L�M�M�	O�	O�	O�����h�/�0M�N�N�O�O�O�O�Or�c��|�dd|jdzd���\}}}|�|tjd����dS�NrZ�--root�	installedFr�zGenerating ChangeLog�r��temp_dir�
expectThatrr��r�stdout�_s   r�test_install_writes_changelogz>TestPackagingInGitRepoWithCommit.test_install_writes_changelogFsY���~�~��x����!<��&������1�	
����� 1�2H� I� I�J�J�J�J�Jr)r2r3r4�dict�	scenariosrr�r�r�r�r�r�r�r6r7s@rr�r�s��������
���4�0�0�0�1�	�$�$�E�2�2�2�3��I�
�����
&�&�&�&�&�&�#�#�#�'�'�'�#�#�#�P�P�P�K�K�K�K�K�K�Krr�c��eZdZd�ZdS)�TestExtrafileInstallationc���|�dd|jdzd���\}}}|�|tjd����|�|tjd����dS)NrZr�r�Fr�zcopying data_files/a.txtzcopying data_files/b.txtr�r�s   r�test_install_globz+TestExtrafileInstallation.test_install_globNs����~�~��x����!<��&������1�	
����H�%�&@�A�A�	C�	C�	C�����H�%�&@�A�A�	C�	C�	C�	C�	CrN)r2r3r4r�rUrrr�r�Ms(������C�C�C�C�Crr�c�*��eZdZ�fd�Zd�Zd�Z�xZS)�#TestPackagingInGitRepoWithoutCommitc����tt|�����|�t	|j����|�dd���dS)Nr�Fr�)r
r�rrAr
r�r�rs �rrz)TestPackagingInGitRepoWithoutCommit.setUpZsY���
�1�4�8�8�>�>�@�@�@������!1�2�2�3�3�3����w�5��1�1�1�1�1rc���ttj�|jd��d��5}|���}ddd��n#1swxYwY|�d|��dS)Nr�r�r<�r%r#r)rJr�r��assertEqualr�s   rr�z0TestPackagingInGitRepoWithoutCommit.test_authors_s���
�"�'�,�,�t�/��;�;�S�
A�
A�	�Q��6�6�8�8�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����t�$�$�$�$�$��A�A�Ac���ttj�|jd��d��5}|���}ddd��n#1swxYwY|�d|��dS)Nr�r�zCHANGES
=======

r�r�s   rr�z2TestPackagingInGitRepoWithoutCommit.test_changeloges���
�"�'�,�,�t�/��=�=�s�
C�
C�	�q��6�6�8�8�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����/��6�6�6�6�6r�)r2r3r4rr�r�r6r7s@rr�r�XsV�������2�2�2�2�2�
%�%�%�7�7�7�7�7�7�7rr�c�0��eZdZ�fd�Zd�Zd�Zd�Z�xZS)�TestPackagingWheelsc���tt|�����|�t	|j����|�dd���tj�	|jd��}tj
|��d}tj�	||��}tj|��}|j
�d��}tj�	||��|_|�|j��|���dS)N�bdist_wheelFr��distr�namever)r
r�rrAr
r�r�r#r)rJr$r�	WheelFile�parsed_filenamerI�extracted_wheel_dir�
extractallr&)r�dist_dir�relative_wheel_filename�absolute_wheel_filename�
wheel_file�
wheel_namers      �rrzTestPackagingWheels.setUpns
���
�!�4�(�(�.�.�0�0�0������!1�2�2�3�3�3����}���7�7�7��7�<�<�� 0�&�9�9��"$�*�X�"6�"6�q�"9��"$�'�,�,��-�#/�#/���(�)@�A�A�
��/�5�5�i�@�@�
�#%�7�<�<��*�#E�#E�� ����d�6�7�7�7��������rc��tj�|jd��}|�tj�|����dS)Nz&pbr_testpackage-0.0.dist-info/pbr.json)r#r)rJr��
assertTrueru)r�pbr_jsons  r�$test_metadata_directory_has_pbr_jsonz8TestPackagingWheels.test_metadata_directory_has_pbr_json�sH���7�<�<��$�&N�P�P���������x�0�0�1�1�1�1�1rc��tj�|jd��}|�tj�|����tj|��}|�d|��|�d|��|�d|��|�d|��dS)Nz pbr_testpackage-0.0.data/scripts�
pbr_test_wsgi�pbr_test_wsgi_with_class�pbr_test_cmd�pbr_test_cmd_with_class)	r#r)rJr�r�rur$r��assertNotIn)r�scripts_dir�scriptss   r�$test_data_directory_has_wsgi_scriptsz8TestPackagingWheels.test_data_directory_has_wsgi_scripts�s����g�l�l��$�&H�J�J���������{�3�3�4�4�4��*�[�)�)���
�
�o�w�/�/�/��
�
�0�'�:�:�:������1�1�1����2�G�<�<�<�<�<rc��tj�|jd��}d}t	��}|rd�|��}tj�||��}|�tj�|����|�tj�|����dS)N�pbr_testpackagez
testext.soztestext.{0}.so)r#r)rJr��	get_soabir�r�ru)r�built_package_dir�static_object_filename�soabi�static_object_paths     r�test_generates_c_extensionsz/TestPackagingWheels.test_generates_c_extensions�s����G�L�L��$�&7�9�9��!-�������	D�%5�%<�%<�U�%C�%C�"��W�\�\��5�7�7��	
�������'8�9�9�:�:�:��������'9�:�:�;�;�;�;�;r)r2r3r4rr�r�r�r6r7s@rr�r�lse������������$2�2�2�
=�
=�
=�<�<�<�<�<�<�<rr�c��eZdZd�Zd�ZdS)�TestPackagingHelpersc��d}tjddd���}d}d}tj||||��}d}|�||��dS)	N�console_scripts�test-ep�
pbr.packaging)�LocalInstallScripts��name�module_name�attrs�#!/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�)rrI�entry_point�header�template�generated_script�expected_scripts       r�test_generate_scriptz)TestPackagingHelpers.test_generate_script�s|��!��#�.��'�*�,�,�,��0��(��%�4��;���2�2��
6�	�	
����*:�;�;�;�;�;rc��d}tjdd���}d}d}|�ttj||||��tjddd���}|�ttj||||��dS)	Nr�r�r�)r�r�r�r�)�attr1�attr2�attr3r�)r�r��assertRaisesrxrr)rrIrrrs     r�+test_generate_script_validates_expectationsz@TestPackagingHelpers.test_generate_script_validates_expectations�s���!��#�.��'�)�)�)��0��(������	�1�5�+�v��	�	�	�$�.��'�-�/�/�/��	
����	�1�5�+�v��	�	�	�	�	rN)r2r3r4rrrUrrr�r��s2������<�<�<�&����rr�c�0��eZdZ�fd�Zd�Zd�Zd�Z�xZS)�TestPackagingInPlainDirectoryc�V��tt|�����dSr)r
rrrs �rrz#TestPackagingInPlainDirectory.setUp�s&���
�+�T�2�2�8�8�:�:�:�:�:rc���|�dd���tj�|jd��}|�tj�|����dS)Nr�Fr�r��r�r#r)rJr��assertFalseru�r�filenames  rr�z*TestPackagingInPlainDirectory.test_authors�sX�����w�5��1�1�1��7�<�<�� 0�)�<�<����������1�1�2�2�2�2�2rc���|�dd���tj�|jd��}|�tj�|����dS)Nr�Fr�r�rrs  rr�z,TestPackagingInPlainDirectory.test_changelog�sX�����w�5��1�1�1��7�<�<�� 0�+�>�>����������1�1�2�2�2�2�2rc���|�dd|jdzd���\}}}|�|tjtjd������dSr�)r�r�r�rr�r�r�s   r�test_install_no_ChangeLogz7TestPackagingInPlainDirectory.test_install_no_ChangeLog�ss���~�~��x����!<��&������1�	
����H�L��!2�3I�!J�!J�K�K�	M�	M�	M�	M�	Mr)r2r3r4rr�r�rr6r7s@rrr�sl�������;�;�;�;�;�3�3�3�3�3�3�M�M�M�M�M�M�Mrrc��eZdZd�Zd�ZdS)�TestPresenceOfGitc���tj�td��5}d|_|�dtj����ddd��dS#1swxYwYdS)N�_run_shell_commandzgit version 1.8.4.1T)r�patch�objectr�return_valuer��_git_is_installed�r�_commands  r�testGitIsInstalledz$TestPresenceOfGit.testGitIsInstalled�s���
�Z�
�
�s�3�5�5�	<�8@�$9�H�!����T�3�#8�#:�#:�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<s�/A"�"A&�)A&c���tj�td��5}t|_|�dtj����ddd��dS#1swxYwYdS)NrF)rrrr�OSError�side_effectr�rr s  r�testGitIsNotInstalledz'TestPresenceOfGit.testGitIsNotInstalled�s���
�Z�
�
�s�3�5�5�	=�8@�#*�H� ����U�C�$9�$;�$;�<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�	=�	=s�4A'�'A+�.A+N)r2r3r4r"r&rUrrrr�s2������<�<�<�=�=�=�=�=rrc�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�ParseRequirementsTestc�Z�tjg��}|�g|��dSr)r�parse_requirementsr�)r�actuals  r�test_empty_requirementsz-ParseRequirementsTest.test_empty_requirements�s.���-�b�1�1������V�$�$�$�$�$rc��tj��}tj�|d��}t|d��5}|�d��ddd��n#1swxYwYtj�	td|f��5tj��}ddd��n#1swxYwY|�dg|��dS)z/Ensure default files used if no files provided.�requirements.txt�w�pbrN�REQUIREMENTS_FILES)
�tempfile�mkdtempr#r)rJr%rKrrrrr*r��rrL�requirementsrQ�results     r�test_default_requirementsz/ParseRequirementsTest.test_default_requirements�sB���"�$�$���w�|�|�G�-?�@�@��
�,��
$�
$�	��
�G�G�E�N�N�N�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�Z�
�
�y�*>��A� � �	4�	4��1�3�3�F�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	
���%��&�)�)�)�)�)s$�A&�&A*�-A*�B8�8B<�?B<c�T�tjdd���\}}t|d��5}|�d��ddd��n#1swxYwY|�tjd|����|�dd	gtj	����dS)
z6Ensure environment variable used if no files provided.�	openstack�.setup��prefix�suffixr/�foo
barN�PBR_REQUIREMENTS_FILES�foo�bar�
r2�mkstempr%rKrArB�EnvironmentVariabler�rr*�rr��tmp_file�fhs    r�test_override_with_envz,ParseRequirementsTest.test_override_with_envs����&�k�(�K�K�K���8�
�(�C�
 �
 �	!�B��H�H�Z� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�����(�)A�8�L�L�	N�	N�	N����%���"�5�7�7�	9�	9�	9�	9�	9��A�A�Ac�Z�tjdd���\}}t|d��5}|�d��ddd��n#1swxYwY|�tjdd|z����|�dd	gtj	����dS)
Nr9r:r;r/r>r?z
no-such-file,r@rArBrEs    r�%test_override_with_env_multiple_filesz;ParseRequirementsTest.test_override_with_env_multiple_filess����&�k�(�K�K�K���8�
�(�C�
 �
 �	!�B��H�H�Z� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�����(�)A�)8�8�)C�
E�
E�	F�	F�	F�	
���%���"�5�7�7�	9�	9�	9�	9�	9rIc���tj��}tj�|d��}t|d��5}|�d��|�d��|�d��|�d��|�d��ddd��n#1swxYwYtj|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�
r2r3r#r)rJr%rKrr*r�r4s     r�test_index_presentz(ParseRequirementsTest.test_index_presents���"�$�$���w�|�|�G�-?�@�@��
�,��
$�
$�	+��
�G�G�0�1�1�1�
�G�G�;�<�<�<�
�G�G�@�A�A�A�
�G�G�:�;�;�;�
�G�G�)�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+��-�|�n�=�=�����-�.��7�7�7�7�7s�A*B:�:B>�B>c��tj��}tj�|d��}tj�|d��}t|d��5}|�d|z��ddd��n#1swxYwYt|d��5}|�d��ddd��n#1swxYwYtj|g��}|�	dg|��dS)Nr.z
nested.txtr/z-r r0rM)rrLr5�nestedrQr6s      r�test_nested_requirementsz.ParseRequirementsTest.test_nested_requirements&sT���"�$�$���w�|�|�G�-?�@�@������g�|�4�4��
�,��
$�
$�	$��
�G�G�E�F�N�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�
�&�#�
�
�	�!�
�G�G�E�N�N�N�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��-�|�n�=�=�����%��&�)�)�)�)�)s$�$B	�	B
�B
�$C�C
�
C
N)	r2r3r4r,r7rHrKrNrQrUrrr(r(�sn������%�%�%�*�*�*�9�9�9�9�9�9�
8�
8�
8�	*�	*�	*�	*�	*rr(c��eZdZdddgd�fdddgd�fgZdd	difd
d	difgZddd
dgd�fddd
dgd�fddgd�fgZeejdddifdddifdddifgee��zZeejdddd�fgdddifdddifgee��zZd�Zd S)!�ParseRequirementsTestScenariosz
non-versionedFrA)�	versioned�expectedrTTz
bar>=1.2.3znon-subdirectory�has_subdirectoryzhas-subdirectory�normalr>r@)�urlrU�normal_with_commentsz-# this is a comment
foo
# and another one
bar�removes_index_linesz	-f foobar�ssh_egg_urlrXz!git+ssh://foo.com/zipball#egg=bar�git_https_egg_urlz#git+https://foo.com/zipball#egg=bar�http_egg_urlzhttps://foo.com/zipball#egg=bar�git_egg_url�git://foo.com/zipball#egg=bar)rXr�znon-editable�editablec���tj��}|j}t|d��r|jrd|z}t|d��r|jrd|z}t|d��r|jrd|z}t|jd��5}|�	|��ddd��n#1swxYwY|�
|jtj
|jg����dS)Nr`z-e %srTz%s-1.2.3rVz%s&subdirectory=bazr/)r2�NamedTemporaryFilerX�hasattrr`rTrVr%r�rKr�rUrr*)rrF�
req_stringrGs    r�test_parse_requirementsz6ParseRequirementsTestScenarios.test_parse_requirementsVs;���.�0�0���X�
��4��$�$�	0���	0�!�J�.�J��4��%�%�	3�$�.�	3�$�z�1�J��4�+�,�,�	>��1F�	>�/�*�<�J�
�(�-��
%�
%�	!���H�H�Z� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!������"�5�x�}�o�F�F�	H�	H�	H�	H�	Hs�B&�&B*�-B*N)	r2r3r4�versioned_scenarios�subdirectory_scenariosr��
testscenarios�multiply_scenariosrerUrrrSrS2s|������
��E�7�C�C�D�	�D�|�n�E�E�F���
�0�%�8�9�	�0�$�7�8���
�:�E�5�>�B�B�C�	�E����"(�"(�	)�
��� D� D�E��I��<�M�<�	�� C�D�E�	�u�&K�L�M�	�%�!B�C�D�>��2�	4�4�4�I��<�M�<�
�7��G�G�
I�	
��j�%�0�1�
�*�d�+�,�
�	�3�5�5�5�I�H�H�H�H�HrrSc�*��eZdZ�fd�Zd�Zd�Z�xZS)�ParseDependencyLinksTestc���tt|�����tjdd���\}|_dS)Nr9r:r;)r
rkrr2rCrF)rr�rs  �rrzParseDependencyLinksTest.setUpgsG���
�&��-�-�3�3�5�5�5�#�+�;�3;�=�=�=���4�=�=�=rc���t|jd��5}|�d��ddd��n#1swxYwY|�dgt	j|jg����dS)Nr/zhttp://test.com
zhttp://test.com�r%rFrKr�r�parse_dependency_links�rrGs  r�test_parse_dependency_normalz5ParseDependencyLinksTest.test_parse_dependency_normalls���
�$�-��
%�
%�	*���H�H�(�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*����
���,�d�m�_�=�=�	?�	?�	?�	?�	?��8�<�<c���t|jd��5}|�d��ddd��n#1swxYwY|�dgt	j|jg����dS)Nr/z -e git://foo.com/zipball#egg=barr_rnrps  r�&test_parse_dependency_with_git_egg_urlz?ParseDependencyLinksTest.test_parse_dependency_with_git_egg_urlss���
�$�-��
%�
%�	9���H�H�7�8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9����
,�-��,�d�m�_�=�=�	?�	?�	?�	?�	?rr)r2r3r4rrqrtr6r7s@rrkrkesV�������=�=�=�=�=�
?�?�?�?�?�?�?�?�?�?rrkc����eZdZded���fded���fgZ�fd�Zd�Zd�Zd	�Zd
�Z	d�Z
d�Zd
�Zd�Z
d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z�fd�Z�xZS)�TestVersionsr�Tr�r�Fc�H��tt|�����|�t	|j����|_|�t����|�tj	|j����dSr)
r
rvrrAr
r�r�r9r�DiveDirrs �rrzTestVersions.setUp�sx���
�l�D�!�!�'�'�)�)�)��O�O�H�T�-=�$>�$>�?�?��	����
���(�(�(������T�%5�6�6�7�7�7�7�7rc��tj��}tjd|��5tjd��5}tj�d��ddig|_tjd��}ddd��n#1swxYwYddd��n#1swxYwY|�	|j
��|�|��dS)Nzpbr.packaging.openzemail.message_from_file�Test�Namer�)r�	mock_openr�email�errors�MessageErrorr%r�_get_version_from_pkg_metadatar��called�assertIsNone)r�mocked_open�message_from_filer1s    r�%test_email_parsing_errors_are_handledz2TestVersions.test_email_parsing_errors_are_handled�sK���n�&�&��
�Z�,�k�
:�
:�	'�	'���5�6�6�
'�:K��L�-�-�f�5�5��.�/�11�!�-�$�B�%�'�'��	
'�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'����
'�
'�
'�
'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	
���)�0�1�1�1����'�"�"�"�"�"s4�B�=B�;B�B	�B�B	�B�B"�%B"c��|j���|j�d��|j�d��tj��}|�|t
jd����dS)N�1.2.3�Sem-Ver: api-break�
2.0.0.dev1�r�r r/r�_get_version_from_gitr�r�
StartsWithr0s  r�test_capitalized_headersz%TestVersions.test_capitalized_headers��t���	�������	�
�
�g�����	���-�.�.�.��1�3�3�������!4�\�!B�!B�C�C�C�C�Crc��|j���|j�d��|j�d��tj��}|�|t
jd����dS)Nr�zSem-ver: api-breakr�r�r0s  r� test_capitalized_headers_partialz-TestVersions.test_capitalized_headers_partial�r�rc��|j���|j�d��|j�d��tj��}|�|t
jd����dS)Nr�z   sem-ver: api-breakr�r�r0s  r�test_leading_spacezTestVersions.test_leading_space��t���	�������	�
�
�g�����	���0�1�1�1��1�3�3�������!4�\�!B�!B�C�C�C�C�Crc��|j���|j�d��|j�d��tj��}|�|t
jd����dS)Nr�z  ssem-ver: api-break�
1.2.4.dev1r�r0s  r�(test_leading_characters_symbol_not_foundz5TestVersions.test_leading_characters_symbol_not_found�r�rc��|j���|j�d��tjd��}|�d|��dS)Nr��r�r r/rr�r�r0s  r�#test_tagged_version_has_tag_versionz0TestVersions.test_tagged_version_has_tag_version�sV���	�������	�
�
�g�����1�'�:�:������'�*�*�*�*�*rc��|j���|j�d��tj��}|�d|��dS)N�	1.2.3-rc2z
1.2.3.0rc2r�r0s  r�4test_tagged_version_with_semver_compliant_prereleasezATestVersions.test_tagged_version_with_semver_compliant_prerelease�sT���	�������	�
�
�k�"�"�"��1�3�3������w�/�/�/�/�/rc��|j���|j�d��|j�d��tj��}|�|t
jd����dS)Nz1.4r�r�r�r0s  r�&test_non_canonical_tagged_version_bumpz3TestVersions.test_non_canonical_tagged_version_bump�st���	�������	�
�
�e�����	���-�.�.�.��1�3�3�������!4�\�!B�!B�C�C�C�C�Crc��|j���|j�d��|j���tj��}|�|t
jd����dS)Nr�r�r�r0s  r�1test_untagged_version_has_dev_version_postversionz>TestVersions.test_untagged_version_has_dev_version_postversion�sq���	�������	�
�
�g�����	�������1�3�3�������!4�\�!B�!B�C�C�C�C�Crc��|j���|j�d��|j���tj��}|�|t
jd����dS)N�	1.2.3.0a1�1.2.3.0a2.dev1r�r0s  r�9test_untagged_pre_release_has_pre_dev_version_postversionzFTestVersions.test_untagged_pre_release_has_pre_dev_version_postversion�sr���	�������	�
�
�k�"�"�"��	�������1�3�3�������!4�5E�!F�!F�G�G�G�G�Grc��|j���|j�d��|j�d��tj��}|�|t
jd����dS)Nr��sem-ver: deprecationz
1.3.0.dev1r�r0s  r� test_untagged_version_minor_bumpz-TestVersions.test_untagged_version_minor_bump�st���	�������	�
�
�g�����	���/�0�0�0��1�3�3�������!4�\�!B�!B�C�C�C�C�Crc��|j���|j�d��|j�d��tj��}|�|t
jd����dS)Nr��sem-ver: api-breakr�r�r0s  r� test_untagged_version_major_bumpz-TestVersions.test_untagged_version_major_bump�r�rc��|j���|j�d��|j���tjd��}|�|t
jd����dS)Nr��1.2.5�
1.2.5.dev1r�r0s  r�0test_untagged_version_has_dev_version_preversionz=TestVersions.test_untagged_version_has_dev_version_preversion�ss���	�������	�
�
�g�����	�������1�'�:�:�������!4�\�!B�!B�C�C�C�C�Crc��|j���|j�d��|j���tjd��}|�|t
jd����dS)Nr�r�r�r�r0s  r�:test_untagged_version_after_pre_has_dev_version_preversionzGTestVersions.test_untagged_version_after_pre_has_dev_version_preversion�ss���	�������	�
�
�k�"�"�"��	�������1�'�:�:�������!4�\�!B�!B�C�C�C�C�Crc��|j���|j�d��|j���tjd��}|�|t
jd����dS)Nr�r�r�r�r0s  r�9test_untagged_version_after_rc_has_dev_version_preversionzFTestVersions.test_untagged_version_after_rc_has_dev_version_preversion�st���	�������	�
�
�k�"�"�"��	�������1�'�:�:�������!4�5E�!F�!F�G�G�G�G�Grc���|j���|j�d��|j���tj��}|�d|��dS)Nr�z1.2.3.0rc3.dev1r�r0s  r�;test_untagged_version_after_semver_compliant_prerelease_tagzHTestVersions.test_untagged_version_after_semver_compliant_prerelease_tag�si���	�������	�
�
�k�"�"�"��	�������1�3�3�����*�G�4�4�4�4�4rc�P�|j���|j�d��|j���|�tt
jd��}|�|jdtj
d����dS)Nr�r�git history�r�r r/rrxrr�r��argsrr��r�errs  r�test_preversion_too_low_simplez+TestVersions.test_preversion_too_low_simple�s���	
�	�������	�
�
�g�����	����������	�7��B�B���������X�%8��%G�%G�H�H�H�H�Hrc�R�|j���|j�d��|j�d��|�tt
jd��}|�|jdtj
d����dS)Nr��sem-ver: featurez1.2.4rr�r�r�s  r�&test_preversion_too_low_semver_headersz3TestVersions.test_preversion_too_low_semver_headerss���	
�	�������	�
�
�g�����	���+�,�,�,�����	�7��B�B���������X�%8��%G�%G�H�H�H�H�Hrc�����fd����fd�}|d���j�d��|d��dS)Nc�L���jjdz}tj||��S)Nz/.git)r�rr�_get_increment_kwargs)r/�git_dirrs  �r�
get_kwargsz=TestVersions.test_get_kwargs_corner_cases.<locals>.get_kwargss%����i�(�7�2�G��2�7�C�@�@�@rc����j�����t���|�����j�d����t���|�����j�d����td����|�����j����j�d����td����|�����j����j�d����td����|�����j�d����tdd����|����dS)	Nzsem-ver: bugfixr�T)�minorr�r�)�major)r�r�)r�r r�r�r-)r/r�rs ��r�_check_combinationszFTestVersions.test_get_kwargs_corner_cases.<locals>._check_combinationss�����I���������T�V�V�Z�Z��_�_�5�5�5��I���.�/�/�/����T�V�V�Z�Z��_�_�5�5�5��I���/�0�0�0����T��-�-�-�z�z�#���?�?�?��I��� � � ��I���3�4�4�4����T��-�-�-�z�z�#���?�?�?��I��� � � ��I���1�2�2�2����T��-�-�-�z�z�#���?�?�?��I���3�4�4�4����T��D�9�9�9�:�:�c�?�?�K�K�K�K�Krr@r�)r�r/)rr�r�s` @r�test_get_kwargs_corner_casesz)TestVersions.test_get_kwargs_corner_casess�����	A�	A�	A�	A�	A�	L�	L�	L�	L�	L�	L�	��B�����	�
�
�g������G�$�$�$�$�$rc��|j���|j�d��|j���|j�d��tj��}|�|t
jd����|j���tj��}|�|t
jd����|j���|j�d��|j���|j�d��tj��}|�|t
jd����|j���|j�d��|j���|j�d	��tj��}|�|t
jd
����|j���|j�d��|j���|j�d��tj��}|�|t
jd
����|j���|j�d��|j���|j�d��tj��}|�|t
jd����dS)N�1�badverz
1.0.1.dev1z
1.0.1.dev2z1.2�badver2z
1.2.1.dev1r��badver3r�z	1.2.4.0a1�badver4z1.2.4.0a2.dev1�2znon-release-tag/2014.12.16-1z
2.0.1.dev1r�r0s  r�test_invalid_tag_ignoredz%TestVersions.test_invalid_tag_ignored.s���	
�	�������	�
�
�c�����	�������	�
�
�h�����1�3�3�������!4�\�!B�!B�C�C�C��	�������1�3�3�������!4�\�!B�!B�C�C�C��	�������	�
�
�e�����	�������	�
�
�i� � � ��1�3�3�������!4�\�!B�!B�C�C�C��	�������	�
�
�g�����	�������	�
�
�i� � � ��1�3�3�������!4�\�!B�!B�C�C�C��	�������	�
�
�k�"�"�"��	�������	�
�
�i� � � ��1�3�3�������!4�5E�!F�!F�G�G�G��	�������	�
�
�c�����	�������	�
�
�4�5�5�5��1�3�3�������!4�\�!B�!B�C�C�C�C�Crc��|j���|j�d��tj��}|�d|��dS)Nz	1.3.0.0a1r�r0s  r�test_valid_tag_honouredz$TestVersions.test_valid_tag_honouredYsV��	
�	�������	�
�
�k�"�"�"��1�3�3������g�.�.�.�.�.rc���|j���|j�d��dtjd<tjd��}|�d|��dS)Nr�r��SKIP_WRITE_GIT_CHANGELOG)r�r r/r#�environrr�r�r0s  r�test_skip_write_git_changelogz*TestVersions.test_skip_write_git_changelogbsc���	�������	�
�
�g����14��
�-�.��1�'�:�:������'�*�*�*�*�*rc���tt|�����tj�dd��dS)Nr�)r
rv�tearDownr#r�r�rs �rr�zTestVersions.tearDownjs<���
�l�D�!�!�*�*�,�,�,�
�
���1�4�8�8�8�8�8r)r2r3r4r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r6r7s@rrvrv{s��������
���4�0�0�0�1�	�$�$�E�2�2�2�3��I�
8�8�8�8�8�#�#�#�D�D�D�D�D�D�D�D�D�D�D�D�+�+�+�0�0�0�D�D�D�D�D�D�H�H�H�D�D�D�D�D�D�D�D�D�D�D�D�H�H�H�5�5�5�
I�
I�
I�
I�
I�
I�%�%�%�4)D�)D�)D�V/�/�/�+�+�+�9�9�9�9�9�9�9�9�9rrvc��eZdZd�ZdS)�TestRequirementParsingc��dtjd��tjd��d�i}|�t|����j}|d}ddgdgdd	gd
gddgd
�}|�td����}|j}|�|dd|���tj	�
|d��}tj	�
|d��}t|d��5}	ttj|	����}
ddd��n#1swxYwY|���D]9\}}d�|D��}
d�|
|D��}|�|
|���:dS)N�
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.rorAzrequests-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')�reqParse)rnr�F�r��cwdztest_reqparse.egg-infozrequires.txt�rtc�L�g|]!}tj�|����"SrU�r��Requirement�parse��.0�ss  r�
<listcomp>zCTestRequirementParsing.test_requirement_parsing.<locals>.<listcomp>��9�������)�/�/��2�2���rc�L�g|]!}tj�|����"SrUr�r�s  rr�zCTestRequirementParsing.test_requirement_parsing.<locals>.<listcomp>�r�r)r�r�rArlr�rTrbrr#r)rJr%r�r��split_sections�itemsr�)r�pkgs�pkg_dirs�pkg_dir�expected_requirements�venv�
bin_python�egg_info�requires_txt�requires�generated_requirements�sectionrU�
exp_parsed�
gen_parseds               r�test_requirement_parsingz/TestRequirementParsing.test_requirement_parsingqs���(0��9�)�)�"*��	2�	"�	"���
��*�?�?�>�$�#7�#7�8�8�E���?�+���/�0�)3��)E�)A�)C��G�-6�	�,B�
!
�!
�����t�J�/�/�0�0���[�
�	
�
�
�j�"=�!&�G�	�	5�	5�	5��7�<�<��)A�B�B���w�|�|�H�n�=�=��
�,��
%�
%�	8��%)��,�X�6�6�&8�&8�"�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�"7�!<�!<�!>�!>�		5�		5��G�X���!����J���/��8����J�
���Z��4�4�4�4�		5�		5s�="D+�+D/�2D/N)r2r3r4r�rUrrr�r�os#������=5�=5�=5�=5�=5rr�c��eZdZd�ZdS)�TestPEP517Supportc��dtjd��tjd��tjd��tjd��d�i}|�t|����j}|d}|�td����}|�|jdd	|�
��dS)N�test_pep517zS                        sphinx
                        iso8601
                    z�                        #!/usr/bin/env python
                        import setuptools
                        setuptools.setup(pbr=True)
                    a7                        [metadata]
                        name = test_pep517
                        summary = A tiny test project
                        author = PBR Team
                        author-email = foo@example.com
                        home-page = https://example.com/
                        classifier =
                            Intended Audience :: Information Technology
                            Intended Audience :: System Administrators
                            License :: OSI Approved :: Apache Software License
                            Operating System :: POSIX :: Linux
                            Programming Language :: Python
                            Programming Language :: Python :: 2
                            Programming Language :: Python :: 2.7
                            Programming Language :: Python :: 3
                            Programming Language :: Python :: 3.6
                            Programming Language :: Python :: 3.7
                            Programming Language :: Python :: 3.8
                    z�                        [build-system]
                        requires = ["pbr", "setuptools>=36.6.0", "wheel"]
                        build-backend = "pbr.build"
                    )r.rnrozpyproject.toml�PEP517)r!rYz--no-isolationrFr�)r�r�rArlr�rTrrb)rr�r�r�r�s     r�test_pep_517_supportz&TestPEP517Support.test_pep_517_support�s���
�(0��9�)�)�
!)��1�!�!�
"*��2�"�"�('/�o�7�'�'�?#�#�&
��N�?�?�>�$�#7�#7�8�8�E���=�)�����t�H�~�~�.�.��	
�
�
�d�k�#I�!&�G�	�	5�	5�	5�	5�	5rN)r2r3r4rrUrrr�r��s#������45�45�45�45�45rr�c�0��eZdZ�fd�Zd�Zd�Zd�Z�xZS)�TestRepositoryURLDependenciesc�r��tt|�����tj�t
j��d��|_t|jd��5}|�
d�gd�����ddd��dS#1swxYwYdS)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
rrr#r)rJr2r3r5r%rK)rrQrs  �rrz#TestRepositoryURLDependencies.setUp�s����
�+�T�2�2�8�8�:�:�:��G�L�L��)9�);�);�);�=�=���
�$�#�S�
)�
)�	.�Q�
�G�G�D�I�I�,�,�,�-�-�
.�
.�
.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	.�	.s�4+B,�,B0�3B0c	��gd�}gd�}t|��D]?\}}|�||tjdtj|�����@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.4r�foo-bar>=1.2.4)/zegg=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.3�egg=Projzegg=Proj-0.0.4rzegg=foo-bar-1.2.4zegg=([^&]+).*$)�	enumerater�rD�subr�egg_fragment)rrU�tests�indexr�s     r�test_egg_fragmentz/TestRepositoryURLDependencies.test_egg_fragments���0
�0
�0
��b0
�0
�0
��b%�U�+�+�	+�	+�K�E�4����X�e�_��V�$5�$-�$:�$(�*�*�
+�
+�
+�
+�	+�	+rc�j�tj|jg��}|�gd�|��dS)N)zoslo.messaging>=1.0.0-rcr
rrrrzOdjango-thumborize2-beta>=1.0.0-alpha-a.b-c-somethinglong+build.1-aef.1-its-okayrrrrrrrrrrrr
r)rr*r5r��rr6s  r� test_parse_repo_url_requirementsz>TestRepositoryURLDependencies.test_parse_repo_url_requirementsnsN���-�t�/@�.A�B�B�����(�(�(�*0�	1�	1�	1�	1�	1rc�j�tj|jg��}|�gd�|��dS)N)zEgit+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=Proj1rz(git+ssh://git.project.org/Proj#egg=Proj3rz8svn+http://svn.project.org/svn/Proj/trunk@2019#egg=Proj5rz+hg+http://hg.project.org/Proj@2019#egg=Projrz6hg+http://hg.project.org/Proj@special_feature#egg=Projr	)rror5r�r$s  r�$test_parse_repo_url_dependency_linkszBTestRepositoryURLDependencies.test_parse_repo_url_dependency_links~sT���1�4�3D�2E�F�F�����
8�
8�
8�$:@�'	A�	A�	A�	A�	Ar)r2r3r4rr"r%r'r6r7s@rrr�sp�������.�.�.�.�.�4g+�g+�g+�R1�1�1� A�A�A�A�A�A�Arrc��d}	tjd��}tjd��}n#t$rYnwxYw|r|rdtj��vr|�d|��}|�vdtj��vrat	j��D]M\}}}|�d��r2|�d��r|�d��d}n�N|S)	N�SOABI�	MULTIARCH�pypy�-z.pypyz.sorr=)	�	sysconfig�get_config_var�IOError�get_scheme_names�imp�get_suffixesrv�endswithrF)r��archr=r�s    rr�r��s���E�
��(��1�1���'��4�4�����
�
�
���
�����(��(�&�I�$>�$@�$@�@�@� �5�5�$�$�'���}��9�#=�#?�#?�?�?� �,�.�.�	�	�L�F�A�q�� � ��)�)�
�f�o�o�e�.D�.D�
����S�)�)�!�,������Ls�(-�
:�:)4r}�email.errorsr1r#rDr-r2r�rB�unittestr�ImportErrorr�r�rh�	testtoolsrrcrXrr0rr�	pbr.testsrr)rsrJ�__file__r\�Fixturer
r9rTrl�BaseTestCaser�r�r�r��TestCaser�rrr(rSrkrvr�r�rr�rUrr�<module>r>s���R
��������
�
�
�
�	�	�	�	�	�	�	�	�������������������������������K�K�K�K�K���������
�
�
�
��������������������������������������������7�?�?�2�7�<�<��$��d�C�C�D�D��G�G�G�G�G�x��G�G�G�B4�4�4�4�4�H�$�4�4�4�n(�(�(�(�(�8��(�(�(�V>�>�>�>�>�X�%�>�>�>�B?K�?K�?K�?K�?K�t�'8�?K�?K�?K�DC�C�C�C�C�� 1�C�C�C�7�7�7�7�7�$�*;�7�7�7�(1<�1<�1<�1<�1<�$�+�1<�1<�1<�h'�'�'�'�'�9�-�'�'�'�TM�M�M�M�M�D�$5�M�M�M�2=�=�=�=�=��)�=�=�=�=*�=*�=*�=*�=*�D�-�=*�=*�=*�@0H�0H�0H�0H�0H�T�%6�0H�0H�0H�f?�?�?�?�?�t�0�?�?�?�,q9�q9�q9�q9�q9�4�$�q9�q9�q9�h?5�?5�?5�?5�?5�T�.�?5�?5�?5�D55�55�55�55�55��)�55�55�55�pjA�jA�jA�jA�jA�D�$5�jA�jA�jA�Z����s�-�	9�9