
    eI                        d Z ddlZddlZ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	m
Z
 ddlmZ ddlmZmZ ddlmZ ddlmZ dd	lmZ  G d
 de          Z G d de	          Z G d dej        ej        ej        ej                  Z G d dej        ej        ej                  Zedk    r ej                     dS dS )zTests for distutils.dist.    N)mock)Distributionfix_help_options)Command)captured_stdoutcaptured_stderr)TESTFN)support)logc                       e Zd ZdZdgZd ZdS )	test_distz#Sample distutils extension command.)zsample-option=Sz	help textc                     d | _         d S N)sample_optionselfs    +  /home/conda/feedstock_root/build_artifacts/python-split_1708115622739/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/lib/python3.11/distutils/tests/test_dist.pyinitialize_optionsztest_dist.initialize_options   s    !    N)__name__
__module____qualname____doc__user_optionsr    r   r   r   r      s5        -- 	-L" " " " "r   r   c                       e Zd ZdZd ZdS )TestDistributionzDistribution subclasses that avoids the default search for
    configuration files.

    The ._config_files attribute must be set before
    .parse_config_files() is called.
    c                     | j         S r   )_config_filesr   s    r   find_config_filesz"TestDistribution.find_config_files)   s    !!r   N)r   r   r   r   r!   r   r   r   r   r   !   s-         " " " " "r   r   c                   f     e Zd Z fdZ fdZddZd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Z xZS )DistributionTestCasec                     t          t          |                                            t          j        t          j        d d          f| _        t          j        dd = d S )N   )superr#   setUpsysargvr   	__class__s    r   r'   zDistributionTestCase.setUp2   sI    "D))//111Hchqqqk)	HQRRLLLr   c                     | j         d         t          _         | j         d         t          j         d d <   t          t          |                                            d S Nr   r%   )r)   r(   r&   r#   tearDownr*   s    r   r.   zDistributionTestCase.tearDown7   sH    9Q<il"D))2244444r   r   c                     t                      }||_        |                                 |                                 |S r   )r   r    parse_config_filesparse_command_line)r   configfilesds      r   create_distributionz(DistributionTestCase.create_distribution<   s=    %		r   c                     t           j                            d           |                                 }|                     |                                dg           d S )Nbuilddistutils.command)r(   r)   appendr4   assertEqualget_command_packages)r   r3   s     r   !test_command_packages_unspecifiedz6DistributionTestCase.test_command_packages_unspecifiedC   sS       $$&&//114G3HIIIIIr   c                 \   ddl m} t          j                            g d           |                                 }|                     |                                g d           |                    d          }| 	                    ||           |                     |j
        d           d S )Nr   )r   )--command-packageszfoo.bar,distutils.testsr   z
-Ssometext)r7   foo.barzdistutils.testsr   sometext)distutils.tests.test_distr   r(   r)   extendr4   r9   r:   get_command_objassertIsInstancer   )r   r   r3   cmds       r   test_command_packages_cmdlinez2DistributionTestCase.test_command_packages_cmdlineH   s    777777    	 	 	
 $$&&//11LLL	N 	N 	N,,c9---*J77777r   c                    t           j                            d           |                     t          j        t                     d}t          t          d          5 }t          d	                    |          |           d d d            n# 1 swxY w Y   t          j                            t           dd          5 }|                     t          g          }d d d            n# 1 swxY w Y   t          |f}|||||||||||||d}|                     t          |j                            d                                                    t          |                                                     |j                            d                                          D ]!\  }}|                     |||                    "t          j                            t           dd	          5 }|                     t          g          }d d d            n# 1 swxY w Y   |                                D ]1}|                     ||j                            di                      2d S )
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)install_baseinstall_platbaseinstall_libinstall_platlibinstall_purelibinstall_headersinstall_scriptsinstall_datarK   exec_prefixhomeuserrootz/b)r(   r)   r8   
addCleanuposunlinkr	   openprintformatr   patchmultipler4   r9   sortedcommand_optionsgetkeysitemsassertNotIn)	r   fakepathfvaluesr3   option_tupleresult_dictkeyvalues	            r   test_venv_install_optionsz.DistributionTestCase.test_venv_install_optionsW   s   	"""	6***&# 	;!   "(!1!1; ; ; ;	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;" Z  Tt DD 	3((&22A	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 ) ) ,'++++("'   
 
  	1$((3388::;;;##%%&&	( 	( 	( -11)<<BBDD 	6 	6LS%UK$45555 Z  Tt DD 	3((&22A	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 ##%% 	H 	HCS!"3"7"7	2"F"FGGGG	H 	Hs6   %BBB?C''C+.C+,HHHc                 B   t           j                            d           |                     t          j        t                     t          t          d          }	 t          d|           t          d|           |	                                 n# |	                                 w xY w| 
                    t          g          }|                     |                                g d           g dt           j        dd <   | 
                    t          g          }|                     |                                d	d
g           g dt           j        dd <   | 
                    t          g          }|                     |                                d	g           d S )Nr6   rH   z[global]rI   z!command_packages = foo.bar, splat)r7   r>   splat)r=   sporkr6   r%   r7   rq   )r=    r6   )r(   r)   r8   rY   rZ   r[   r	   r\   r]   closer4   r9   r:   )r   rh   r3   s      r    test_command_packages_configfilez5DistributionTestCase.test_command_packages_configfile   s      	6***	*1%%%%5A>>>>GGIIIIAGGIIII$$fX..//11BBB	D 	D 	D @??$$fX..//11-w7	9 	9 	9
 ;::$$fX..//114G3HIIIIIs   "B B(c                 >   g fd}|                      t          t          dt          j                   |t          _        t	          ddddi d          }|                     t                    d           |                     dt          |                     d S )	Nc                 2                         |            d S r   )r8   )msgwarnss    r   _warnz6DistributionTestCase.test_empty_options.<locals>._warn   s    LLr   warnxxxxxxx)authornameversionurloptionsattrsr   r   )	rY   setattrwarningsrz   r   r9   lenrf   dir)r   ry   distrx   s      @r   test_empty_optionsz'DistributionTestCase.test_empty_options   s    
 	 	 	 	 	 	68=AAAUE.3F.0#2 #2 3 3 3 	UQ'''CII.....r   c                    ddd}t          |          }|                                 |                     |j        j        ddg           |                     |j        j        ddg           ddd}t          |          }|                                 |                     |j        j        dg           |                     |j        j        dg           d S )None,two)keywords	platformsr   onetwozfoo bar)r   finalize_optionsr9   metadatar   r   r   r   r   s      r   test_finalize_optionsz*DistributionTestCase.test_finalize_options   s    &') ) %((( 	05%.AAA/%@@@&') )%(((09+>>>/)=====r   c                 L   t                      }|                     |j        d            |                                }|                     |dg           |                     |j        dg           d|_        |                                }|                     |g d           d S )Nr7   r   )r7   r   r   )r   r9   command_packagesr:   )r   r   cmdss      r   test_get_command_packagesz.DistributionTestCase.test_get_command_packages   s    ~~.555((** 34555.-.	0 	0 	0 !*((**BBBCCCCCr   c                 r    t                      }d}ddi}|                     t          |j        ||           d S )N)oklevelok2)r   assertRaises
ValueErrorannounce)r   r   argskwargss       r   test_announcez"DistributionTestCase.test_announce   s<    ~~5!*dmT6BBBBBr   c                    |                                  t          j        dk    r!t          j                            d          }n t          j                            d          }t          |d          5 }|                    d           d d d            n# 1 swxY w Y   fd}t          j        j        }|t          j        _        	 t                      }|	                                }t          ddgi	          }|	                                }|t          j        _        n# |t          j        _        w xY w| 
                    t          |          d
z
  t          |                     d S )Nposix.pydistutils.cfgpydistutils.cfgrH   z[distutils]
c                     S r   r   )path	temp_homes    r   	_expanderzFDistributionTestCase.test_find_config_files_disable.<locals>._expander   s	    r   script_argsz--no-user-cfgr   r%   )mkdtemprZ   r~   r   joinr\   write
expanduserr   r!   r9   r   )	r   user_filenamerh   r   old_expanderr3   	all_filesfilesr   s	           @r   test_find_config_files_disablez3DistributionTestCase.test_find_config_files_disable   s   LLNN	7gGLL4FGGMMGLL4EFFM-%% 	%GGO$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%	 	 	 	 	 w)&	.A++--IMO3D#EFFFA''))E!-BGBG---- 	Y)3u::66666s   7BB BA	D' 'D:)r   )r   r   r   r'   r.   r4   r;   rE   rn   rt   r   r   r   r   r   __classcell__r+   s   @r   r#   r#   -   s        
    
5 5 5 5 5
   J J J
8 8 88H 8H 8HtJ J J4/ / /&> > >$
D 
D 
DC C C7 7 7 7 7 7 7r   r#   c                        e Zd Z fdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )MetadataTestCasec                     t          t          |                                            t          j        t          j        d d          f| _        d S r   )r&   r   r'   r(   r)   r*   s    r   r'   zMetadataTestCase.setUp  s<    %%++---Hchqqqk)			r   c                     | j         d         t          _         | j         d         t          j         d d <   t          t          |                                            d S r-   )r)   r(   r&   r   r.   r*   s    r   r.   zMetadataTestCase.tearDown  sH    9Q<il%%..00000r   c                     t          j                    }|j                            |           |                                S r   )ioStringIOr   write_pkg_filegetvalue)r   r   sios      r   format_metadataz MetadataTestCase.format_metadata  s1    kmm$$S)))||~~r   c                 t   ddd}t          |          }|                     |          }|                     d|           |                     d|                                           |                     d|                                           |                     d|                                           d S )Npackage1.0)r~   r   zMetadata-Version: 1.0	provides:	requires:
obsoletes:)r   r   assertInrf   lowerr   r   r   metas       r   test_simple_metadataz%MetadataTestCase.test_simple_metadata  s    "!# #E""##D))-t444djjll333djjll333tzz||44444r   c                    ddddgd}t          |          }|                     |j                                        ddg           |                     |                                ddg           |                     |          }|                     d|           |                     d|                                           |                     d|                                           d S )Nr   r   zpackage.subr~   r   providesMetadata-Version: 1.1r   r   )r   r9   r   get_providesr   r   rf   r   r   s       r   test_provideszMetadataTestCase.test_provides  s    "!'79 9 E""3355#]3	5 	5 	5**,,#]3	5 	5 	5##D))-t444djjll333tzz||44444r   c                 R    |                      t          t          dddgd           d S )Nr   r   my.pkg (splat)r   r   r   r   r   s    r   test_provides_illegalz&MetadataTestCase.test_provides_illegal)  >    *l#,&+(8'9; ;	< 	< 	< 	< 	<r   c                 4   ddddgd}t          |          }|                     |j                                        ddg           |                     |                                ddg           |                     |          }|                     d|           |                     d|                                           |                     d|           |                     d	|           |                     d
|                                           d S )Nr   r   otherzanother (==1.0)r~   r   requiresr   r   zRequires: otherzRequires: another (==1.0)r   )r   r9   r   get_requiresr   r   rf   r   r   s       r   test_requireszMetadataTestCase.test_requires/  s    "!%'89; ; E""3355!#45	7 	7 	7**,,!#45	7 	7 	7##D))-t444djjll333'...14888tzz||44444r   c                 R    |                      t          t          dddgd           d S )Nr   r   r   r   r   r   s    r   test_requires_illegalz&MetadataTestCase.test_requires_illegal?  r   r   c                     dt          dg          d}t          |          }|                     |j        j        t
                     d S )Nr   r   )r~   r   )iterr   rC   r   r   listr   s      r   test_requires_to_listz&MetadataTestCase.test_requires_to_listE  sJ    "!7)__. .E""dm4d;;;;;r   c                 4   ddddgd}t          |          }|                     |j                                        ddg           |                     |                                ddg           |                     |          }|                     d|           |                     d|                                           |                     d|                                           |                     d	|           |                     d
|           d S )Nr   r   r   zanother (<1.0)r~   r   	obsoletesr   r   r   zObsoletes: otherzObsoletes: another (<1.0))r   r9   r   get_obsoletesr   r   rf   r   r   s       r   test_obsoleteszMetadataTestCase.test_obsoletesL  s    "!&(89; ; E""4466!#34	6 	6 	6++--!#34	6 	6 	6##D))-t444djjll333djjll333($///1488888r   c                 R    |                      t          t          dddgd           d S )Nr   r   r   r   r   r   s    r   test_obsoletes_illegalz'MetadataTestCase.test_obsoletes_illegal\  s>    *l#,&+)9(:< <	= 	= 	= 	= 	=r   c                     dt          dg          d}t          |          }|                     |j        j        t
                     d S )Nr   r   )r~   r   )r   r   rC   r   r   r   r   s      r   test_obsoletes_to_listz'MetadataTestCase.test_obsoletes_to_listb  sJ    ""G9oo/ /E""dm5t<<<<<r   c                     dddgd}t          |          }|                     |                                dg           |                     |          }|                     d|           d S )NBoa3.0#Programming Language :: Python :: 3r~   r   classifiersr   )r   r9   get_classifiersr   r   r   s       r   test_classifierz MetadataTestCase.test_classifierh  s    5!F GI IE""--//?@	B 	B 	B##D))-t44444r   c                 |   dddd}t                      5 }t          |          }d d d            n# 1 swxY w Y   |                     d|                                           |                     |j        j        t                     |                     |j        j        t          |d                              d S )Nr   r   )r   r   should be a listr   )	r   r   r   r   rC   r   r   r   r9   r   r   errorr3   s       r   test_classifier_invalid_typez-MetadataTestCase.test_classifier_invalid_typeq  s    5 HJ J 	$%U##A	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	(%..*:*:;;;aj4d;;;/eM233	5 	5 	5 	5 	5   155c                     ddg dd}t          |          }|                     |                                g d           d S )NMontyr   spameggszlife of brianr~   r   r   )r   r9   get_keywordsr   s      r   test_keywordszMetadataTestCase.test_keywords}  sd     U>>>@ @E""**,,:::	< 	< 	< 	< 	<r   c                 |   dddd}t                      5 }t          |          }d d d            n# 1 swxY w Y   |                     d|                                           |                     |j        j        t                     |                     |j        j        t          |d                              d S )Nr   r   r   r   r   r   )	r   r   r   r   rC   r   r   r   r9   r   s       r   test_keywords_invalid_typez+MetadataTestCase.test_keywords_invalid_type  s     U>@ @ 	$%U##A	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	(%..*:*:;;;aj14888,d53D.E.EFFFFFr   c                     ddddgd}t          |          }|                     |                                ddg           d S )Nr   r   	GNU/LinuxSome Evil Platformr~   r   r   )r   r9   get_platformsr   s      r   test_platformszMetadataTestCase.test_platforms  sd     U*,@AC CE""++--%';<	> 	> 	> 	> 	>r   c                 |   dddd}t                      5 }t          |          }d d d            n# 1 swxY w Y   |                     d|                                           |                     |j        j        t                     |                     |j        j        t          |d                              d S )Nr   r   )r  r  r  r   r   )	r   r   r   r   rC   r   r   r   r9   r   s       r   test_platforms_invalid_typesz-MetadataTestCase.test_platforms_invalid_types  s     UAC C 	$%U##A	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	(%..*:*:;;;aj2D999-tE+4F/G/GHHHHHr   c                     dddd}t          |          }|                     |          }|                     d|           d S )Nr   r   zhttp://example.org/boa)r~   r   download_urlr   )r   r   r   r   s       r   test_download_urlz"MetadataTestCase.test_download_url  sQ    5!9; ;E""##D))-t44444r   c                     t          j        d          }dd|d}t          |          }|                     |          }|                    dd          }|                     ||           d S )Nzc        example::
              We start here
            and continue here
          and end here.r   r   )r~   r   long_descriptionz	
        
)textwrapdedentr   r   replacer   )r   	long_descr   r   r   s        r   test_long_descriptionz&MetadataTestCase.test_long_description  s~    O %  	
 #!%.0 0 E""##D))||ND11i&&&&&r   c                    t           j        dk    rd}nd}|                                 }t           j                            ||          }t          |d          }	 |                    d           |                                 n# |                                 w xY w	 t                      }t          j
        dv r9|t           j        d<   |                                }|                     ||           t          j
        dk    r?|t           j        d	<   |                                }|                     |||d
|           t          j        |           d S # t          j        |           w xY w)Nr   r   r   rH   .)linuxdarwinHOMEwin32USERPROFILEz not found in )rZ   r~   r   r   r   r\   r   rs   r   r(   platformenvironr!   r   remove)r   r   temp_dirrh   r   r   s         r   test_custom_pydistutilsz(MetadataTestCase.test_custom_pydistutils  sW    7g.MM-M<<>>X}==$$	GGCLLLGGIIIIAGGIIII	%>>D |222%-
6"..00mU333 |w&&,4
=)..00mU6CmmUUKM M M Im$$$$$BIm$$$$s   B BB$E E/c                     ddg}t          |          }|                     |d         d           |                     |d         d           d S )N)abcr3   )r%            r   )r$  r%  r&  r%   )r%   r'  r(  )r   r9   )r   help_tuplesfancy_optionss      r   test_fix_help_optionsz&MetadataTestCase.test_fix_help_options  sU    +\:(55q)?;;;q)955555r   c                    |                      t          j        t          j        j                   t                      }g t          _        d|_        d|_	        t                      5 }|                                 d d d            n# 1 swxY w Y   d |                                                    d          D             }|                     |           d S )Nr%   zsetup.pyc                 B    g | ]}|                                 d k    |S )rr   )strip).0lines     r   
<listcomp>z3MetadataTestCase.test_show_help.<locals>.<listcomp>  s4     ) ) )4ZZ\\R'' '''r   r  )rY   r   set_threshold_global_log	thresholdr   r(   r)   helpscript_namer   r1   r   split
assertTrue)r   r   soutputs       r   test_show_helpzMetadataTestCase.test_show_help  s    )3?+DEEE~~	% 	&!##%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&) )1::<<#5#5d#;#; ) ) )s   &BBBc                    dddddddgdgd	}t          |          }|j        }t          j                    }|                    |           |                    d
           |                    |           |                     |j        d           |                     |j	        d           |                     |j
        d           |                     |j        d           |                     |j        ddg           |                     |j        dg           |                     |j        d            |                     |j        dg           d S )Nr   r   descr{   zhttp://example.comr   r   foo)r~   r   r  descriptionr  r   r   r   UNKNOWN)r   r   r   r   r   seekread_pkg_filer9   r~   r   r@  r  r   r   r   r   )r   r   r   r   PKG_INFOs        r   test_read_metadataz#MetadataTestCase.test_read_metadata  s\   "!%+ %!5#U^#W& & E""= ;==)))ax(((	222)5111-u555.0DEEE*UEN;;;+i[999+T222*UG44444r   )r   r   r   r'   r.   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r"  r,  r<  rE  r   r   s   @r   r   r      s       * * * * *1 1 1 1 1
  
5 5 55 5 5< < <5 5 5 < < << < <9 9 9 = = == = =5 5 5
5 
5 
5< < <	G 	G 	G> > >	I 	I 	I5 5 5' ' '!% !% !%F6 6 6     5 5 5 5 5 5 5r   r   __main__) r   rZ   r   r(   unittestr   r  r   distutils.distr   r   distutils.cmdr   test.supportr   r   test.support.os_helperr	   distutils.testsr
   	distutilsr   r   r   LoggingSilencerTempdirManagerEnvironGuardTestCaser#   r   r   mainr   r   r   <module>rS     s     				 				 



          9 9 9 9 9 9 9 9 ! ! ! ! ! !        * ) ) ) ) ) # # # # # #      " " " " " " " "	" 	" 	" 	" 	"| 	" 	" 	"Q7 Q7 Q7 Q7 Q772"1"/#,Q7 Q7 Q7fH5 H5 H5 H5 H5w-w/C(H5 H5 H5T zHMOOOOO r   