HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: sport3497 (1034)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/setuptools/tests/__pycache__/test_egg_info.cpython-310.pyc
o

��h���@s�ddlmZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZddl
Z
ddlmZddlmZddlmZmZmZddlmZd	d
lmZmZd	dlmZGdd
�d
e�Ze
jdd��Z Gdd�d�Z!Gdd�d�Z"dS)�)�annotationsN)�Path)�mock)�path)�errors)�egg_info�manifest_maker�
write_entries)�Distribution�)�contexts�environment)�DALSc@seZdZdS)�EnvironmentN)�__name__�
__module__�__qualname__�rr�I/usr/local/lib/python3.10/dist-packages/setuptools/tests/test_egg_info.pyrsrc
#s��tjdd��E�t��}t��tj�d}t�fdd�|D��|_t	t
tj|j����t
�|jddtdjd	i|j���ii�|VWd�dS1sOwYdS)
Nzsetuptools-test.)�prefix)�home�lib�scripts�datazegg-basec3s"�|]}|tj��|�fVqdS)N)�osr�join)�.0�dirname��env_dirrr�	<genexpr>"s� zenv.<locals>.<genexpr>rz.pydistutils.cfgzR
                [egg_info]
                egg-base = {egg-base}
                r)r�tempdirrr�chmod�stat�S_IRWXU�dict�paths�list�map�mkdir�valuesr�buildr�format)�env�subsrrrr-s(������
"�r-c@sXeZdZed�Zdd�Zed�dd	��Zd
d�Zedd
��Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zd�dd�Zdejd�d�Zd ejd�d!�Zd"ZGd#d$�d$�Zejd%d&d'd(d)d*d+d,d-d.d/eeed0�d1d2��Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Zej�d=ed>�d?d@�dAfedB�d?d@�dfedC�d?d@�dAfed>�dDd?dE�dAfej edF�d?d@�dAdGdH�g�dIdJ��Z!ej�dKedL�dMdNdO�dPdQggfedR�dMdNdO�dPdQggfedS�dMdNdO�dPgdQgfedT�dMdNdO�gdPdQgfedU�dMdNdO�dQgdPgfedV�d?dW�dPgdXgfedC�d?d@�dYggfedZ�dDd?dE�dYggfedL�d[dMdNd\�dPdQggfej d]dMd^d_d`dNdadbdc�gdd�degdfdH�ej edg�dMdhdi�dPgdjgdkdH�ej edl�dMdW�dPggdmdH�ej edn�dMdodYdpidq�dYdrgdsgdtdH�g
�dudv��Z"ej�dKedw�dMdNdO�gdPdQgfedx�dMdNdO�gdPdQgfedy�dMdzdNd{�gd|�gfed}�dMdzdNd{�gd|�gfed~�dMdzdNd{�dPdQgdgfedy�d?d��dgdPdQgfed��d�dMdzdNd��gd|�gfej ed��dMdhdi�dPgdjgdkdH�ej ed��dMd_d`d��dPd�gd�gd�dH�g	�d�d���Z#d�d��Z$d�d��Z%d�d��Z&d�d��Z'd�d��Z(d�d��Z)d�d��Z*d�d��Z+d�d��Z,d�d��Z-d�d�d��Z.d�d��Z/d�S)��TestEggInfoz�
        from setuptools import setup

        setup(
            name='foo',
            py_modules=['hello'],
            entry_points={'console_scripts': ['hi = hello.run']},
            zip_safe=False,
        )
        cCst�|jtd�d��dS)NzO
                def run():
                    print('hello')
                )�setup.pyzhello.py)rr+�setup_scriptr)�selfrrr�_create_project?s��zTestEggInfo._create_project�pkg_info_lines�	list[str]�return�tuple[int, int]cCs6|d�d�d}tt|�d�dd��\}}||fS)Nr� r�.�)�splitr(�int)r4�version_str�major�minorrrr�_extract_mv_versionJszTestEggInfo._extract_mv_versionc	Cs�tj�|jdd�}t�}t|�}|��|�|�t|ddd��}|�	�}Wd�n1s0wYd|vs;J�d|vsAJ�d	|vsGJ�d
}|�
||�dS)z�
        When the egg_info section is empty or not present, running
        save_version_info should add the settings to the setup.cfg
        in a deterministic order.
        r�	setup.cfg�r�utf-8��encodingN�
[egg_info]�tag_build =�tag_date = 0��	tag_build�tag_date)rrrr&r
r�initialize_options�save_version_info�open�read�_validate_content_order�	r2�
tmpdir_cwdr-�	setup_cfg�dist�ei�f�content�expected_orderrrr�+test_egg_info_save_version_info_setup_emptyPs

�z7TestEggInfo.test_egg_info_save_version_info_setup_emptycCs,d�|�}tjtjB}t�|||�sJ�dS)zY
        Assert that the strings in expected appear in content
        in order.
        z.*N)r�re�	MULTILINE�DOTALL�search)rW�expected�pattern�flagsrrrrPjs
z#TestEggInfo._validate_content_orderc	Cs�tj�|jdd�}t�|td�i�t�}t|�}|��|�	|�t
|ddd��}|��}Wd�n1s9wYd|vsDJ�d	|vsJJ�d
|vsPJ�d}|�||�dS)z�
        When running save_version_info on an existing setup.cfg
        with the 'default' values present from a previous run,
        the file should remain unchanged.
        rrAzU
            [egg_info]
            tag_build =
            tag_date = 0
            rBrCrDNrFrGrHrI)
rrrr&r+rr
rrLrMrNrOrPrQrrr�.test_egg_info_save_version_info_setup_defaultsts$��	

�z:TestEggInfo.test_egg_info_save_version_info_setup_defaultscCs:|��|�||�t�d�}gd�}t|�|ksJ�dS)N�foo.egg-info)�PKG-INFO�SOURCES.txtzdependency_links.txt�entry_points.txtznot-zip-safez
top_level.txt)r3�_run_egg_info_commandr�listdir�sorted)r2rRr-�actualr^rrr�test_expected_files_produced�s

z(TestEggInfo.test_expected_files_producedc	
Cs�t�}t|�}tjdtd�d�}tjddd�}|�F|�+ddl}d}tj|jj	|d��|�
�Wd�n1s;wYWd�n1sJwYWd�dSWd�dS1sbwYdS)	Nzos.utime�TEST)�side_effectz+setuptools.command.egg_info.egg_info.mkpath)�
return_valrz,Cannot update time stamp of directory 'None'��match)r
rr�patch�OSError�distutils.errors�pytest�raisesr�DistutilsFileError�run)	r2rRr-rTrU�utime_patch�mkpath_patch�	distutils�msgrrr�test_handling_utime_error�s�
��P�z%TestEggInfo.test_handling_utime_errorcCsntd�}td�}t�||d��t�t��}|�||�Wd�n1s&wYd|jjdvs5J�dS)Nzp
            [metadata]
            name=foo
            version=0.0.1
            license=file:MIT
            zK
            from setuptools import setup

            setup()
            �r0rA�
ValueErrorr)	rrr+rsrt�AssertionErrorrf�value�args)r2rRr-�setup_configr1�excrrr�test_license_is_a_string�s�	���z$TestEggInfo.test_license_is_a_stringcCsR|��|�||�tj�d�}t�d�|�||�tj�d�}||ks'J�dS)z9Ensure timestamps are updated when the command is re-run.rbg����MbP?N)r3rfrr�getmtime�time�sleep)r2rRr-�timestamp_a�timestamp_brrr�test_rebuilt�s
zTestEggInfo.test_rebuiltcCs�|��t�td�ddid��|�||�tj�dd�}tj�|d�}t|dd	��}d
|���	d�vs6J�Wd�dS1sAwYdS)Nz:
                recursive-include docs *.rst
            z	usage.rstzRun 'hi')�MANIFEST.in�docsr9rbrdrCrDzdocs/usage.rst�
�
r3rr+rrfrrrNrOr;)r2rRr-�egg_info_dir�sources_txtrVrrr�test_manifest_template_is_read�s���
"�z*TestEggInfo.test_manifest_template_is_readFcCs4td�|rdn|}|r|nd}t�||d��dS)Nzi
            from setuptools import setup

            setup(name='foo', zip_safe=False, %s)
            �r|)rrr+)r2�requires�
use_setup_cfgr1r�rrr�_setup_script_with_requires�s�
��z'TestEggInfo._setup_script_with_requireszpython_version<'r�'zpython_version < "�"z<=>++c@seZdZedd��ZdS)zTestEggInfo.RequiresTestHelpercs�g}g}|D]m}|���dd�}|�d��d�}t|�dkr*|d��}t�|�}ni}|d��}	�fdd�|D�\}
}}|	|
df|	d	|d
ffD](\}
}}|�|
�d}|�d�re|d
d�}t	j
j}|�t	j|||||d��qJqt	j
j
d||d�S)Nz

�rr�rcs g|]}t|�jdi����qS)r)rr,)r�a��format_dictrr�
<listcomp>s�z>TestEggInfo.RequiresTestHelper.parametrize.<locals>.<listcomp>F�
_in_setup_cfgTrz@xfail
�)�marks)r�r��expected_requires�install_cmd_kwargs)�ids)�lstripr;�pop�len�strip�ast�literal_eval�append�
startswithrs�mark�xfail�param�parametrize)�	test_listr��idlist�	argvalues�test�test_params�name_kwargs�valr��name�setup_py_requires�setup_cfg_requiresr��id_r��use_cfgr�rr�rr�sH
��

����z*TestEggInfo.RequiresTestHelper.parametrizeN)rrr�staticmethodr�rrrr�RequiresTestHelpersr�z�
        install_requires_deterministic

        install_requires=["wheel>=0.5", "pytest"]

        [options]
        install_requires =
            wheel>=0.5
            pytest

        wheel>=0.5
        pytest
        z�
        install_requires_ordered

        install_requires=["pytest>=3.0.2,!=10.9999"]

        [options]
        install_requires =
            pytest>=3.0.2,!=10.9999

        pytest!=10.9999,>=3.0.2
        z�
        install_requires_with_marker

        install_requires=["barbazquux;{mismatch_marker}"],

        [options]
        install_requires =
            barbazquux; {mismatch_marker}

        [:{mismatch_marker_alternate}]
        barbazquux
        z�
        install_requires_with_extra
        {'cmd': ['egg_info']}

        install_requires=["barbazquux [test]"],

        [options]
        install_requires =
            barbazquux [test]

        barbazquux[test]
        a
        install_requires_with_extra_and_marker

        install_requires=["barbazquux [test]; {mismatch_marker}"],

        [options]
        install_requires =
            barbazquux [test]; {mismatch_marker}

        [:{mismatch_marker_alternate}]
        barbazquux[test]
        z�
        setup_requires_with_markers

        setup_requires=["barbazquux;{mismatch_marker}"],

        [options]
        setup_requires =
            barbazquux; {mismatch_marker}

        z�
        extras_require_with_extra
        {'cmd': ['egg_info']}

        extras_require={{"extra": ["barbazquux [test]"]}},

        [options.extras_require]
        extra = barbazquux [test]

        [extra]
        barbazquux[test]
        aF
        extras_require_with_extra_and_marker_in_req

        extras_require={{"extra": ["barbazquux [test]; {mismatch_marker}"]}},

        [options.extras_require]
        extra =
            barbazquux [test]; {mismatch_marker}

        [extra]

        [extra:{mismatch_marker_alternate}]
        barbazquux[test]
        z�
        extras_require_with_marker

        extras_require={{":{mismatch_marker}": ["barbazquux"]}},

        @xfail
        [options.extras_require]
        :{mismatch_marker} = barbazquux

        [:{mismatch_marker}]
        barbazquux
        a(
        extras_require_with_marker_in_req

        extras_require={{"extra": ["barbazquux; {mismatch_marker}"]}},

        [options.extras_require]
        extra =
            barbazquux; {mismatch_marker}

        [extra]

        [extra:{mismatch_marker_alternate}]
        barbazquux
        z�
        extras_require_with_empty_section

        extras_require={{"empty": []}},

        [options.extras_require]
        empty =

        [empty]
        )�invalid_marker�mismatch_marker�mismatch_marker_alternatecCs�|�||�|j||fi|��tj�dd�}tj�|d�}tj�|�r?t|dd��}	|	��}
Wd�n1s9wYnd}
|
��|ksIJ�t	�	tj�|j
dd��gksZJ�dS)	Nr9rbzrequires.txtrCrDr�r�barbazquux*)r�rfrrr�existsrNrOr��globr&)r2rRr-r�r�r�r�r��requires_txt�fp�install_requiresrrr�
test_requires9s
��&zTestEggInfo.test_requirescCsJd}|�|�t�t��|�||�Wd�dS1swYdS)z�
        Packages that pass unordered install_requires sequences
        should be rejected as they produce non-deterministic
        builds. See #458.
        z0install_requires={"fake-factory==0.5.2", "pytz"}N)r�rsrtr~rf)r2rRr-�reqrrr�*test_install_requires_unordered_disallowed�s

"�z6TestEggInfo.test_install_requires_unordered_disallowedcC�xd}|j|jd�}|�|�t�t��|�||�Wd�n1s$wYt�tj	�
|jdd��gks:J�dS)Nz/extras_require={{":{marker}": ["barbazquux"]}},��markerrr��r,r�r�rsrtr~rfr�rrrr&�r2rRr-�tmplr�rrr�'test_extras_require_with_invalid_marker��
�&z3TestEggInfo.test_extras_require_with_invalid_markercCr�)Nz5extras_require={{"extra": ["barbazquux; {marker}"]}},r�rr�r�r�rrr�.test_extras_require_with_invalid_marker_in_req�r�z:TestEggInfo.test_extras_require_with_invalid_marker_in_reqcCs�|�d�tj��j|jdd�}tjdgtj�	|jdt
|�g�d|d�tj�	dd	�}ttj�	|d
�dd��}|�
��d
�}Wd�n1sJwYd|vsUJ�d|vs[J�dS)Nz*extras_require={"foobar": ["barbazquux"]},r��HOMErrr��cmd�pypath�data_streamr-r9rbrcrCrDr�zProvides-Extra: foobar�Metadata-Version: 2.4�r�r�environ�copy�updater&r
�run_setup_py�pathsepr�strrrNrOr;�r2rRr-r�r�r�r4rrr�test_provides_extra�s 

���zTestEggInfo.test_provides_extracCs�|�d�tj��j|jdd�}tjdgtj�	|jdt
|�g�d|d�tj�	dd	�}ttj�	|d
�dd��}|�
�}Wd�n1sGwYd
|vsRJ�dS)Nz0install_requires=["spam ; python_version<'3.6'"]rr�rrrr�r9rbrcrCrDzProvides-Extra:)r�rr�r�r�r&r
r�r�rr�rrNrO)r2rRr-r�r�r��
pkg_info_textrrr�test_doesnt_provides_extras"�
��
�z&TestEggInfo.test_doesnt_provides_extra)�files�license_in_sourcesz}
                              [metadata]
                              license_file = LICENSE
                              zTest license)rA�LICENSETz�
                              [metadata]
                              license_file = INVALID_LICENSE
                              z
                              zexclude LICENSE)rAr�r�z�
                              [metadata]
                              license_file = LICEN[CS]E*
                              �glob_pattern)�idcCs�|��t�|�tjdgtj�|jdt	|�g�d�tj�dd�}t
|d�jdd�}|r6d	|vs4J�dSd	|vs<J�d
|vsBJ�dS)Nrr�r�r�r9rbrdrCrDr��INVALID_LICENSE)r3rr+r
r�rr�rr&r�r�	read_text)r2rRr-r�r�r��sources_textrrr�test_setup_cfg_license_file!sB
�z'TestEggInfo.test_setup_cfg_license_file)r��
incl_licenses�
excl_licensesz�
                              [metadata]
                              license_files =
                                  LICENSE-ABC
                                  LICENSE-XYZ
                              �ABC license�XYZ license)rA�LICENSE-ABC�LICENSE-XYZr�r�z�
                              [metadata]
                              license_files = LICENSE-ABC, LICENSE-XYZ
                              z�
                              [metadata]
                              license_files =
                                  LICENSE-ABC
                              zv
                              [metadata]
                              license_files =
                              z�
                              [metadata]
                              license_files = LICENSE-XYZ
                              z�
                              [metadata]
                              license_files =
                                  LICENSE-ABC
                                  INVALID_LICENSE
                              )rAr�r�r�z~
                              [metadata]
                              license_files = LICENSE
                              zexclude LICENSE-XYZ)rAr�r�r�r�zABC copyingz
ABC noticezABC authors�LicensezInvalid license)rAr��COPYING-ABC�
NOTICE-ABC�AUTHORS-ABC�LICENCE-XYZr��INVALID-LICENSE)r�r�r�r�r�r�r��default_glob_patternsz�
                              [metadata]
                              license_files =
                                  LICENSE*
                              z
XYZ notice)rAr��
NOTICE-XYZr��no_default_glob_patternsz�
                              [metadata]
                              license_files =
                                  LICENSE-ABC
                                  LICENSE*
                              �files_only_added_oncez�
                              [metadata]
                              license_files = **/LICENSE
                              z
Don't include�Vendor license)rAr��
LICENSE-OTHER�vendorzvendor/LICENSEr��recursive_globc
C�|��t�|�tjdgtj�|jdt	|�g�d�tj�dd�}t
|d�jdd�}d	d
�|��D�}|D]}	|�
|	�dksBJ�q7|D]}	|�
|	�dksPJ�qEdS)
Nrrr�r9rbrdrCrDcS�g|]}|���qSr�r��r�linerrrr�Q�z<TestEggInfo.test_setup_cfg_license_files.<locals>.<listcomp>rr�r3rr+r
r�rr�rr&r�rr��
splitlines�count�
r2rRr-r�r�r�r�r��
sources_lines�lfrrr�test_setup_cfg_license_filesusS
��z(TestEggInfo.test_setup_cfg_license_filesz�
                              [metadata]
                              license_file =
                              license_files =
                              z�
                              [metadata]
                              license_file =
                                  LICENSE-ABC
                                  LICENSE-XYZ
                              a
                              [metadata]
                              license_file = LICENSE-ABC
                              license_files =
                                  LICENSE-XYZ
                                  LICENSE-PQR
                              zPQR license)rAr��LICENSE-PQRr�)r�rr�a9
                              [metadata]
                              license_file = LICENSE-ABC
                              license_files =
                                  LICENSE-ABC
                                  LICENSE-XYZ
                                  LICENSE-PQR
                              z�
                              [metadata]
                              license_file = LICENSE-ABC
                              license_files =
                                  LICENSE-XYZ
                              r)rAra
                              [metadata]
                              license_file = LICENSE-ABC
                              license_files =
                                LICENSE-PQR
                                LICENSE-XYZ
                              z'exclude LICENSE-ABC
exclude LICENSE-PQR)rAr�r�rr�z~
                              [metadata]
                              license_file = LICENSE*
                              z�
                              [metadata]
                              license_file = LICENSE*
                              license_files =
                                NOTICE*
                              )rAr�r�r�r�r��combined_glob_patterrnsc
Cr)
Nrrr�r9rbrdrCrDcSrrrrrrrr�	rzITestEggInfo.test_setup_cfg_license_file_license_files.<locals>.<listcomp>rrrr
rrr�)test_setup_cfg_license_file_license_filesYs'
��z5TestEggInfo.test_setup_cfg_license_file_license_filesc	Cs
|��t�td�ddddddid��tjd	gtj�|j	d
t
|�g�d�tj�dd
�}ttj�|d�dd��}|���
d�}Wd�n1sKwYdd�|D�}t|�dks_J�d|dksgJ�d|dd�vsqJ�d|dd�vs{J�d|dvs�J�dS)zCAll matched license files should have a corresponding License-File.z�
                              [metadata]
                              license_files =
                                  NOTICE*
                                  LICENSE*
                                  **/LICENSE
                              r�r��includedznot includer�r�)rAr�r��NOTICE�IGNOREr�rrr�r9rbrcrCrDr�NcSsg|]	}|�d�r|�qS)z
License-File:)r�rrrrr�,s

��z?TestEggInfo.test_license_file_attr_pkg_info.<locals>.<listcomp>�zLicense-File: NOTICErzLicense-File: LICENSE-ABCrzLicense-File: LICENSE-XYZzLicense-File: vendor/LICENSEr�)r3rr+rr
r�rr�rr&r�rNrOr;r�)r2rRr-r�r�r4�license_file_linesrrr�test_license_file_attr_pkg_infos6�	����z+TestEggInfo.test_license_file_attr_pkg_infocCs�|�d�tjdgtj�|jdt|�g�dd�tj�dd�}t	tj�|d�d	d
��}|�
��d�}Wd�n1s=wY|�|�d
ksKJ�dS)z5Make sure latest metadata version is used by default.r�rrr�r�r�r�r9rbrcrCrDr�N)r:r)
r�r
r�rr�rr&r�rrNrOr;r@�r2rRr-r�r�r4rrr�test_metadata_version8s
��z!TestEggInfo.test_metadata_versioncCs�|�d�tj��j|jdd�}tjdgtj�	|jdt
|�g�d|d�tj�	dd	�}ttj�	|d
�dd��}|�
��d
�}Wd�n1sJwYd}||vsWJ�d|vs]J�dS)Nz.long_description_content_type='text/markdown',rr�rrrr�r9rbrcrCrDr�z'Description-Content-Type: text/markdownr�r��r2rRr-r�r�r�r4�
expected_linerrr�"test_long_description_content_typeFs&�
���z.TestEggInfo.test_long_description_content_typecCs�|�d�tjdgtj�|jdt|�g�dd�tj�dd�}t	tj�|d�d	d
��}|�
��d�}Wd�n1s=wYd|vsHJ�d
|dksPJ�||�d
�d�}d|vs_J�d|vseJ�dS)Nzqlong_description='This is a long description\nover multiple lines',long_description_content_type='text/markdown',rrrrr9rbrcrCrDr�r�r����zThis is a long descriptionzover multiple lines)
r�r
r�rr�rr&r�rrNrOr;�index)r2rRr-r�r�r4�long_desc_linesrrr�test_long_descriptionas"���z!TestEggInfo.test_long_descriptioncCs�|�d�tj��j|jdd�}tjdgtj�	|jdt
|�g�d|d�tj�	dd	�}ttj�	|d
�dd��}|�
��d
�}Wd�n1sJwYd}||vsWJ�d}||vs_J�|�|�dkshJ�dS)Nz�project_urls={
                'Link One': 'https://example.com/one/',
                'Link Two': 'https://example.com/two/',
                },rr�rrrr�r9rbrcrCrDr�z/Project-URL: Link One, https://example.com/one/z/Project-URL: Link Two, https://example.com/two/�rr:�r�rr�r�r�r&r
r�r�rr�rrNrOr;r@rrrr�test_project_urlsxs*�
���zTestEggInfo.test_project_urlscCs�|�d�tjdgtj�|jdt|�g�dd�tj�dd�}t	tj�|d�d	d
��}|�
��d�}Wd�n1s=wYd
|vsHJ�dS)zTest single line license.zlicense='MIT',rrrrr9rbrcrCrDr�NzLicense: MIT�r�r
r�rr�rr&r�rrNrOr;rrrr�test_license�s
��zTestEggInfo.test_licensecCs�|�d�tjdgtj�|jdt|�g�dd�tj�dd�}t	tj�|d�d	d
��}|�
��d�}Wd�n1s=wYd
|vsHJ�d|vsNJ�dd�|�vsWJ�dS)z:Test license is escaped correctly if longer than one line.z<license='This is a long license text \nover multiple lines',rrrrr9rbrcrCrDr�Nz%License: This is a long license text z        over multiple linesztext 
        over multipler$rrrr�test_license_escape�s���zTestEggInfo.test_license_escapecCs�|�d�tj��j|jdd�}tjdgtj�	|jdt
|�g�d|d�tj�	dd	�}ttj�	|d
�dd��}|�
��d
�}Wd�n1sJwYd|vsUJ�|�|�dks^J�dS)Nzpython_requires='>=2.7.12',rr�rrrr�r9rbrcrCrDr�zRequires-Python: >=2.7.12r!r"r�rrr�test_python_requires_egg_info�s 

���z)TestEggInfo.test_python_requires_egg_infocCs$ddg}|D]	}t�|�sJ�qdS)Nz:standard file not found: should have one of foo.py, bar.pyz"standard file 'setup.py' not found)r�_should_suppress_warning)r2�fixturesrzrrr�'test_manifest_maker_warning_suppression�s��z3TestEggInfo.test_manifest_maker_warning_suppressioncCs�|��tddd��}d|_t|�}|��|��d|jjvs"J�t|jddd��}|�	��
d	�}d|vs9J�Wd�dS1sDwYdS)
N�foo�0.0.1�r��versionznon_setup.pyr0z/SOURCES.txtrCrDr�)r3r
�script_namer�finalize_optionsrv�filelistr�rNrOr;)r2rRrT�egg_info_instancerV�sourcesrrr�test_egg_info_includes_setup_py�s"�z+TestEggInfo.test_egg_info_includes_setup_pyNcCsvtj��j|jdd�}|durdg}tj|tj�|jdt	|�g�d|d�\}}|r/J|��|r7||vs9J�dSdS)Nrr�rrrr�)
rr�r�r�r&r
r�r�rr�)r2rRr-r��outputr��coderrrrrf�s"
��
��z!TestEggInfo._run_egg_info_commandcCs�|��t�dtd�i�|�||�tj�dd�}ttj�|d�dd��}|���	d�}Wd�n1s7wYd	|vsBJ�dS)
NrAz�
                              [egg_info]
                              tag_build = dev
                              tag_date = 0
                              tag_svn_revision = 0
                              r9rbrcrCrDr�zVersion: 0.0.0.dev0r�rrrr�test_egg_info_tag_only_once�s��
�z'TestEggInfo.test_egg_info_tag_only_once)r4r5r6r7)F)NN)0rrrrr1r3r�r@rYrPrarjr{r�r�r�r��sys�version_infor�r�r�r�r�r�r�r�r�r�r�rsr�r�r�r
rrrrr r#r%r&r'r*r4rfr7rrrrr/1s��

	#!
.

��
��	���	������
�
��	���
A�����
������
���
�������
��
�����
�������������
P�����
��	���
������	�
��	����
���
����
$' 
	
r/c@seZdZdd�Zdd�ZdS)�TestWriteEntriescCs�tddd��}ddi|_|�d�}d}tjtjtf|d��"}t|dd	�d
|j	j
dvs.J�dt|j	�vs7J�Wd�dS1sBwYdS)
Nr+r,r-zfoo = invalid-identifier:foorz,(Invalid object reference|Problems to parse)rn�entry_pointsrez#ensure entry-point follows the specrzinvalid-identifier)r
r;�get_command_objrsrtr�OptionErrorr}r	rr�r�)r2rRr-rTr��expected_msg�exrrr�test_invalid_entry_points

"�z)TestWriteEntries.test_invalid_entry_pointcCs^tddd��}ddgd�|_|�d�}t|dd	�td	�jd
d�}d|vs'J�d
|vs-J�dS)Nr+r,r-z
foo = bar:bazz
faa = bor:boz)�abc�defrr;rerCrDz[abc]
foo = bar:baz
z[def]
faa = bor:boz
)r
r;r<r	rr�)r2rRr-rTr�rWrrr�test_valid_entry_points�
z'TestWriteEntries.test_valid_entry_pointN)rrrr@rCrrrrr:s
r:)#�
__future__rr�r�rrZr#r8r��pathlibr�unittestrrs�jaracor�
setuptoolsr�setuptools.command.egg_inforrr	�setuptools.distr
r�rr
�textwraprr�r�fixturer-r/r:rrrr�<module>s>
]