a :êdgˆJã@sþddlZddlZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z ddl m Z mZmZmZddlmZddlmZGdd „d e ƒZGd d „d eƒZGd d „d ejejejejƒZGdd„dejejejƒZdd„ZedkrúeeƒƒdS)éN)Úmock)Ú DistributionÚfix_help_options)ÚCommand)ÚTESTFNÚcaptured_stdoutÚcaptured_stderrÚ run_unittest)Úsupport)Úlogc@seZdZdgZdd„ZdS)Ú test_dist)zsample-option=ÚSz help textcCs d|_dS©N)Ú sample_option©Úself©rú5/usr/local/lib/python3.9/distutils/tests/test_dist.pyÚinitialize_optionssztest_dist.initialize_optionsN)Ú__name__Ú __module__Ú __qualname__Z user_optionsrrrrrr sÿr c@seZdZdd„ZdS)ÚTestDistributioncCs|jSr)Ú _config_filesrrrrÚfind_config_files(sz"TestDistribution.find_config_filesN)rrrrrrrrr srcszeZdZ‡fdd„Z‡fdd„Zddd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Z‡ZS)ÚDistributionTestCasecs4tt|ƒ ¡tjtjdd…f|_tjdd…=dS)Né)ÚsuperrÚsetUpÚsysÚargvr©Ú __class__rrr1szDistributionTestCase.setUpcs2|jdt_|jdtjdd…<tt|ƒ ¡dS©Nrr)r rrrÚtearDownrr!rrr$6s zDistributionTestCase.tearDownrcCs tƒ}||_| ¡| ¡|Sr)rrZparse_config_filesÚparse_command_line)rZ configfilesÚdrrrÚcreate_distribution;s z(DistributionTestCase.create_distributioncCs*tj d¡| ¡}| | ¡dg¡dS)NÚbuildúdistutils.command)rr Úappendr'Ú assertEqualÚget_command_packages)rr&rrrÚ!test_command_packages_unspecifiedBs z6DistributionTestCase.test_command_packages_unspecifiedcCs`ddlm}tj gd¢¡| ¡}| | ¡gd¢¡| d¡}|  ||¡| |j d¡dS)Nr)r )ú--command-packageszfoo.bar,distutils.testsr z -Ssometext)r)úfoo.barzdistutils.testsr Zsometext) Zdistutils.tests.test_distr rr Úextendr'r+r,Zget_command_objÚassertIsInstancer)rr r&ÚcmdrrrÚtest_command_packages_cmdlineGs  ÿ  z2DistributionTestCase.test_command_packages_cmdlinec Csxtj d¡| tjt¡d}ttdƒ"}td  |¡|dWdƒn1sP0Yt j j tddd}|  tg¡}Wdƒn1sŽ0Yt|f}|||||||||||||dœ }| t|j d¡ ¡ƒt| ¡ƒ¡|j d¡ ¡D]\}}| |||¡qôt j j tdd d}|  tg¡}Wdƒn1sD0Y| ¡D]}| ||j di¡¡qVdS) NÚinstallz/somedirÚwzð[install] install-base = {0} install-platbase = {0} install-lib = {0} install-platlib = {0} install-purelib = {0} install-headers = {0} install-scripts = {0} install-data = {0} prefix = {0} exec-prefix = {0} home = {0} user = {0} root = {0}©Úfilez/a)ÚprefixÚ base_prefix) Z install_baseZinstall_platbaseZ install_libZinstall_platlibZinstall_purelibZinstall_headersZinstall_scriptsZ install_datar8Ú exec_prefixÚhomeÚuserÚrootz/b)rr r*Ú addCleanupÚosÚunlinkrÚopenÚprintÚformatrZpatchZmultipler'r+ÚsortedZcommand_optionsÚgetÚkeysÚitemsÚ assertNotIn) rZfakepathÚfÚvaluesr&Ú option_tupleZ result_dictÚkeyÚvaluerrrÚtest_venv_install_optionsVsH   ó ó$*ó þ, z.DistributionTestCase.test_venv_install_optionscCsÚtj d¡| tjt¡ttdƒ}z$td|dtd|dW|  ¡n |  ¡0|  tg¡}|  |  ¡gd¢¡gd¢tjdd…<|  tg¡}|  |  ¡d d g¡gd ¢tjdd…<|  tg¡}|  |  ¡d g¡dS) Nr(r5z[global]r6z!command_packages = foo.bar, splat)r)r/Zsplat)r.Úsporkr(rr)rO)r.Úr() rr r*r>r?r@rrArBÚcloser'r+r,)rrIr&rrrÚ test_command_packages_configfiles&     ÿ  ÿ z5DistributionTestCase.test_command_packages_configfilecsbg‰‡fdd„}| ttdtj¡|t_tddddidœd}| tˆƒd¡| d t|ƒ¡dS) Ncsˆ |¡dSr)r*)Úmsg©ZwarnsrrÚ_warn±sz6DistributionTestCase.test_empty_options.._warnÚwarnÚxxxZxxxx)ZauthorÚnameÚversionÚurlÚoptions©Úattrsrr[) r>ÚsetattrÚwarningsrVrr+ÚlenrHÚdir)rrUÚdistrrTrÚtest_empty_optionsªs þ z'DistributionTestCase.test_empty_optionscCsˆdddœ}t|d}| ¡| |jjddg¡| |jjddg¡dddœ}t|d}| ¡| |jjdg¡| |jjdg¡dS)Núone,two)ÚkeywordsÚ platformsr\ÚoneÚtwozfoo bar)rZfinalize_optionsr+Úmetadatarfre©rr]rbrrrÚtest_finalize_options½sÿ ÿ z*DistributionTestCase.test_finalize_optionscCs\tƒ}| |jd¡| ¡}| |dg¡| |jdg¡d|_| ¡}| |gd¢¡dS)Nr)rd)r)rgrh)rr+Zcommand_packagesr,)rrbZcmdsrrrÚtest_get_command_packagesÏsÿz.DistributionTestCase.test_get_command_packagescCs(tƒ}d}ddi}| t|j||¡dS)N)ÚokÚlevelZok2)rÚ assertRaisesÚ ValueErrorZannounce)rrbÚargsÚkwargsrrrÚ test_announceÛsz"DistributionTestCase.test_announcecsÚ| ¡‰tjdkr"tj ˆd¡}ntj ˆd¡}t|dƒ}| d¡Wdƒn1sZ0Y‡fdd„}tjj}|tj_z2tƒ}|  ¡}tdd gid }|  ¡}W|tj_n |tj_0|  t |ƒd t |ƒ¡dS) NÚposixú.pydistutils.cfgúpydistutils.cfgr5z [distutils] csˆSrr)Úpath©Z temp_homerrÚ _expanderîszFDistributionTestCase.test_find_config_files_disable.._expanderZ script_argsz --no-user-cfgr\r) Úmkdtempr?rXrwÚjoinrAÚwriteÚ expanduserrrr+r`)rÚ user_filenamerIryZ old_expanderr&Z all_filesÚfilesrrxrÚtest_find_config_files_disableãs   (  z3DistributionTestCase.test_find_config_files_disable)r)rrrrr$r'r-r3rNrRrcrkrlrsr€Ú __classcell__rrr!rr,s   : rcsØeZdZ‡fdd„Z‡fdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Z‡ZS)1ÚMetadataTestCasecs(tt|ƒ ¡tjtjdd…f|_dSr)rr‚rrr rr!rrrszMetadataTestCase.setUpcs2|jdt_|jdtjdd…<tt|ƒ ¡dSr#)r rrr‚r$rr!rrr$s zMetadataTestCase.tearDowncCst ¡}|j |¡| ¡Sr)ÚioÚStringIOriÚwrite_pkg_fileÚgetvalue)rrbÚsiorrrÚformat_metadata s z MetadataTestCase.format_metadatacCs\dddœ}t|ƒ}| |¡}| d|¡| d| ¡¡| d| ¡¡| d| ¡¡dS)NÚpackageú1.0)rXrYzMetadata-Version: 1.0ú provides:ú requires:ú obsoletes:)rrˆÚassertInrHÚlower©rr]rbÚmetarrrÚtest_simple_metadatasÿ  z%MetadataTestCase.test_simple_metadatacCs|ddddgdœ}t|ƒ}| |j ¡ddg¡| | ¡ddg¡| |¡}| d|¡| d| ¡¡| d| ¡¡dS)Nr‰rŠz package.sub©rXrYZprovidesúMetadata-Version: 1.1rŒr)rr+riZ get_providesrˆrŽrHrrrrrÚ test_providessþ ÿ ÿ  zMetadataTestCase.test_providescCs| ttdddgdœ¡dS)Nr‰rŠúmy.pkg (splat)r“©rorprrrrrÚtest_provides_illegal(s þÿz&MetadataTestCase.test_provides_illegalcCs”ddddgdœ}t|ƒ}| |j ¡ddg¡| | ¡ddg¡| |¡}| d|¡| d| ¡¡| d|¡| d |¡| d | ¡¡dS) Nr‰rŠÚotherzanother (==1.0)©rXrYÚrequiresr”r‹zRequires: otherzRequires: another (==1.0)r)rr+riZ get_requiresrˆrŽrHrrrrrÚ test_requires.s"þ ÿ ÿ    zMetadataTestCase.test_requirescCs| ttdddgdœ¡dS)Nr‰rŠr–ršr—rrrrÚtest_requires_illegal>s þÿz&MetadataTestCase.test_requires_illegalcCs,dtdgƒdœ}t|ƒ}| |jjt¡dS)Nr‰r™)rXr›)Úiterrr1rir›ÚlistrjrrrÚtest_requires_to_listDs ÿz&MetadataTestCase.test_requires_to_listcCs”ddddgdœ}t|ƒ}| |j ¡ddg¡| | ¡ddg¡| |¡}| d|¡| d| ¡¡| d| ¡¡| d |¡| d |¡dS) Nr‰rŠr™zanother (<1.0)©rXrYÚ obsoletesr”r‹rŒzObsoletes: otherzObsoletes: another (<1.0))rr+riZ get_obsoletesrˆrŽrHrrrrrÚtest_obsoletesKs"þ ÿ ÿ   zMetadataTestCase.test_obsoletescCs| ttdddgdœ¡dS)Nr‰rŠr–r¡r—rrrrÚtest_obsoletes_illegal[s þÿz'MetadataTestCase.test_obsoletes_illegalcCs,dtdgƒdœ}t|ƒ}| |jjt¡dS)Nr‰r™)rXr¢)ržrr1rir¢rŸrjrrrÚtest_obsoletes_to_listas ÿz'MetadataTestCase.test_obsoletes_to_listcCsBdddgdœ}t|ƒ}| | ¡dg¡| |¡}| d|¡dS)NÚBoaú3.0ú#Programming Language :: Python :: 3©rXrYÚ classifiersr”)rr+Zget_classifiersrˆrŽrrrrÚtest_classifiergsÿ ÿ z MetadataTestCase.test_classifiercCsvddddœ}tƒ}t|ƒ}Wdƒn1s00Y| d| ¡¡| |jjt¡| |jjt|dƒ¡dS)Nr¦r§)r¨r©úshould be a listrª) rrrŽr†r1rirªrŸr+©rr]Úerrorr&rrrÚtest_classifier_invalid_typepsÿ&  ÿz-MetadataTestCase.test_classifier_invalid_typecCs0ddgd¢dœ}t|ƒ}| | ¡gd¢¡dS)NÚMontyrŠ©ZspamZeggsz life of brian©rXrYre)rr+Z get_keywordsrjrrrÚ test_keywords|sÿ ÿzMetadataTestCase.test_keywordscCsvddddœ}tƒ}t|ƒ}Wdƒn1s00Y| d| ¡¡| |jjt¡| |jjt|dƒ¡dS)Nr°rŠr±r²r¬re) rrrŽr†r1rirerŸr+r­rrrÚtest_keywords_invalid_typeƒsÿ&z+MetadataTestCase.test_keywords_invalid_typecCs0ddddgdœ}t|ƒ}| | ¡ddg¡dS)Nr°rŠú GNU/LinuxúSome Evil Platform©rXrYrf)rr+Z get_platformsrjrrrÚtest_platformsŽsÿ ÿzMetadataTestCase.test_platformscCsvddddœ}tƒ}t|ƒ}Wdƒn1s00Y| d| ¡¡| |jjt¡| |jjt|dƒ¡dS)Nr°rŠ)rµr¶r·r¬rf) rrrŽr†r1rirfrŸr+r­rrrÚtest_platforms_invalid_types•sÿ&z-MetadataTestCase.test_platforms_invalid_typescCs.ddddœ}t|ƒ}| |¡}| d|¡dS)Nr¦r§zhttp://example.org/boa)rXrYÚ download_urlr”)rrˆrŽrrrrÚtest_download_url s ÿ z"MetadataTestCase.test_download_urlcCsDt d¡}dd|dœ}t|ƒ}| |¡}| dd¡}| ||¡dS)Nzc example:: We start here and continue here and end here.r‰rŠ)rXrYÚlong_descriptionz Ú )ÚtextwrapÚdedentrrˆÚreplacerŽ)rZ long_descr]rbr‘rrrÚtest_long_description§s þ  z&MetadataTestCase.test_long_descriptionc CsÖtjdkrd}nd}| ¡}tj ||¡}t|dƒ}z| d¡W| ¡n | ¡0zntƒ}t j dvr†|tj d<|  ¡}|  ||¡t j dkr¸|tj d <|  ¡}|  ||d ||f¡Wt |¡n t |¡0dS) Nrtrurvr5Ú.)ÚlinuxÚdarwinÚHOMEÚwin32Ú USERPROFILEz%r not found in %r)r?rXrzrwr{rAr|rQrrÚplatformÚenvironrrŽÚremove)rr~Ztemp_dirrIrbrrrrÚtest_custom_pydistutils¶s,         ÿz(MetadataTestCase.test_custom_pydistutilscCs4ddg}t|ƒ}| |dd¡| |dd¡dS)N)ÚaÚbÚcr&)rééér)rÌrÍrÎr)rrÏrÐ)rr+)rZ help_tuplesZ fancy_optionsrrrÚtest_fix_help_optionsÙsz&MetadataTestCase.test_fix_help_optionscCs~| tjtjj¡tƒ}gt_d|_d|_ t ƒ}|  ¡Wdƒn1sN0Ydd„|  ¡  d¡Dƒ}| |¡dS)Nrzsetup.pycSsg|]}| ¡dkr|‘qS)rP)Ústrip)Ú.0ÚlinerrrÚ és ÿz3MetadataTestCase.test_show_help..r½)r>r Z set_thresholdZ _global_logZ thresholdrrr ÚhelpZ script_namerr%r†ÚsplitZ assertTrue)rrbÚsÚoutputrrrÚtest_show_helpßs&zMetadataTestCase.test_show_helpcCsÊdddddddgdgd œ}t|ƒ}|j}t ¡}| |¡| d ¡| |¡| |jd¡| |j d¡| |j d¡| |j d¡| |j ddg¡| |j d g¡| |jd¡| |jdg¡dS) Nr‰rŠZdescrWzhttp://example.comrgrhZfoo)rXrYr¼Ú descriptionrºrer›rZUNKNOWN)rrirƒr„r…ÚseekZ read_pkg_filer+rXrYrÜrºrerfr¢r›)rr]rbriZPKG_INFOrrrÚtest_read_metadataîs,ú   z#MetadataTestCase.test_read_metadata)rrrrr$rˆr’r•r˜rœrr r£r¤r¥r«r¯r³r´r¸r¹r»rÁrËrÒrÛrÞrrrr!rr‚ÿs0       #r‚cCs,t ¡}| t t¡¡| t t¡¡|Sr)ÚunittestZ TestSuiteZaddTestZ makeSuiterr‚)ZsuiterrrÚ test_suite sràÚ__main__)r?rƒrrßr_r¾rZdistutils.distrrZ distutils.cmdrZ test.supportrrrr Zdistutils.testsr Z distutilsr r rZLoggingSilencerZTempdirManagerZ EnvironGuardZTestCaserr‚ràrrrrrÚs6      ýTÿ