
    nf (                        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mZ ddlm	Z	 ddlm
Z
 ddlmZ ddlZddlZddlZddlmZ ddlmZ ddlmZ  ej,                  d	
      d        Zd Zej2                  j5                   eed       d      Z G d d      Z G d d      Z G d d      Zej,                  d        Z d Z!d Z"ej,                  d        Z#d Z$ej2                  jK                  d      d        Z&d Z'd Z(y)z"Tests for the 'setuptools' package    N)DistutilsOptionError)DistutilsSetupError)	Extension)ZipFile)Require)VersionT)autousec              #      K   d  y wN )
tmpdir_cwds    x/var/dept/share/cheung/public_html/OutSchool/python/env/lib/python3.12/site-packages/setuptools/tests/test_setuptools.pyisolated_dirr      s	     	s   c                      dt         j                  _        | j                  ddg       	 t	        j
                  di | dt         j                  _        S # dt         j                  _        w xY w)zDReturn distribution from 'setup(**args)', without executing commandscommandlinescript_argsinstallNr   )	distutilscore_setup_stop_after
setdefault
setuptoolssetup)argss    r   	makeSetupr      sQ     (5INN$ 	OOMI;/0'$'+/	(4	(s   A A+get_module_constantzbytecode support not available)reasonc                   H    e Zd Zd Zd Zed        Zed        Zed        Zy)TestDependsc                    t        t        d      sy d }|j                  }t        j                  |dd      J t        j                  |dd      dk(  sJ t        j                  |dd      dk(  sJ t        j                  |dd      J y )	Nextract_constantc                      da t        ay Ntest)xzyr       r   f1z(TestDepends.testExtractConst.<locals>.f16   s    AAr(   qr%   r$   r'   r&   )hasattrdep__code__r!   )selfr)   fcs      r   testExtractConstzTestDepends.testExtractConst1   s    s./	
 [[ ##BR0888 ##BR0F::: ##BR0B666 ##BR0888r(   c                 b   t        j                  t              5  t        j                  d       d d d        t        j                  t              5  t        j                  d       d d d        t        j                  d      \  }}}|j                          y # 1 sw Y   jxY w# 1 sw Y   ?xY w)Nzno-such.-thingzsetuptools.non-existentzsetuptools.tests)pytestraisesImportErrorr-   find_moduleclose)r/   fpis       r   testFindModulezTestDepends.testFindModuleI   s|    ]];' 	.OO,-	.]];' 	7OO56	7//"451a			. 	.	7 	7s   BB%B"%B.c                     ddl m} t        j                  dd      |k(  sJ t        j                  dd      t        j
                  k(  sJ t        j                  dd      t        k(  sJ y )	Nr   __version__jsonr>   sysversionz setuptools.tests.test_setuptools__doc__)r?   r>   r-   r   r@   rA   rB   )r/   r>   s     r   testModuleExtractzTestDepends.testModuleExtractQ   sb    $&&v}=LLL&&ui8CKKGGG##$F	R	
r(   c                 F   t        ddd      }|j                  dk(  sJ |j                  dk(  sJ |j                  t	        d      k(  sJ |j
                  dk(  sJ |j                         dk(  sJ ddlm} t        |j                               |k(  sJ |j                  d      sJ |j                  d	      rJ |j                  d
      rJ |j                         sJ |j                         sJ t        ddd      }|j                         rJ |j                         rJ y )NJsonz1.0.3r?   r>   z
Json-1.0.3r   r=   z1.0.9z0.9.1unknownzDo-what-I-meanz1.0zd-w-i-m)r   namemodulerequested_versionr   	attribute	full_namer?   r>   strget_version
version_ok
is_present
is_current)r/   reqr>   s      r   testRequirezTestDepends.testRequire\   s   fgv.xx6!!!zzV###$$(8888}}---}},...$3??$%444~~g&&&>>'***>>),,,~~~~&y9>>###>>####r(   c                 |   t        dd dd      }|j                  J |j                  J |j                  J |j	                         dk(  sJ |j
                  dk(  sJ ddlm} |D cg c]!  }t        j                  j                  |      # }}|j                  |      sJ |j                  |      sJ y c c}w )NTeststestszhttp://example.com)homepager   )__path__)r   formatrJ   rI   rK   rV   setuptools.testsrW   ospathdirnamerO   rP   )r/   rQ   rW   r9   pathss        r   test_require_presentz TestDepends.test_require_presentt   s    
 gtW7KLzz!!!}}$$$$$,,,}}')))||3333--56#66~~e$$$~~e$$$ 7s   *&B9N)	__name__
__module____qualname__r1   r;   needs_bytecoderC   rR   r^   r   r(   r   r   r   0   sH    90 
 
 $ $. % %r(   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)

TestDistroc                     t        ddg      | _        t        ddg      | _        t        g dddg| j                  | j                  fi       | _        y )	Nzbar.extzbar.czc.yzy.c)aza.bza.b.cbczb.dr%   )packages
py_modulesext_modulespackage_dir)r   e1e2r   dist)r/   methods     r   setup_methodzTestDistro.setup_method   sK    Iy1EE7+4s|$''*	
	r(   c                 d    t        | j                  t        j                  j                        sJ y r   )
isinstancero   r   Distributionr/   s    r   testDistroTypezTestDistro.testDistroType   s     $))Z__%A%ABBBr(   c                    | j                   j                  d       | j                   j                  ddgk(  sJ | j                   j                  d       | j                   j                  dgk(  sJ | j                   j                  dgk(  sJ | j                   j                  | j
                  | j                  gk(  sJ | j                   j                  d       | j                   j                  g k(  sJ | j                   j                  dgk(  sJ | j                   j                  | j
                  gk(  sJ t               j                  d       y )Nrf   rg   rh   r%   )ro   exclude_packageri   rj   rk   rm   rn   r   ru   s    r   testExcludePackagezTestDistro.testExcludePackage   s   		!!#&yy!!c3Z///		!!#&yy!!cU***yy##u,,,yy$$$''(::::		!!#&yy!!R'''yy##u,,,yy$$	111 	##C(r(   c                    | j                   j                  | j                  g       | j                   j                  | j                  gk(  sJ | j                   j                  | j                  g       | j                   j                  | j                  | j                  gk(  sJ | j                   j                  | j                  g       | j                   j                  | j                  | j                  gk(  sJ y )Nrk   )ro   excluderm   rk   rn   includeru   s    r   testIncludeExcludezTestDistro.testIncludeExclude   s    		twwi0yy$$	111 			twwi0yy$$$''(:::: 			twwi0yy$$$''(::::r(   c                     | j                   j                  g d       | j                   j                  g k(  sJ | j                   j                  dgk(  sJ | j                   j                  | j
                  gk(  sJ y )N)rh   rg   rf   ri   r%   )ro   r|   ri   rj   rk   rm   ru   s    r   testExcludePackageszTestDistro.testExcludePackages   sg    		?3yy!!R'''yy##u,,,yy$$	111r(   c                     t               }|j                  dgdg| j                  g       t               }|j                  dgdg| j                  g       y )Nrf   rg   )ri   rj   rk   )r   r}   rn   r|   )r/   ro   s     r   	testEmptyzTestDistro.testEmpty   sH    {seDGG9M{seDGG9Mr(   c                    | j                   j                  d      sJ | j                   j                  d       | j                   j                  d      rJ | j                   j                  d      sJ | j                   j                  d       | j                   j                  d      rJ | j                   j                  d      sJ | j                   j                  d       | j                   j                  d      rJ y )Nrf   rg   rh   )ro   has_contents_forrx   ru   s    r   testContentszTestDistro.testContents   s    yy))#...		!!#&99--c222yy))#...		!!#&99--c222yy))#...		!!#&99--c2222r(   c                    t        j                  t              5  | j                  j	                  d       d d d        t        j                  t              5  | j                  j                  d       d d d        t        j                  t              5  | j                  j	                  ddi       d d d        t        j                  t              5  | j                  j                  ddi       d d d        t        j                  t              5  | j                  j	                  ddi       d d d        t        j                  t              5  | j                  j                  ddi       d d d        t        j                  t              5  | j                  j	                  dg       d d d        t        j                  t              5  | j                  j                  dg       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   cxY w# 1 sw Y   0xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr%   )nonexistent_optionr'   r   r{   r*   )rl   )r3   r4   r   ro   r}   r|   ru   s    r   testInvalidIncludeExcludez$TestDistro.testInvalidIncludeExclude   s   ]]./ 	6II5	6]]./ 	6II5	6]]./ 	3IISz2	3]]./ 	3IISz2	3]]./ 	6II3*5	6]]./ 	6II3*5	6 ]]./ 	1II3%0	1]]./ 	1II3%0	1 	1	6 	6	6 	6	3 	3	3 	3	6 	6	6 	6	1 	1	1 	1s_   G<H	HH#H0H<II<H	HH #H-0H9<IIIN)r_   r`   ra   rq   rv   ry   r~   r   r   r   r   r   r(   r   rd   rd      s,    	
C)";2N31r(   rd   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestCommandTestsc                     t               j                  d      }t        |t        j                  j
                        sJ y r#   )r   get_command_objrs   r   cmdCommand)r/   test_cmds     r   testTestIsCommandz"TestCommandTests.testTestIsCommand   s.    ;..v6(IMM$9$9:::r(   c                     t        ddg      }|j                  d      }|j                          |j                  dk(  sJ y )Nr$   z--test-suite=foo.tests.suiter   foo.tests.suiter   r   ensure_finalized
test_suite)r/   ts1s     r   testLongOptSuiteWNoDefaultz+TestCommandTests.testLongOptSuiteWNoDefault   sA    V-K$LM!!&)~~!2222r(   c                 |    t        d      j                  d      }|j                          |j                  dk(  sJ y )Nzbar.tests.suite)r   r$   r   )r/   ts2s     r   testDefaultSuitez!TestCommandTests.testDefaultSuite   s7    #45EEfM~~!2222r(   c                     t        dg d      j                  d      }|j                          |j                  dk(  sJ |j                  dk(  sJ y )N	bar.tests)r$   -m	foo.tests)r   r   r$   r   zfoo.tests.test_suite)r   r   r   test_moduler   )r/   ts3s     r   testDefaultWModuleOnCmdLinez,TestCommandTests.testDefaultWModuleOnCmdLine   sR    "0K

/&
! 	 	+---~~!7777r(   c                     t        g d      j                  d      }t        j                  t              5  |j                          d d d        y # 1 sw Y   y xY w)N)r$   r   r   z-sr   r   r$   )r   r   r3   r4   r   r   )r/   ts4s     r   testConflictingOptionsz'TestCommandTests.testConflictingOptions   sL    L

/&
! 	 ]]/0 	#  "	# 	# 	#s   AAc                 r    t               j                  d      }|j                          |j                  J y r#   r   )r/   ts5s     r   testNoSuitezTestCommandTests.testNoSuite   s0    k))&1~~%%%r(   N)	r_   r`   ra   r   r   r   r   r   r   r   r(   r   r   r      s     ;33
8#&r(   r   c                 x    | j                  d       | dz  j                  d       | dz  j                  d       | S )Nfoo
foo/bar.py 
readme.txt)mkdirwrite)tmpdirs    r   example_sourcer     s9    
LLl!!"%l!!"%Mr(   c                     t        t        j                  t        |                   }ddg}|D cg c]  }| j	                  |       }}||k(  sJ y c c}w )Nr   r   )listr   findallrL   join)r   foundexpectedfns       r   test_findallr     sW    ##C$789El+H2:;B##B';H;H <s   Ac                     | j                         5  t        t        j                               }d d d        dt        j
                  j                  dd      g}|k(  sJ y # 1 sw Y   3xY w)Nr   r   zbar.py)as_cwdr   r   r   rZ   r[   r   )r   r   r   s      r   test_findall_curdirr     s]    				  +Z'')*+bggll5(;<HH+ +s   A!!A*c                     d}d}	 t        j                  ||       t        j                  |       y# t        t        t        f$ r t        j                  d       Y Aw xY w)z/
    Skip if cannot create a symbolic link
    linktargetzCannot create symbolic linksN)rZ   symlinkOSErrorNotImplementedErrorAttributeErrorr3   skipremove)r   link_fn	target_fns      r   can_symlinkr     sU    
 GI4


9g& IIg (.9 4234s   2 )AAc                     | j                         5  t        j                  dd       t        t	        j
                               }|g k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   bar)r   rZ   r   r   r   r   )r   r   r   s      r   test_findall_missing_symlinkr   *  sM    	 


5% Z'')*{{  s   ;AAz$unable to exclude tests; #4475 #3260c                     t        |       5 }|j                         D cg c]"  }|j                  t        j                  d      $ }}d d d        D ]  }d|vrJ  y c c}w # 1 sw Y   xY w)N/z/tests/)r   namelistreplacerZ   sep)setuptools_wheelzipfiler8   contentsmembers        r   )test_its_own_wheel_does_not_contain_testsr   1  sv    	!	" Hg4;4D4D4FGqAIIbffc*GGH  '&&&' HH Hs   A#'AA#A##A,c                     t        |       5 }|j                         D cg c]"  }|j                  t        j                  d      $ }}d d d        t        d D              sJ y c c}w # 1 sw Y   #xY w)Nr   c              3   $   K   | ]  }d |v  
 yw)z
cli-64.exeNr   .0r   s     r   	<genexpr>z2test_wheel_includes_cli_scripts.<locals>.<genexpr>>  s     =&|v%=s   r   r   r   rZ   r   anyr   r   r8   r   s       r   test_wheel_includes_cli_scriptsr   :  sm    	!	" Hg4;4D4D4FGqAIIbffc*GGH =H==== HH H   A*'A%A*%A**A3c                     t        |       5 }|j                         D cg c]"  }|j                  t        j                  d      $ }}d d d        t        d D              sJ y c c}w # 1 sw Y   #xY w)Nr   c              3   H   K   | ]  }t        j                  d |        yw)z_vendor/.*\.dist-info/METADATAN)researchr   s     r   r   z8test_wheel_includes_vendored_metadata.<locals>.<genexpr>E  s!      AG		3V<s    "r   r   s       r   %test_wheel_includes_vendored_metadatar   A  sx    	!	" Hg4;4D4D4FGqAIIbffc*GGH  KS    HH Hr   ))rB   r   r@   rZ   distutils.corer   distutils.cmddistutils.errorsr   r   r   r   r   r3   r   setuptools.distsetuptools.dependsdependsr-   r   packaging.versionr   fixturer   r   markskipifr,   rb   r   rd   r   r   r   r   r   r   xfailr   r   r   r   r(   r   <module>r      s   ( 	 
 	   1 0 $       & % 
 
0 ##*+++ $ T% T%nW1 W1t"& "&J   
 
 @A' B'>r(   