
    cC)                        d dl Z d dlZd dlZd dlZd dlm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y)    N)configparser)base)utilc                    i }t        j                  t        j                  |             } t        j
                  dk\  r9t        j                         }|j                  t        j                  |              n8t        j                         }|j                  t        j                  |              |j                         D ]  }t        |j                  |            ||<   ! |S )N)      )textwrapdedentsixusysversion_infor   ConfigParser	read_fileioStringIOSafeConfigParserreadfpsectionsdictitems)iniconfigparsersections       5/usr/lib/python3/dist-packages/pbr/tests/test_util.pyconfig_from_inir      s    F
//#%%*
%C
6!**,S)*..0bkk#&'??$ 6v||G45w6M    c                       e Zd Zd Zy)
TestBasicsc                 :   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                  |      }| j	                  ||       y )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)r;   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Xv.r   N)__name__
__module____qualname__rQ    r   r   r    r    *   s    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y)!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'))rN   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.6r9   zaz)r]   r\   	no_extraszG
            [metadata]
            long_description = foo
            c                     t        | j                        }t        j                  |      }| j	                  | j
                  |d          y )NrB   )r   rN   r   rK   assertEqualr^   rM   r   kwargss      r   test_extras_parsingz5TestExtrasRequireParsingScenarios.test_extras_parsing   sA     !1!12//755 01	3r   N)rR   rS   rT   	scenariosrf   rU   r   r   rW   rW      s     
  ,%u-()1>	(
 	" 
 27	0B(() 	* 

 
 	=%IN3r   rW   c                       e Zd Zd Zy)TestInvalidMarkersc                 Z    dddii}| j                  t        t        j                  |       y )Nextrasr\   zfoo :bad_marker>'1.0')assertRaisesSyntaxErrorr   rK   )rM   r   s     r    test_invalid_marker_raises_errorz3TestInvalidMarkers.test_invalid_marker_raises_error   s*    V%<=>+t'E'EvNr   N)rR   rS   rT   rn   rU   r   r   ri   ri      s    Or   ri   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y)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)rN   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	                  | j
                  |d          y )Nproject_urls)r   rN   r   rK   rc   rs   rd   s      r   test_project_url_parsingz6TestMapFieldsParsingScenarios.test_project_url_parsing   s=     !1!12//733VN5KLr   N)rR   rS   rT   rg   rw   rU   r   r   rp   rp      sY     
  A!BB&!
 	 
  L!Ja&
 	I>Mr   rp   c                   4    e Zd Zddg ddfdddgdfgZd Zy	)
TestKeywordsParsingScenarioskeywords_listz
                [metadata]
                keywords =
                    one
                    two
                    three
                )onetwothree)rN   expected_keywordsinline_keywordszW
                [metadata]
                keywords = one, two, three
                zone, two, threec                     t        | j                        }t        j                  |      }| j	                  | j
                  |d          y )Nkeywords)r   rN   r   rK   rc   r~   rd   s      r   test_keywords_parsingz2TestKeywordsParsingScenarios.test_keywords_parsing  s=     !1!12//7//
1CDr   N)rR   rS   rT   rg   r   rU   r   r   ry   ry      sD     
 "9	
 
	
 
 #4!4
 	I*Er   ry   c                       e Zd Zd Zy)TestProvidesExtrasc                 v    d}t        |      }t        j                  |      }| j                  ddg|d          y )NzX
        [metadata]
        provides_extras = foo
                          bar
        r#   r9   r@   )r   r   rK   rc   )rM   r   r   re   s       r   test_provides_extrasz'TestProvidesExtras.test_provides_extras  s?    
 !%//7%0A)BCr   N)rR   rS   rT   r   rU   r   r   r   r     s    Dr   r   c                   ,    e Zd ZdddddgfgdfgZd Zy)	TestDataFilesParsingrG   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)rN   rG   c                     t        | j                        }t        j                  |      }| j	                  | j
                  |d          y )NrG   )r   rN   r   rK   rc   rG   rd   s      r   )test_handling_of_whitespace_in_data_filesz>TestDataFilesParsing.test_handling_of_whitespace_in_data_files+  s;     !1!12//7&*>?r   N)rR   rS   rT   rg   r   rU   r   r   r   r     s?     
 "$D$D$F G
 	I@r   r   c                       e Zd Zd Zy)TestUTF8DescriptionFilec                 *   t        j                         \  }}d}d}||z  }t        j                  |dd      5 }|j	                  |       d d d        t        |      }t        j                  |      }| j                  ||d          y # 1 sw Y   ?xY w)Nz:
        [metadata]
        description_file = %s
        u    UTF8 description: é"…-ʃŋ'

wutf8)encodingr+   )	tempfilemkstempr   openwriter   r   rK   rc   )	rM   _pathini_templateunicode_descriptionr   fr   re   s	            r   test_utf8_description_filez2TestUTF8DescriptionFile.test_utf8_description_file3  s    ""$4 ET!WWT30 	)AGG'(	) %//7,f5G.HI		) 	)s   B		BN)rR   rS   rT   r   rU   r   r   r   r   2  s    Jr   r   )r   r   r	   r   	six.movesr   r   	pbr.testsr   pbrr   r   BaseTestCaser    rW   ri   rp   ry   r   r   r   rU   r   r   <module>r      s     
   
 " 
  c/"" c/L.3(9(9 .3bO** O%MD$5$5 %MPE4#4#4 E<	D** 	D@4,, @0Jd// Jr   