§
    °³Ùgr)  ã                   óž  — 	 d dl Z n# e$ r d dlZ Y nw xY wd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d„ Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d	„ d
ej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        ZdS )é    N)Úbase)Úutilc                 ó´  — i }t          j        | ¦  «        } t          j        dk    r;t	          j        ¦   «         }|                     t          j        | ¦  «        ¦  «         n:t	          j	        ¦   «         }| 
                    t          j        | ¦  «        ¦  «         |                     ¦   «         D ]'}t          |                     |¦  «        ¦  «        ||<   Œ(|S )N)é   é   )ÚtextwrapÚdedentÚsysÚversion_infoÚconfigparserÚConfigParserÚ	read_fileÚioÚStringIOÚSafeConfigParserÚreadfpÚsectionsÚdictÚitems)ÚiniÚconfigÚparserÚsections       úI/granary/edev/quantum/lib/python3.11/site-packages/pbr/tests/test_util.pyÚconfig_from_inir      sº   € Ø€FÝ
Œ/˜#Ñ
Ô
€CÝ
Ô˜6Ò!Ð!ÝÔ*Ñ,Ô,ˆØ×Ò�œ SÑ)Ô)Ñ*Ô*Ð*Ð*åÔ.Ñ0Ô0ˆØ�Š•b”k #Ñ&Ô&Ñ'Ô'Ð'Ø—?’?Ñ$Ô$ð 6ð 6ˆÝ˜vŸ|š|¨GÑ4Ô4Ñ5Ô5ˆˆw‰ˆØ€Mó    c                   ó   — e Zd Zd„ ZdS )Ú
TestBasicsc                 óJ  — d | _         d}i dd“dd“dd“dd	“d
d“dd“dd“dd“dd“dd“dddg“ddg“dd“dddg“d d!g“d"d#“d$d%g“d&gd'gi d(d)idgd*d+gd,gd-œd.gd/d0d1gfd2d3gfgd4gd5gd6œ
¥}t          |¦  «        }t          j        |¦  «        }|                      ||¦  «         d S )7NaÈ  
            [metadata]
            name = foo
            version = 1.0
            author = John Doe
            author_email = jd@example.com
            maintainer = Jim Burke
            maintainer_email = jb@example.com
            home_page = http://example.com
            summary = A foobar project.
            description = Hello, world. This is a long description.
            download_url = http://opendev.org/x/pbr
            classifier =
                Development Status :: 5 - Production/Stable
                Programming Language :: Python
            platform =
                any
            license = Apache 2.0
            requires_dist =
                Sphinx
                requests
            setup_requires_dist =
                docutils
            python_requires = >=3.6
            provides_dist =
                bax
            provides_extras =
                bar
            obsoletes_dist =
                baz

            [files]
            packages_root = src
            packages =
                foo
            package_data =
                "" = *.txt, *.rst
                foo = *.msg
            namespace_packages =
                hello
            data_files =
                bitmaps =
                    bm/b1.gif
                    bm/b2.gif
                config =
                    cfg/data.cfg
            scripts =
                scripts/hello-world.py
            modules =
                mod1
            ÚnameÚfooÚversionz1.0ÚauthorzJohn DoeÚauthor_emailzjd@example.comÚ
maintainerz	Jim BurkeÚmaintainer_emailzjb@example.comÚurlzhttp://example.comÚdescriptionzA foobar project.Úlong_descriptionz)Hello, world. This is a long description.Údownload_urlzhttp://opendev.org/x/pbrÚclassifiersz+Development Status :: 5 - Production/StablezProgramming Language :: PythonÚ	platformsÚanyÚlicensez
Apache 2.0Úinstall_requiresÚSphinxÚrequestsÚsetup_requiresÚdocutilsÚpython_requiresz>=3.6ÚprovidesÚbaxÚbarÚbazÚ Úsrcz*.txt,z*.rstz*.msg)r9   r!   ÚhelloÚbitmapsz	bm/b1.gifz	bm/b2.gifr   zcfg/data.cfgzscripts/hello-world.pyÚmod1)
Úprovides_extrasÚ	obsoletesÚextras_requireÚpackage_dirÚpackagesÚpackage_dataÚnamespace_packagesÚ
data_filesÚscriptsÚ
py_modules)ÚmaxDiffr   r   Úsetup_cfg_to_setup_kwargsÚassertDictEqual)ÚselfÚconfig_textÚexpectedr   Úactuals        r   Útest_basicszTestBasics.test_basics.   s­  € ØˆŒð2ˆðf)
Ø�Fð)
à�vð)
ð �kð)
ð Ð-ð	)
ð
 ˜,ð)
ð Ð 1ð)
ð Ð(ð)
ð Ð/ð)
ð Ð Lð)
ð Ð7ð)
ð Ø>Ø1ðð)
ð ˜&˜ð)
ð  �}ð!)
ð" ØØð!ð#)
ð* ˜{˜mð+)
ð, ˜xð-)
ð. ˜˜ð/)
ð0 !'˜xØ ˜Ø à ˜<Ø˜à˜wÐ'Ø�yðð ð $, *à˜[¨+Ð6Ð7Ø˜NÐ+Ð,ðð 2Ð2Ø"˜)ðQ)
ð )
ð )
ˆõT ! Ñ-Ô-ˆÝÔ/°Ñ7Ô7ˆØ×Ò˜X vÑ.Ô.Ð.Ð.Ð.r   N)Ú__name__Ú
__module__Ú__qualname__rO   © r   r   r   r   ,   s(   € € € € € ða/ð a/ð a/ð a/ð a/r   r   c                   ó`   — e Zd Zddddgddgdgdgdœd	œfd
dddgddgdœd	œfddi d	œfgZd„ ZdS )Ú!TestExtrasRequireParsingScenariosÚsimple_extraszÅ
                [extras]
                first =
                    foo
                    bar==1.0
                second =
                    baz>=3.2
                    foo
                r!   zbar==1.0zbaz>=3.2zrequests-mockÚordereddict)ÚfirstÚsecondÚtestútest:(python_version=='2.6'))rL   Úexpected_extra_requiresÚwith_markerszè
                [extras]
                test =
                    foo:python_version=='2.6'
                    bar
                    baz<1.6 :python_version=='2.6'
                    zaz :python_version>'1.0'
                zbaz<1.6r7   Úzaz)r[   rZ   Ú	no_extraszG
            [metadata]
            long_description = foo
            c                 ó˜   — t          | j        ¦  «        }t          j        |¦  «        }|                      | j        |d         ¦  «         d S )Nr@   )r   rL   r   rI   ÚassertEqualr\   ©rK   r   Úkwargss      r   Útest_extras_parsingz5TestExtrasRequireParsingScenarios.test_extras_parsing»   sR   € Ý  Ô!1Ñ2Ô2ˆÝÔ/°Ñ7Ô7ˆà×Ò˜Ô5ØÐ 0Ô1ñ	3ô 	3ð 	3ð 	3ð 	3r   N)rP   rQ   rR   Ú	scenariosrd   rS   r   r   rU   rU   ’   s½   € € € € € ð 
ðð   Ð,Ø% uÐ-Ø(Ð)Ø1>°ð	(ð (ð
ð 
ð 	ð" 
ðð 27¸	Ð0BØ ˜ð((ð ((ð)ð )ð 	*ð 
ðð
 ð
ð 
ð 	ð=%€IðN3ð 3ð 3ð 3ð 3r   rU   c                   ó   — e Zd Zd„ ZdS )ÚTestInvalidMarkersc                 ó^   — dddii}|                       t          t          j        |¦  «         d S )NÚextrasrZ   zfoo :bad_marker>'1.0')ÚassertRaisesÚSyntaxErrorr   rI   )rK   r   s     r   Ú test_invalid_marker_raises_errorz3TestInvalidMarkers.test_invalid_marker_raises_errorÅ   s3   € Ø˜VÐ%<Ð=Ð>ˆØ×Ò�+¥tÔ'EÀvÑNÔNÐNÐNÐNr   N)rP   rQ   rR   rl   rS   r   r   rg   rg   Ã   s(   € € € € € ðOð Oð Oð Oð Or   rg   c                   ó@   — e Zd Zddddddœdœfdd	d
dddœdœfgZd„ ZdS )ÚTestMapFieldsParsingScenariosÚsimple_project_urlsa  
                [metadata]
                project_urls =
                    Bug Tracker = https://bugs.launchpad.net/pbr/
                    Documentation = https://docs.openstack.org/pbr/
                    Source Code = https://opendev.org/openstack/pbr
                zhttps://bugs.launchpad.net/pbr/zhttps://docs.openstack.org/pbr/z!https://opendev.org/openstack/pbr)zBug TrackerÚDocumentationzSource Code)rL   Úexpected_project_urlsÚquery_parametersaG  
                [metadata]
                project_urls =
                    Bug Tracker = https://bugs.launchpad.net/pbr/?query=true
                    Documentation = https://docs.openstack.org/pbr/?foo=bar
                    Source Code = https://git.openstack.org/cgit/openstack-dev/pbr/commit/?id=hash
                z*https://bugs.launchpad.net/pbr/?query=truez'https://docs.openstack.org/pbr/?foo=barz@https://git.openstack.org/cgit/openstack-dev/pbr/commit/?id=hashc                 ó˜   — t          | j        ¦  «        }t          j        |¦  «        }|                      | j        |d         ¦  «         d S )NÚproject_urls)r   rL   r   rI   ra   rq   rb   s      r   Útest_project_url_parsingz6TestMapFieldsParsingScenarios.test_project_url_parsingë   sF   € Ý  Ô!1Ñ2Ô2ˆÝÔ/°Ñ7Ô7ˆà×Ò˜Ô3°V¸NÔ5KÑLÔLÐLÐLÐLr   N)rP   rQ   rR   re   ru   rS   r   r   rn   rn   Ê   s�   € € € € € ð 
ðð  AØ!BØBð&ð &ð!
ð !
ð 	ð 
ðð  LØ!JØað&ð &ð
ð 
ð 	ð€Ið>Mð Mð Mð Mð Mr   rn   c                   ó6   — e Zd Zddg d¢dœfdddgdœfgZd„ Zd	S )
ÚTestKeywordsParsingScenariosÚkeywords_listz‘
                [metadata]
                keywords =
                    one
                    two
                    three
                )ÚoneÚtwoÚthree)rL   Úexpected_keywordsÚinline_keywordszW
                [metadata]
                keywords = one, two, three
                zone, two, threec                 ó˜   — t          | j        ¦  «        }t          j        |¦  «        }|                      | j        |d         ¦  «         d S )NÚkeywords)r   rL   r   rI   ra   r|   rb   s      r   Útest_keywords_parsingz2TestKeywordsParsingScenarios.test_keywords_parsing	  sF   € Ý  Ô!1Ñ2Ô2ˆÝÔ/°Ñ7Ô7ˆà×Ò˜Ô/°¸
Ô1CÑDÔDÐDÐDÐDr   N)rP   rQ   rR   re   r€   rS   r   r   rw   rw   ò   st   € € € € € ð 
ðð "9Ð!8Ð!8ð	
ð 	
ð 
	
ð 
ðð #4Ð!4ð
ð 
ð 	ð€Ið*Eð Eð Eð Eð Er   rw   c                   ó   — e Zd Zd„ ZdS )ÚTestProvidesExtrasc                 óŒ   — d}t          |¦  «        }t          j        |¦  «        }|                      ddg|d         ¦  «         d S )NzX
        [metadata]
        provides_extras = foo
                          bar
        r!   r7   r>   )r   r   rI   ra   )rK   r   r   rc   s       r   Útest_provides_extrasz'TestProvidesExtras.test_provides_extras  sN   € ðˆõ
 ! Ñ%Ô%ˆÝÔ/°Ñ7Ô7ˆØ×Ò˜% ˜¨Ð0AÔ)BÑCÔCÐCÐCÐCr   N)rP   rQ   rR   r„   rS   r   r   r‚   r‚     s(   € € € € € ðDð Dð Dð Dð Dr   r‚   c                   ó.   — e Zd ZdddddgfgdœfgZd„ ZdS )	ÚTestDataFilesParsingrE   zÇ
            [files]
            data_files =
                'i like spaces/' =
                    'dir with space/file with spc 2'
                    'dir with space/file with spc 1'
            zi like spaces/zdir with space/file with spc 2zdir with space/file with spc 1)rL   rE   c                 ó˜   — t          | j        ¦  «        }t          j        |¦  «        }|                      | j        |d         ¦  «         d S )NrE   )r   rL   r   rI   ra   rE   rb   s      r   Ú)test_handling_of_whitespace_in_data_filesz>TestDataFilesParsing.test_handling_of_whitespace_in_data_files-  sE   € Ý  Ô!1Ñ2Ô2ˆÝÔ/°Ñ7Ô7ˆà×Ò˜œ¨&°Ô*>Ñ?Ô?Ð?Ð?Ð?r   N)rP   rQ   rR   re   rˆ   rS   r   r   r†   r†     sd   € € € € € ð 
ðð "Ð$DØ$Dð$Fð Gðð
ð 
ð 	ð€Ið@ð @ð @ð @ð @r   r†   c                   ó   — e Zd Zd„ ZdS )ÚTestUTF8DescriptionFilec                 óJ  — t          j        ¦   «         \  }}d}d}||z  }t          j        |dd¬¦  «        5 }|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   t          |¦  «        }t          j        |¦  «        }|                      ||d         ¦  «         d S )Nz:
        [metadata]
        description_file = %s
        u    UTF8 description: Ã©"â€¦-ÊƒÅ‹'

ÚwÚutf8)Úencodingr)   )	ÚtempfileÚmkstempr   ÚopenÚwriter   r   rI   ra   )	rK   Ú_ÚpathÚini_templateÚunicode_descriptionr   Úfr   rc   s	            r   Útest_utf8_description_filez2TestUTF8DescriptionFile.test_utf8_description_file5  sê   € ÝÔ"Ñ$Ô$‰ˆˆ4ðˆð EÐØ˜TÑ!ˆÝŒW�T˜3¨Ð0Ñ0Ô0ð 	)°AØ�GŠGÐ'Ñ(Ô(Ð(ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)å  Ñ%Ô%ˆÝÔ/°Ñ7Ô7ˆØ×ÒÐ,¨fÐ5GÔ.HÑIÔIÐIÐIÐIs   ·AÁAÁ AN)rP   rQ   rR   r˜   rS   r   r   rŠ   rŠ   4  s(   € € € € € ðJð Jð Jð Jð Jr   rŠ   )r   ÚImportErrorr   r   r�   r   r
   Ú	pbr.testsr   Úpbrr   r   ÚBaseTestCaser   rU   rg   rn   rw   r‚   r†   rŠ   rS   r   r   ú<module>r�      sL  ðð (ØÐÐÐÐøØð (ð (ð (Ø'Ð'Ð'Ð'Ð'Ð'ð(øøøà 	€	€	€	Ø €€€Ø €€€à 
€
€
€
à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ðc/ð c/ð c/ð c/ð c/�Ô"ñ c/ô c/ð c/ðL.3ð .3ð .3ð .3ð .3¨Ô(9ñ .3ô .3ð .3ðbOð Oð Oð Oð O˜Ô*ñ Oô Oð Oð%Mð %Mð %Mð %Mð %M DÔ$5ñ %Mô %Mð %MðPEð Eð Eð Eð E 4Ô#4ñ Eô Eð Eð<	Dð 	Dð 	Dð 	Dð 	D˜Ô*ñ 	Dô 	Dð 	Dð@ð @ð @ð @ð @˜4Ô,ñ @ô @ð @ð0Jð Jð Jð Jð J˜dÔ/ñ Jô Jð Jð Jð Js   ‚ ‡	’