
    ϶vgH                     v   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ZddlZddl	m
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ZddlZdej        dk    z  dz   Z G d	 d
e          Z G d de          Zej        d             Zej        ej                            d          ej                            d           G d dej                                                      Z ej                            d          ej                            d           G d dej                                          Z!dS )zTests for distutils.dist.    N)Command)Distributionfix_help_options)support.posixzpydistutils.cfgc                       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    b/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/setuptools/_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                  $    t           j        dd = d S )N   )sysargvr   r   r   
clear_argvr#   .   s    r   save_env	save_argvc                       e Zd ZddZd Zd Zej                            de	j
        j        vd          d             Zd	 Zd
 Zd Zd Zd Zd Zej                            dd          d             ZdS )TestDistributionBehaviorr   c                     t                      }||_        |                                 |                                 |S r   )r   r   parse_config_filesparse_command_line)r   configfilesds      r   create_distributionz,TestDistributionBehavior.create_distribution7   s=    %		r   c                     t           j                            d           |                                 }|                                dgk    sJ d S )Nbuilddistutils.command)r!   r"   appendr-   get_command_packages)r   r#   r,   s      r   !test_command_packages_unspecifiedz:TestDistributionBehavior.test_command_packages_unspecified>   sN       $$&&%%'',?+@@@@@@@r   c                    ddl m} t          j                            g d           |                                 }|                                g dk    sJ |                    d          }t          ||          sJ |j	        dk    sJ d S )Nr   )r
   )--command-packageszfoo.bar,distutils.testsr
   z
-Ssometext)r0   foo.barzdistutils.testsr
   sometext)
distutils.tests.test_distr
   r!   r"   extendr-   r2   get_command_obj
isinstancer   )r   r#   r
   r,   cmds        r   test_command_packages_cmdlinez6TestDistributionBehavior.test_command_packages_cmdlineC   s    777777 
 
 
 	 	 	 $$&&%%'' ,
 ,
 ,
 
 
 
 

 ,,#y))))) J......r   	distutilsz;Cannot test when virtualenv has monkey-patched Distribution)reasonc                 "   t           j                            d           t          |dz            }d}t          j                            |d| d| d| d| d| d	| d
| d| d| d| d| d| d| di           t          j        	                    t           dd          5  | 
                    |g          }d d d            n# 1 swxY w Y   ||f}|||||||||||||d}t          |j                            d                                                    t          |                                          k    sJ |j                            d                                          D ]\  }}	|	||         k    sJ t          j        	                    t           dd          5  | 
                    |g          }d d d            n# 1 swxY w Y   |                                D ]!}||j                            di           vsJ "d S )Ninstallfilez/somedirzB
                    [install]
                    install-base = z(
                    install-platbase = z#
                    install-lib = z'
                    install-platlib = z'
                    install-purelib = z'
                    install-headers = z'
                    install-scripts = z$
                    install-data = z
                    prefix = z#
                    exec-prefix = z
                    home = z
                    user = z
                    root = z
                    z/a)prefixbase_prefix)install_baseinstall_platbaseinstall_libinstall_platlibinstall_purelibinstall_headersinstall_scriptsinstall_datarC   exec_prefixhomeuserrootz/b)r!   r"   r1   strjaracopathr/   mockpatchmultipler-   sortedcommand_optionsgetkeysitems)
r   tmp_pathr#   rB   fakepathr,   option_tupleresult_dictkeyvalues
             r   test_venv_install_optionsz2TestDistributionBehavior.test_venv_install_optionsW   sg   
 		"""8f$%% $,  )1  $,	 
 (0  (0  (0  (0  %-  '  $,  %  %  %  
 	 	 	( Z  Tt DD 	1 	1(($00A	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 h' ) ,'++++("'   
 
  a'++I66;;==>>&C
 C
 
 
 
 
 +//	::@@BB 	- 	-JCK,,,,,, Z  Tt DD 	1 	1(($00A	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 ##%% 	C 	CCa/33IrBBBBBBB	C 	Cs$   $CCC+GGGc                     t           j                            d           t          |dz            }t          j                            |di           |                     |g          }|                                g dk    sJ g dt           j        dd <   |                     |g          }|                                ddgk    sJ g d	t           j        dd <   |                     |g          }|                                dgk    sJ d S )
Nr/   rB   zh
                    [global]
                    command_packages = foo.bar, splat
                    )r0   r6   splat)r5   sporkr/   r    r0   re   )r5    r/   )	r!   r"   r1   rQ   rR   rS   r/   r-   r2   )r   r\   r#   rB   r,   s        r    test_command_packages_configfilez9TestDistributionBehavior.test_command_packages_configfile   s-      8f$%% 
 	 	 	 $$dV,,%%''+T+T+TTTTT @??$$dV,,%%'',?+IIIII ;::$$dV,,%%'',?+@@@@@@@r   c                 &   g fd}|                     t          j        t          t          dt          j                             |t          _        t          ddddi d          }t                    dk    sJ dt          |          vsJ d S )	Nc                 2                         |            d S r   )r1   )msgwarnss    r   _warnz:TestDistributionBehavior.test_empty_options.<locals>._warn   s    LLr   warnxxxxxxx)authornameversionurloptionsattrsr   rt   )	addfinalizer	functoolspartialsetattrwarningsrm   r   lendir)r   requestrl   distrk   s       @r   test_empty_optionsz+TestDistributionBehavior.test_empty_options   s    
 	 	 	 	 	 	gxGG	
 	
 	
   
 
 
 5zzQD		))))))r   c                 F   ddd}t          |          }|                                 |j        j        ddgk    sJ |j        j        ddgk    sJ ddd}t          |          }|                                 |j        j        dgk    sJ |j        j        dgk    sJ d S )None,two)keywords	platformsru   onetwozfoo bar)r   finalize_optionsmetadatar   r   r   rv   r   s      r   test_finalize_optionsz.TestDistributionBehavior.test_finalize_options   s    &Y??%((( }&5%.8888}%%7777&Y??%(((}&9+5555}%)444444r   c                     t                      }|j        J |                                }|dgk    sJ |j        dgk    sJ d|_        |                                }|g dk    sJ d S )Nr0   r   )r0   r   r   )r   command_packagesr2   )r   r   cmdss      r   test_get_command_packagesz2TestDistributionBehavior.test_get_command_packages   s    ~~$,,,((**+,,,,,$)<(===== )((**:::::::::r   c                     t                      }t          j        t                    5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nokok2)level)r   pytestraises	TypeErrorannounce)r   r   s     r   test_announcez&TestDistributionBehavior.test_announce   s    ~~]9%% 	- 	-MM$eM,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   AAAc                 0   t           j                            t          di|           t	                      }|                                }t	          ddgi          }|                                }t          |          dz
  t          |          k    sJ d S )Nz[distutils]
script_argsz--no-user-cfgru   r    )rR   rS   r/   pydistutils_cfgr   r   r|   )r   	temp_homer,   	all_filesfiless        r   test_find_config_files_disablez7TestDistributionBehavior.test_find_config_files_disable   s    ?O<iHHHNN''))	/@ABBB##%% 9~~!SZZ//////r   zplatform.system() == "Windows"z Windows does not honor chmod 000c                     |                     t                                        dd           |                    d           t	                                                       dS )zV
        Finding config files should not fail when directory is inaccessible.
        rf   zutf-8)encodingr   N)joinpathr   
write_textchmodr   r   )r   	fake_homes     r   'test_find_config_files_permission_errorz@TestDistributionBehavior.test_find_config_files_permission_error   sY     	?++66rG6LLL((*****r   N)r   )r   r   r   r-   r3   r=   r   markskipifr   r)   rb   rg   r   r   r   r   r   r   r   r   r   r'   r'   3   s+          A A A
/ / /( [<:EEL   ;C ;C	 ;CzA A A0* * *65 5 5 	; 	; 	;- - -0 0 0 [(1   + +	 + + +r   r'   c                       e 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d Zd Zd ZdS )TestMetadatac                     t          j                    }|j                            |           |                                S r   )ioStringIOr   write_pkg_filegetvalue)r   r   sios      r   format_metadatazTestMetadata.format_metadata	  s1    kmm$$S)))||~~r   c                     ddd}t          |          }|                     |          }d|v sJ d|                                vsJ d|                                vsJ d|                                vsJ d S )Npackage1.0)rq   rr   zMetadata-Version: 1.0	provides:	requires:
obsoletes:)r   r   lowerr   rv   r   metas       r   test_simple_metadataz!TestMetadata.test_simple_metadata  s    "u55E""##D))&$....$**,,....$**,,....4::<<//////r   c                 D   ddddgd}t          |          }|j                                        ddgk    sJ |                                ddgk    sJ |                     |          }d|v sJ d|                                vsJ d|                                vsJ d S )Nr   r   zpackage.subrq   rr   providesMetadata-Version: 1.1r   r   )r   r   get_providesr   r   r   s       r   test_provideszTestMetadata.test_provides  s    "M2
 

 E""}))++	=/IIIII  ""y-&@@@@@##D))&$....$**,,....4::<<//////r   c                     t          j        t                    5  t          dddgd           d d d            d S # 1 swxY w Y   d S )Nr   r   my.pkg (splat)r   r   r   
ValueErrorr   r   s    r   test_provides_illegalz"TestMetadata.test_provides_illegal%      ]:&& 	 	"uCSBTUU  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   <A A c                 \   ddddgd}t          |          }|j                                        ddgk    sJ |                                ddgk    sJ |                     |          }d|v sJ d|                                vsJ d|v sJ d	|v sJ d
|                                vsJ d S )Nr   r   otherzanother (==1.0)rq   rr   requiresr   r   zRequires: otherzRequires: another (==1.0)r   )r   r   get_requiresr   r   r   s       r   test_requireszTestMetadata.test_requires+  s     "34
 

 E""}))++9J/KKKKK  ""w0A&BBBBB##D))&$....$**,,.... D((((*d22224::<<//////r   c                     t          j        t                    5  t          dddgd           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   r   s    r   test_requires_illegalz"TestMetadata.test_requires_illegal;  r   r   c                     dt          dg          d}t          |          }t          |j        j        t
                    sJ d S )Nr   r   )rq   r   )iterr   r;   r   r   listr   s      r   test_requires_to_listz"TestMetadata.test_requires_to_listA  sE    "gY@@E""$-0$7777777r   c                 \   ddddgd}t          |          }|j                                        ddgk    sJ |                                ddgk    sJ |                     |          }d|v sJ d|                                vsJ d|                                vsJ d	|v sJ d
|v sJ d S )Nr   r   r   zanother (<1.0)rq   rr   	obsoletesr   r   r   zObsoletes: otherzObsoletes: another (<1.0))r   r   get_obsoletesr   r   r   s       r   test_obsoleteszTestMetadata.test_obsoletesF  s    !#34
 

 E""}**,,:J0KKKKK!!##1A'BBBBB##D))&$....$**,,....$**,,....!T))))*d222222r   c                     t          j        t                    5  t          dddgd           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   r   s    r   test_obsoletes_illegalz#TestMetadata.test_obsoletes_illegalV  s    ]:&& 	 	"uDTCUVV  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r   c                     dt          dg          d}t          |          }t          |j        j        t
                    sJ d S )Nr   r   )rq   r   )r   r   r;   r   r   r   r   s      r   test_obsoletes_to_listz#TestMetadata.test_obsoletes_to_list\  sE    "wiAAE""$-148888888r   c                     dddgd}t          |          }|                                dgk    sJ |                     |          }d|v sJ d S )NBoa3.0#Programming Language :: Python :: 3rq   rr   classifiersr   )r   get_classifiersr   r   s       r   test_classifierzTestMetadata.test_classifiera  st    AB
 

 E""##%%*O)PPPPP##D))&$......r   c                     dddd}t          |          }d|j        d         v sJ t          |j        j        t
                    sJ |j        j        t          |d                   k    sJ d S )Nr   r   )r   r   should be a listr   r   )r   messagesr;   r   r   r   r   caplogrv   r,   s       r   test_classifier_invalid_typez)TestMetadata.test_classifier_invalid_typel  s    C
 

 !V_Q%77777!*0$77777z%eM.B)C)CCCCCCCr   c                 l    ddg dd}t          |          }|                                g dk    sJ d S )NMontyr   spameggszlife of brianrq   rr   r   )r   get_keywordsr   s      r   test_keywordszTestMetadata.test_keywordsy  sV    999
 

 E""  ""&G&G&GGGGGGGr   c                     dddd}t          |          }d|j        d         v sJ t          |j        j        t
                    sJ |j        j        t          |d                   k    sJ d S )Nr   r   r   r   r   r   r   )r   r   r;   r   r   r   r   s       r   test_keywords_invalid_typez'TestMetadata.test_keywords_invalid_type  s    9
 

 !V_Q%77777!*-t44444z"d5+<&=&=======r   c                 l    ddddgd}t          |          }|                                ddgk    sJ d S )Nr   r   	GNU/LinuxSome Evil Platformrq   rr   r   )r   get_platformsr   s      r   test_platformszTestMetadata.test_platforms  sU    %';<
 

 E""!!##5I'JJJJJJJr   c                     dddd}t          |          }d|j        d         v sJ t          |j        j        t
                    sJ |j        j        t          |d                   k    sJ d S )Nr   r   )r   r   r   r   r   r   )r   r   r;   r   r   r   r   s       r   test_platforms_invalid_typesz)TestMetadata.test_platforms_invalid_types  s    <
 

 !V_Q%77777!*.55555z#tE+,>'?'???????r   c                 f    dddd}t          |          }|                     |          }d|v sJ d S )Nr   r   zhttp://example.org/boa)rq   rr   download_urlr   )r   r   r   s       r   test_download_urlzTestMetadata.test_download_url  sP    4
 

 E""##D))&$......r   c                     t          j        d          }dd|d}t          |          }|                     |          }|                    dd          }||v sJ d S )Nzc        example::
              We start here
            and continue here
          and end here.r   r   rq   rr   long_descriptionz	
        
)textwrapdedentr   r   replace)r   	long_descrv   r   r   s        r   test_long_descriptionz"TestMetadata.test_long_description  ss    O
 
	 #u)TTE""##D))||ND11D      r   c                     t           j                            t          di|           |t          z  }t	          |          t                                                      v sJ dS )z*
        pydistutils.cfg is found
        rf   N)rR   rS   r/   r   rQ   r   r   )r   r   config_paths      r   test_custom_pydistutilsz$TestMetadata.test_custom_pydistutils  sZ     	?B/;;;/1;<>>#C#C#E#EEEEEEEr   c                     t           j                            ddi|           |dz  }|                    dt	          |                     t	          |          t                                                      v sJ d S )Nzoverrides.cfgrf   DIST_EXTRA_CONFIG)rR   rS   r/   setenvrQ   r   r   )r   monkeypatchr\   filenames       r   test_extra_pydistutilsz#TestMetadata.test_extra_pydistutils  ss    ?B/:::o-.H>>>8}} @ @ B BBBBBBBr   c                 d    ddg}t          |          }|d         dk    sJ |d         dk    sJ d S )N)abcr,   )r             r   )r  r  r  r    )r    r  r  )r   )r   help_tuplesfancy_optionss      r   test_fix_help_optionsz"TestMetadata.test_fix_help_options  sK    +\:(55Q?2222Q9,,,,,,r   c                     t                      }g t          _        d|_        d|_        |                                 d |                                j                            d          D             }|sJ d S )NTzsetup.pyc                 B    g | ]}|                                 d k    |S )rf   )strip).0lines     r   
<listcomp>z/TestMetadata.test_show_help.<locals>.<listcomp>  s2     
 
 
DJJLLTVDVDVDDVDVDVr   r  )	r   r!   r"   helpscript_namer*   
readouterroutsplit)r   r~   capsysr   outputs        r   test_show_helpzTestMetadata.test_show_help  s}    ~~	%!!!
 
#..004::4@@
 
 
 r   c                    dddddddgdgd	}t          |          }|j        }t          j                    }|                    |           |                    d
           |                    |           |j        dk    sJ |j        dk    sJ |j	        dk    sJ |j
        dk    sJ |j        ddgk    sJ |j        J |j        J |j        dgk    sJ d S )Nr   r   descrn   zhttp://example.comr   r   foo)rq   rr   r  descriptionr   r   r   r   )r   r   r   r   r   seekread_pkg_filerq   rr   r-  r   r   r   r   r   )r   rv   r   r   PKG_INFOs        r   test_read_metadatazTestMetadata.test_read_metadata  s(    & 0
 
 E""= ;==)))ax(((}	))))5((((#u,,,,$(<<<<< UEN2222!)))!))) UG++++++r   c                    dddd}t          |          }|j        }t          j                    5 }|                    |           |                                }ddd           n# 1 swxY w Y   t          j        |          }t          j        	                    ddd	          }t          j                    5 }t          j
                            ||
                              |           |                    d           t          j        |          }ddd           n# 1 swxY w Y   t          |d                                                   }	t          |d                                                   }
|
|	k    sJ dS )z
        In pypa/setuptools#4033, it was shown that once PKG-INFO is
        re-generated using ``email.generator.Generator``, some control
        characters might cause problems.
        r   r   zhello
world
r  NTFr   )utf8mangle_from_max_line_length)policyDescription)r   r   r   r   r   r   emailmessage_from_stringr6  EmailPolicy	generator	Generatorflattenr.  message_from_fileset
splitlines)r   rv   r   r   bufferrj   origr6  regen	orig_desc
regen_descs              r   'test_round_trip_through_email_generatorz4TestMetadata.test_round_trip_through_email_generator  s     4
 

 E""=[]] 	$f##F+++//##C	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
 (--)) * 
 

 []] 	4fO%%fV%<<DDTJJJKKNNN+F33E		4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 ]+668899	}-88::;;
Y&&&&&&s$   *A&&A*-A*:AD$$D(+D(N)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)  r1  rF  r   r   r   r   r     s         
0 0 00 0 0  0 0 0   8 8 8
3 3 3   9 9 9
	/ 	/ 	/D D DH H H> > >K K K@ @ @/ / /! ! !F F FC C C- - -  , , ,:$' $' $' $' $'r   r   )"r   r8  email.generatoremail.policyrx   r   osr!   r  unittest.mockrT   r{   distutils.cmdr   distutils.distr   r   distutils.testsr   jaraco.pathrR   r   rq   r   r
   r   fixturer#   combine_markersr   usefixturesTempdirManagerr'   r   r   r   r   <module>rS     sE                  				 				 



         ! ! ! ! ! ! 9 9 9 9 9 9 9 9 # # # # # #     G+,/@@" " " " " " " "	" 	" 	" 	" 	"| 	" 	" 	"    	$$%%M+ M+ M+ M+ M+w5 M+ M+ &% %$ M+` $$%%Y' Y' Y' Y' Y'7) Y' Y' &% %$Y' Y' Y'r   