
    ,hiI                     |   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mZ ddlZddlZdej0                  dk(  z  d	z   Z G d
 de      Z G d de      Zej8                  d        Zej<                  ej>                  jA                  d      ej>                  jA                  d       G d dejB                                             Z"ej>                  jA                  d      ej>                  jA                  d       G d dejB                                      Z#y)zTests for distutils.dist.    N)Command)Distributionfix_help_options)support)ClassVar.posixzpydistutils.cfgc                   @    e Zd ZU dZdgZeeeeeef         e	d<   d Z
y)	test_distz#Sample distutils extension command.)zsample-option=Sz	help textuser_optionsc                     d | _         y N)sample_optionselfs    g/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/test_dist.pyinitialize_optionsztest_dist.initialize_options   s
    !    N)__name__
__module____qualname____doc__r   r   listtuplestr__annotations__r    r   r   r   r      s2    - 	-:L(4c3m 456 "r   r   c                       e Zd ZdZd Zy)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 = y )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                  j                  de	j                  j                  vd      d        Zd Zd	 Zd
 Zd Zd Zd Zd Zej                  j                  dd      d        Zy)TestDistributionBehaviorc                 h    t               }||_        |j                          |j                          |S r   )r    r"   parse_config_filesparse_command_line)r   configfilesds      r   create_distributionz,TestDistributionBehavior.create_distribution8   s.    %		r   c                     t         j                  j                  d       | j                         }|j	                         dgk(  sJ y )Nbuilddistutils.command)r&   r'   appendr2   get_command_packages)r   r(   r1   s      r   !test_command_packages_unspecifiedz:TestDistributionBehavior.test_command_packages_unspecified?   s;     $$&%%',?+@@@@r   c                     ddl m} t        j                  j	                  g d       | j                         }|j                         g dk(  sJ |j                  d      }t        ||      sJ |j                  dk(  sJ y )Nr   )r   )--command-packageszfoo.bar,distutils.testsr   z
-Ssometext)r5   foo.barzdistutils.testsr   sometext)
distutils.tests.test_distr   r&   r'   extendr2   r7   get_command_obj
isinstancer   )r   r(   r   r1   cmds        r   test_command_packages_cmdlinez6TestDistributionBehavior.test_command_packages_cmdlineD   sx    7 
 	 $$&%%' ,
 
 	

 ,#y))  J...r   	distutilsz;Cannot test when virtualenv has monkey-patched Distribution)reasonc                    t         j                  j                  d       t        |dz        }d}t        j
                  j                  |d| d| d| d| d| d	| d
| d| d| d| d| d| d| di       t        j                  j                  t         dd      5  | j                  |g      }d d d        ||f}|||||||||||||d}t        j                  j                  d      j                               t        |j                               k(  sJ |j                  j                  d      j                         D ]  \  }}	|	||   k(  rJ  t        j                  j                  t         dd      5  | j                  |g      }d d d        |j                         D ]"  }||j                  j                  di       vr"J  y # 1 sw Y   xY w# 1 sw Y   LxY w)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_datarH   exec_prefixhomeuserrootz/b)r&   r'   r6   r   jaracopathr4   mockpatchmultipler2   sortedcommand_optionsgetkeysitems)
r   tmp_pathr(   rG   fakepathr1   option_tupleresult_dictkeyvalues
             r   test_venv_install_optionsz2TestDistributionBehavior.test_venv_install_optionsX   sJ   
 		"8f$% $$,: .((0z 2##+* -''/j 1''/j 1''/j 1''/j 1$$,: .&Z (##+* -$: &$: &$: &
 	( ZZ  Tt D 	1(($0A	1 h' ) ,'++++("'   
  a''++I6;;=>&C
 
 	
 ++//	:@@B 	-JCK,,,	- ZZ  Tt D 	1(($0A	1 ##% 	CCa//33IrBBB	CA	1 	1:	1 	1s   G=GGG$c                    t         j                  j                  d       t        |dz        }t        j
                  j                  |di       | j                  |g      }|j                         g dk(  sJ g dt         j                  dd  | j                  |g      }|j                         ddgk(  sJ g d	t         j                  dd  | j                  |g      }|j                         dgk(  sJ y )
Nr4   rG   zh
                    [global]
                    command_packages = foo.bar, splat
                    )r5   r;   splat)r:   sporkr4   r%   r5   ri   )r:    r4   )	r&   r'   r6   r   rV   rW   r4   r2   r7   )r   r`   r(   rG   r1   s        r    test_command_packages_configfilez9TestDistributionBehavior.test_command_packages_configfile   s     8f$% 
 	 $$dV,%%'+TTT @$$dV,%%',?+III ;$$dV,%%',?+@@@@r   c                    g fd}|j                  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 y )	Nc                 (    j                  |        y r   )r6   )msgwarnss    r   _warnz:TestDistributionBehavior.test_empty_options.<locals>._warn   s    LLr   warnxxxxxxx)authornameversionurloptionsattrsr   rx   )	addfinalizer	functoolspartialsetattrwarningsrq   r   lendir)r   requestrp   distro   s       @r   test_empty_optionsz+TestDistributionBehavior.test_empty_options   s    
 	 	gxG	
  
 5zQD	)))r   c                 l   ddd}t        |      }|j                          |j                  j                  ddgk(  sJ |j                  j                  ddgk(  sJ ddd}t        |      }|j                          |j                  j                  dgk(  sJ |j                  j                  dgk(  sJ y )None,two)keywords	platformsry   onetwozfoo bar)r   finalize_optionsmetadatar   r   r   rz   r   s      r   test_finalize_optionsz.TestDistributionBehavior.test_finalize_options   s    &Y?%( }}&&5%.88}}%%%77&Y?%(}}&&9+55}}%%)444r   c                     t               }|j                  J |j                         }|dgk(  sJ |j                  dgk(  sJ d|_        |j                         }|g dk(  sJ y )Nr5   r   )r5   r   r   )r   command_packagesr7   )r   r   cmdss      r   test_get_command_packagesz2TestDistributionBehavior.test_get_command_packages   so    ~$$,,((*+,,,$$)<(=== )((*::::r   c                     t               }t        j                  t              5  |j	                  dd       d d d        y # 1 sw Y   y xY w)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
c                     t         j                  j                  t        di|       t	               }|j                         }t	        ddgi      }|j                         }t        |      dz
  t        |      k(  sJ y )Nz[distutils]
script_args--no-user-cfgry   r%   )rV   rW   r4   pydistutils_cfgr   r#   r   )r   	temp_homer1   	all_filesfiless        r   test_find_config_files_disablez7TestDistributionBehavior.test_find_config_files_disable   sm    ?O<iHN'')	/@AB##% 9~!SZ///r   c                 F    t        ddi      }|j                  ddgk(  sJ y )Nr   )r4   r   ry   r4   r   )r   r   )r   r1   s     r   test_script_args_list_coercionz7TestDistributionBehavior.test_script_args_list_coercion   s+    /IJK }}/ ::::r   zplatform.system() == "Windows"z Windows does not honor chmod 000c                     |j                  t              j                  dd       |j                  d       t	               j                          y)zV
        Finding config files should not fail when directory is inaccessible.
        rj   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   s<     	?+66rG6L((*r   N)r   )r   r   r   r2   r8   rB   r   markskipifr   r.   rf   rk   r   r   r   r   r   r   r   r   r   r   r,   r,   4   s    A
/( [[<::EEEL  ;C	;CzA0*65 	;-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y)TestMetadatac                     t        j                         }|j                  j                  |       |j	                         S r   )ioStringIOr   write_pkg_filegetvalue)r   r   sios      r   format_metadatazTestMetadata.format_metadata  s+    kkm$$S)||~r   c                     ddd}t        |      }| j                  |      }d|v sJ d|j                         vsJ d|j                         vsJ d|j                         vsJ y )Npackage1.0)ru   rv   zMetadata-Version: 1.0	provides:	requires:
obsoletes:)r   r   lowerr   rz   r   metas       r   test_simple_metadataz!TestMetadata.test_simple_metadata  sg    "u5E"##D)&$..$**,..$**,..4::<///r   c                    ddddgd}t        |      }|j                  j                         ddgk(  sJ |j                         ddgk(  sJ | j                  |      }d|v sJ d|j	                         vsJ d|j	                         vsJ y )Nr   r   zpackage.subru   rv   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  "y-&@@@##D)&$..$**,..4::<///r   c                     t        j                  t              5  t        dddgd       d d d        y # 1 sw Y   y xY w)Nr   r   my.pkg (splat)r   r   r   
ValueErrorr   r   s    r   test_provides_illegalz"TestMetadata.test_provides_illegal,  9    ]]:& 	"uCSBTU	 	 	   4=c                 0   ddddgd}t        |      }|j                  j                         ddgk(  sJ |j                         ddgk(  sJ | j                  |      }d|v sJ d|j	                         vsJ d|v sJ d	|v sJ d
|j	                         vsJ y )Nr   r   otherzanother (==1.0)ru   rv   requiresr   r   zRequires: otherzRequires: another (==1.0)r   )r   r   get_requiresr   r   r   s       r   test_requireszTestMetadata.test_requires2  s     "34

 E"}}))+9J/KKK  "w0A&BBB##D)&$..$**,.. D((*d224::<///r   c                     t        j                  t              5  t        dddgd       d d d        y # 1 sw Y   y xY w)Nr   r   r   r   r   r   s    r   test_requires_illegalz"TestMetadata.test_requires_illegalB  r   r   c                     dt        dg      d}t        |      }t        |j                  j                  t
              sJ y )Nr   r   )ru   r   )iterr   r@   r   r   r   r   s      r   test_requires_to_listz"TestMetadata.test_requires_to_listH  s6    "gY@E"$--00$777r   c                 0   ddddgd}t        |      }|j                  j                         ddgk(  sJ |j                         ddgk(  sJ | j                  |      }d|v sJ d|j	                         vsJ d|j	                         vsJ d	|v sJ d
|v sJ y )Nr   r   r   zanother (<1.0)ru   rv   	obsoletesr   r   r   zObsoletes: otherzObsoletes: another (<1.0))r   r   get_obsoletesr   r   r   s       r   test_obsoleteszTestMetadata.test_obsoletesM  s    !#34

 E"}}**,:J0KKK!!#1A'BBB##D)&$..$**,..$**,..!T))*d222r   c                     t        j                  t              5  t        dddgd       d d d        y # 1 sw Y   y xY w)Nr   r   r   r   r   r   s    r   test_obsoletes_illegalz#TestMetadata.test_obsoletes_illegal]  s9    ]]:& 	"uDTCUV	 	 	r   c                     dt        dg      d}t        |      }t        |j                  j                  t
              sJ y )Nr   r   )ru   r   )r   r   r@   r   r   r   r   s      r   test_obsoletes_to_listz#TestMetadata.test_obsoletes_to_listc  s6    "wiAE"$--114888r   c                     dddgd}t        |      }|j                         dgk(  sJ | j                  |      }d|v sJ y )NBoa3.0#Programming Language :: Python :: 3ru   rv   classifiersr   )r   get_classifiersr   r   s       r   test_classifierzTestMetadata.test_classifierh  sW    AB

 E"##%*O)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 y )Nr   r   )r   r   should be a listr   r   )r   messagesr@   r   r   r   r   caplogrz   r1   s       r   test_classifier_invalid_typez)TestMetadata.test_classifier_invalid_types  sk    C

 !V__Q%777!**00$77zz%%eM.B)CCCCr   c                 X    ddg dd}t        |      }|j                         g dk(  sJ y )NMontyr   spameggszlife of brianru   rv   r   )r   get_keywordsr   s      r   test_keywordszTestMetadata.test_keywords  s6    9

 E"  "&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 y )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  sk    9

 !V__Q%777!**--t44zz""d5+<&====r   c                 X    ddddgd}t        |      }|j                         ddgk(  sJ y )Nr   r   	GNU/LinuxSome Evil Platformru   rv   r   )r   get_platformsr   s      r   test_platformszTestMetadata.test_platforms  sA    %';<

 E"!!#5I'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 y )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  sk    <

 !V__Q%777!**..55zz##tE+,>'????r   c                 T    dddd}t        |      }| j                  |      }d|v sJ y )Nr   r   zhttp://example.org/boa)ru   rv   download_urlr   )r   r   r   s       r   test_download_urlzTestMetadata.test_download_url  s<    4

 E"##D)&$...r   c                     t        j                  d      }dd|d}t        |      }| j                  |      }|j	                  dd      }||v sJ y )Nzc        example::
              We start here
            and continue here
          and end here.r   r   ru   rv   long_descriptionz	
        
)textwrapdedentr   r   replace)r   	long_descrz   r   r   s        r   test_long_descriptionz"TestMetadata.test_long_description  s[    OO
	 #u)TE"##D)||ND1D   r   c                     t         j                  j                  t        di|       |t        z  }t	        |      t               j                         v sJ y)z*
        pydistutils.cfg is found
        rj   N)rV   rW   r4   r   r   r   r#   )r   r   config_paths      r   test_custom_pydistutilsz$TestMetadata.test_custom_pydistutils  sE     	?B/;/1;<>#C#C#EEEEr   c                     t         j                  j                  ddi|       |dz  }|j                  dt	        |             t	        |      t               j                         v sJ y )Nzoverrides.cfgrj   DIST_EXTRA_CONFIG)rV   rW   r4   setenvr   r   r#   )r   monkeypatchr`   filenames       r   test_extra_pydistutilsz#TestMetadata.test_extra_pydistutils  sW    ?B/:o-.H>8} @ @ BBBBr   c                 J    ddg}t        |      }|d   dk(  sJ |d   dk(  sJ y )N)abcr1   )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  s9    +\:(5Q?22Q9,,,r   c                    t               }g t        _        d|_        d|_        |j                          |j                         j                  j                  d      D cg c]  }|j                         dk7  s| }}|sJ y c c}w )NTzsetup.pyr	  rj   )
r   r&   r'   helpscript_namer/   
readouterroutsplitstrip)r   r   capsysr   lineoutputs         r   test_show_helpzTestMetadata.test_show_help  s}    ~	%! $..044::4@
DJJLTVDVD
 
 v
s   B8Bc                    dddddddgdgd	}t        |      }|j                  }t        j                         }|j	                  |       |j                  d
       |j                  |       |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 y )Nr   r   descrr   zhttp://example.comr   r   foo)ru   rv   r  descriptionr  r   r   r   )r   r   r   r   r   seekread_pkg_fileru   rv   r0  r  r   r   r   r   )r   rz   r   r   PKG_INFOs        r   test_read_metadatazTestMetadata.test_read_metadata  s     & 0
 E"== ;;=)ax(}}	))5((##u,,$$(<<<  UEN22!!))!!))  UG+++r   c                    dddd}t        |      }|j                  }t        j                         5 }|j	                  |       |j                         }ddd       t        j                        }t        j                  j                  ddd	      }t        j                         5 }t        j                  j                  ||
      j                  |       |j                  d       t        j                  |      }ddd       t        |d   j!                               }	t        d   j!                               }
|
|	k(  sJ y# 1 sw Y   xY w# 1 sw Y   UxY w)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_stringr9  EmailPolicy	generator	Generatorflattenr1  message_from_fileset
splitlines)r   rz   r   r   bufferrn   origr9  regen	orig_desc
regen_descs              r   'test_round_trip_through_email_generatorz4TestMetadata.test_round_trip_through_email_generator  s6     4

 E"==[[] 	$f##F+//#C	$
 ((-)) * 

 [[] 	4fOO%%fV%<DDTJKKN++F3E		4 ]+6689	}-88:;
Y&&&+	$ 	$	4 	4s   "E'AEEE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,  r4  rI  r   r   r   r   r     s    
000 8
3 9
	/DH>K@/!FC-,:$'r   r   )$r   r;  email.generatoremail.policyr|   r   osr&   r
  unittest.mockrX   r   distutils.cmdr   distutils.distr   r   distutils.testsr   typingr   jaraco.pathrV   r   ru   r   r   r    fixturer(   combine_markersr   usefixturesTempdirManagerr,   r   r   r   r   <module>rW     s$        	 	 
    ! 9 #   G+,/@@" "	"| 	"   	$%S+w55 S+ & % S+l $%Y'7)) Y' & %Y'r   