
    ;eB                        	 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
mZ d dlmZ 	 d dlZdZn# e$ r dZY nw xY w	 d dlZd dlZdZn# e$ r dZY nw xY wd dlmZmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z" d dl#m$Z$ dZ%dZ& G d de          Z'd Z(e)dk    r e e(                       dS dS )    N)join)dedent)captured_stdoutrun_unittest)check_warningsTF)sdistshow_formats)Distribution)BasePyPIRCCommandTestCase)DistutilsOptionError)find_executable)WARN)FileList)ARCHIVE_FORMATSzF
from distutils.core import setup
import somecode

setup(name='fake')
z# file GENERATED by distutils, do NOT edit
README
buildout.cfg
inroot.txt
setup.py
data%(sep)sdata.dt
scripts%(sep)sscript.py
some%(sep)sfile.txt
some%(sep)sother_file.txt
somecode%(sep)s__init__.py
somecode%(sep)sdoc.dat
somecode%(sep)sdoc.txt
c                       e Zd Z fdZ fdZddZ ej        ed          d             Z	 ej        ed           ej
         ed          du d           ej
         ed	          du d
          d                                     Z ej        ed          d             Z ej        ed          d             Zd Zd Zd Zd Zd Zd Z ej
        ej        dk    d          d             Z ej        ed          d             Z ej        ed          d             Z ej        ed          d             Z ej        ed          d             Z ej        ed           ej        ed           ej
         ed          du d           ej
         ed	          du d
          d                                                 Z xZS )SDistTestCasec                    t          t          |                                            t          j                    | _        t          j        t          | j        d                     t          j        t          | j        d                     | 	                    | j        dfd           | 	                    | j        ddfd           | 	                    | j        dft                     t          j        | j                   d S )NsomecodedistREADMExxxz__init__.py#setup.py)superr   setUposgetcwdold_pathmkdirr   tmp_dir
write_fileSETUP_PYchdirself	__class__s    1/usr/lib/python3.11/distutils/tests/test_sdist.pyr   zSDistTestCase.setUp:   s     	mT""((***	
dlJ//000
dlF++,,,x0%888z=A3GGGz2H===
    c                     t          j        | j                   t          t          |                                            d S N)r   r#   r   r   r   tearDownr$   s    r'   r+   zSDistTestCase.tearDownH   s7    
mT""++-----r(   Nc                     	 |dddddd}t          |          }d|_        dg|_        d|_        t	          |          }d|_        ||fS )	Nfakez1.0r   )nameversionurlauthorauthor_emailr   r   Tr   )r
   script_namepackagesinclude_package_datar   dist_dir)r%   metadatar   cmds       r'   get_cmdzSDistTestCase.get_cmdM   sh     &5$(-/ /H H%%%#$(!DkkSyr(   zNeed zlib support to runc                 &   t          j        t          | j        dd                     |                     | j        dddfd           t          j        t          | j        dd                     |                     | j        dddfd           t          j        t          | j        dd                     |                     | j        dddfd           |                     | j        ddfd           |                                 \  }}d	g|_        |                                 |                                 t          | j        d
          }t          j	        |          }| 
                    |dg           t          j        t          |d                    }	 |                                }|                                 n# |                                 w xY wg d}| 
                    t          |          d |D                        d S )Nr   z.svnzok.pyr   .hgokz.gitz.nfs0001zipr   fake-1.0.zip) PKG-INFOr   r   	somecode/somecode/__init__.pyc                     g | ]}d |z   S z	fake-1.0/ .0xs     r'   
<listcomp>z6SDistTestCase.test_prune_file_list.<locals>.<listcomp>       *M*M*Mq;?*M*M*Mr(   )r   r   r   r    r!   r9   formatsensure_finalizedrunlistdirassertEqualzipfileZipFilenamelistclosesorted)r%   r   r8   dist_folderfileszip_filecontentexpecteds           r'   test_prune_file_listz"SDistTestCase.test_prune_file_list[   s    	dlJ77888z67CUKKK
dlJ66777z5 %	' 	' 	' 	dlJ77888z6 %	' 	' 	' 	z:>FFF LLNN	c g			 4<00
;'' 0111?4^#D#DEE	''))GNNHNN9 9 9*M*MH*M*M*MNNNNNs   G GtarzThe tar command is not foundgzipzThe gzip command is not foundc                    |                                  \  }}ddg|_        |                                 |                                 t	          | j        d          }t          j        |          }|                                 | 	                    |ddg           t          j
        t	          |d                     t          j
        t	          |d                     ddg|_        |                                 |                                 t          j        |          }|                                 | 	                    |ddg           d S )Ngztarr[   r   zfake-1.0.tarfake-1.0.tar.gz)r9   rK   rL   rM   r   r    r   rN   sortrO   remove)r%   r   r8   rU   results        r'   test_make_distributionz$SDistTestCase.test_make_distribution   s-    LLNN	c &			 4<00K((.2C!DEEE
	${N33444
	${$566777 g&			K((.2C!DEEEEEr(   c                    |                                  \  }}ddgdgd|_        |                     | j        ddfd           |                     | j        ddfd           t	          | j        d	          }t          j        |           |                     |d
fd           t	          | j        d          }t          j        |           t	          | j        d          }t          j        |           |                     |dfd           |                     | j        dfd           |                     | j        dfd           |                     |dfd           |                     |dfd           d	g dfddg|_        t	          | j        d          }t          j        |           |                     |dfd           t	          dd          g|_        dg|_	        d|_
        |                                 |                                 t	          | j        d          }t          j        |          }|                     |dg           t          j        t	          |d                    }		 |	                                }
|	                                 n# |	                                 w xY wg d}|                     t'          |
          d |D                        t)          t	          | j        d                    }	 |                                }|                                 n# |                                 w xY w|                     |t,          dt
          j        iz             d S )Nz*.cfgz*.dat*.txt)r?   r   r   doc.txtr   zdoc.datdatazdata.dtsomer;   zlast-message.txtbuildout.cfg
inroot.txtzfile.txtzother_file.txt)data/data.dtri   rj   notexistingsome/file.txtsome/other_file.txtscriptsz	script.pyr=   Tr   r>   )r?   r@   r   ri   zdata/rk   rj   zscripts/zscripts/script.pyr   zsome/rm   rn   rA   rB   zsomecode/doc.datzsomecode/doc.txtc                     g | ]}d |z   S rD   rE   rF   s     r'   rI   z3SDistTestCase.test_add_defaults.<locals>.<listcomp>   rJ   r(   MANIFESTsep)r9   package_datar!   r    r   r   r   
data_filesro   rK   use_defaultsrL   rM   rN   rO   rP   rQ   rR   rS   rT   openreadrq   rr   )r%   r   r8   data_dirsome_dirhg_dir
script_dirrU   rV   rW   rX   rY   fmanifests                 r'   test_add_defaultszSDistTestCase.test_add_defaults   s\    LLNN	c #*7!3*14 4z9=sCCCz9=sCCC f--
9-s333f--
dlE**
!34c:::~6<<<|4c::::.444#34c:::" %4 %4 %4 5 +02 $,	22

[13777Y445g			 4<00
;'' 0111?4^#D#DEE	''))GNNHNN( ( ( 	*M*MH*M*M*MNNN dlJ//00	vvxxHGGIIIIAGGIIII8ubfo#=>>>>>s   5J J4L4 4M
c                 X   |                      i           \  }}|                                 |                                 d |                     t                    D             }|                     t          |          d           |                                  |                                  \  }}|                                 d|_        |                                 d |                     t                    D             }|                     t          |          d           d S )N)r7   c                 <    g | ]}|                     d           |S zwarning: check:
startswithrG   msgs     r'   rI   z<SDistTestCase.test_metadata_check_option.<locals>.<listcomp>  9     7 7 7CNN#4557C 7 7 7r(      r   c                 <    g | ]}|                     d           |S r   r   r   s     r'   rI   z<SDistTestCase.test_metadata_check_option.<locals>.<listcomp>  r   r(   )	r9   rL   rM   get_logsr   rO   len
clear_logsmetadata_check)r%   r   r8   warningss       r'   test_metadata_check_optionz(SDistTestCase.test_metadata_check_option   s    LL"L--	c 				7 74==#6#6 7 7 7X*** 	LLNN	c			7 74==#6#6 7 7 7X*****r(   c                 "   |                                  \  }}t                      5 }t          j        d           |                                 |                     t          |j                  d           d d d            d S # 1 swxY w Y   d S )Nalways   )r9   r   r   simplefiltercheck_metadatarO   r   )r%   r   r8   ws       r'   test_check_metadata_deprecatedz,SDistTestCase.test_check_metadata_deprecated  s    LLNN	c 	1!(+++   S__a000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   ABBBc                 V   t                      5 }t                       d d d            n# 1 swxY w Y   t          t          j                              }d |                                                    d          D             }|                     t          |          |           d S )Nc                 `    g | ]+}|                                                     d           )|,S )z
--formats=)stripr   rG   lines     r'   rI   z3SDistTestCase.test_show_formats.<locals>.<listcomp>  sB     < < <4ZZ\\,,\::<$ < < <r(   
)r   r	   r   r   keysgetvaluesplitrO   )r%   stdoutnum_formatsoutputs       r'   test_show_formatszSDistTestCase.test_show_formats  s     	&NNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 /.0011< <6??#4#4#:#:4#@#@ < < <Vk22222s   *..c                    |                                  \  }}|                                 |                     |j        d           |                     |j        d           |                     |j        d           d|_        |                     t          |j                   dg|_        |                                 d|_        |                     t          |j                   d S )Nrq   MANIFEST.inr   r   r=   supazipa)	r9   finalize_optionsrO   r}   templater6   rK   assertRaisesr   )r%   r   r8   s      r'   test_finalize_optionsz#SDistTestCase.test_finalize_options!  s    LLNN	c 	z222}555v... .0DEEEg !.0DEEEEEr(   c                    |                                  \  }}t          j        | j                   |                     d|           |                                 t                      |_        |                                 | 	                    t                    }|                     t          |          d           d S )Nr   r   )r9   r   r#   r    r!   rL   r   filelistread_templater   r   rO   r   )r%   rX   r   r8   r   s        r'   _check_templatezSDistTestCase._check_template8  s    LLNN	c
w///zz==&&X*****r(   c                 0    |                      d           d S )Nztaunt knights *r   r%   s    r'   %test_invalid_template_unknown_commandz3SDistTestCase.test_invalid_template_unknown_commandB  s    ./////r(   c                 0    |                      d           d S )Npruner   r   s    r'   %test_invalid_template_wrong_argumentsz3SDistTestCase.test_invalid_template_wrong_argumentsE  s    W%%%%%r(   ntztest relevant for Windows onlyc                 0    |                      d           d S )Nzinclude examples/r   r   s    r'    test_invalid_template_wrong_pathz.SDistTestCase.test_invalid_template_wrong_pathI  s     	011111r(   c                 <   |                                  \  }}ddgi|_        |                     | j        ddfd           dg|_        |                                 |                                 t          |j                  }	 d |	                                
                    d          D             }|                                 n# |                                 w xY w|                     t          |          d           |                     | j        dd	fd           |                    d
          }d|_        |                                 |                                 t          |j                  }	 d |	                                
                    d          D             }|                                 n# |                                 w xY w|                     t          |          d           |                     d	|d                    d S )Nr   re   rf   r   r^   c                 f    g | ].}|                                 d k    |                                 /S r?   r   r   s     r'   rI   z4SDistTestCase.test_get_file_list.<locals>.<listcomp>]  <     / / /::<<2-- 

---r(   r      zdoc2.txtbuild_pyFc                 f    g | ].}|                                 d k    |                                 /S r   r   r   s     r'   rI   z4SDistTestCase.test_get_file_list.<locals>.<listcomp>p  s<     0 0 0$ JJLLB.. ...r(      )r9   rs   r!   r    rK   rL   rM   rv   r}   rw   r   rS   rO   r   get_command_obj	finalizedassertIn)r%   r   r8   r|   r}   r   	manifest2s          r'   test_get_file_listz SDistTestCase.test_get_file_listO  s    LLNN	c ('3z9=sCCCi				/ /1E1E / / /H GGIIIIAGGIIIIX*** 	z:>DDD ''
33"!!###				0 0!&&((..2F2F 0 0 0I GGIIIIAGGIIII 	Y+++j)B-00000s   1C C!>1G Gc                    |                                  \  }}|                                 |                                 t          |j                  }	 d |                                                    d          D             }|                                 n# |                                 w xY w|                     |d         d           d S )Nc                 f    g | ].}|                                 d k    |                                 /S r   r   r   s     r'   rI   z6SDistTestCase.test_manifest_marker.<locals>.<listcomp>  r   r(   r   r   z*# file GENERATED by distutils, do NOT edit)	r9   rL   rM   rv   r}   rw   r   rS   rO   )r%   r   r8   r|   r}   s        r'   test_manifest_markerz"SDistTestCase.test_manifest_markery  s     LLNN	c				/ /1E1E / / /H GGIIIIAGGIIII!E	G 	G 	G 	G 	Gs   1B B1c                    t          d          }|                                 \  }}|                                 |                     | j        |j        f|           |                     | j        dfd           |                     | j        dfd           |                     | j        dfd           |                                 |                     |j        j	        dg           d S )NzI            # bad.py
            #bad.py
            good.py
            zgood.pyz
# pick me!zbad.pyz# don't pick me!z#bad.py)
r   r9   rL   r!   r    r}   rM   rO   r   rV   )r%   contentsr   r8   s       r'   test_manifest_commentsz$SDistTestCase.test_manifest_comments  s        
 LLNN	cs|4h???y1<@@@x02DEEEy13EFFF			+i[99999r(   c                 ~   |                                  \  }}dg|_        |                                 |                     | j        |j        fd           |                     | j        dfd           |                                 |                     |j        j	        dg           t          |j                  }	 d |                                                    d          D             }|                                 n# |                                 w xY w|                     |dg           t          | j        dd          }t          j
        |          }	 d |D             }|                                 n# |                                 w xY w|                     t!          |          g d	           d S )
Nr^   zREADME.manualz0This project maintains its MANIFEST file itself.c                 f    g | ].}|                                 d k    |                                 /S r   r   r   s     r'   rI   z6SDistTestCase.test_manual_manifest.<locals>.<listcomp>  r   r(   r   r   r_   c                     g | ]	}|j         
S rE   )r.   )rG   tarinfos     r'   rI   z6SDistTestCase.test_manual_manifest.<locals>.<listcomp>  s    ==='===r(   )zfake-1.0zfake-1.0/PKG-INFOzfake-1.0/README.manual)r9   rK   rL   r!   r    r}   rM   rO   r   rV   rv   rw   r   rS   r   tarfilerT   )r%   r   r8   r|   r}   archive_namearchive	filenamess           r'   test_manual_manifestz"SDistTestCase.test_manual_manifest  s    LLNN	cis|4oFFF7K	M 	M 	M			+o->???	/ /1E1E / / /H GGIIIIAGGIIIIO#4555DL&2CDD,|,,	==W===IMMOOOOGMMOOOO	** -G -G -G 	H 	H 	H 	H 	Hs   =1D DE? ?Fzrequires zlibzRequires grp and pwd supportc                 $   |                                  \  }}dg|_        t          j        d          d         |_        t          j        d          d         |_        |                                 |	                                 t          | j        dd          }t          j        |          }	 |                                D ]8}|                     |j        d           |                     |j        d           9	 |                                 n# |                                 w xY w|                                  \  }}dg|_        |                                 |	                                 t          | j        dd          }t          j        |          }	 |                                D ].}|                     |j        t'          j                               /	 |                                 d S # |                                 w xY w)Nr^   r   r   r_   )r9   rK   pwdgetpwuidownergrpgetgrgidgrouprL   rM   r   r    r   rv   
getmembersrO   uidgidrS   r   getuid)r%   r   r8   r   r   members         r'   "test_make_distribution_owner_groupz0SDistTestCase.test_make_distribution_owner_group  s    LLNN	c iLOOA&	LOOA&				 DL&2CDD,|,,	!,,.. 0 0  Q///  Q////0 MMOOOOGMMOOOO LLNN	c i			 DL&2CDD,|,,
	!,,.. : :  RY[[9999: MMOOOOOGMMOOOOs   1AD D*AG9 9Hr*   )__name__
__module____qualname__r   r+   r9   unittest
skipUnlessZLIB_SUPPORTrZ   skipIfr   rc   r~   r   r   r   r   r   r   r   r   r.   r   r   r   r   r   UID_GID_SUPPORTr   __classcell__)r&   s   @r'   r   r   8   sq           . . . . .
    X'ABB*O *O CB*OX X'ABBX___U++t335 5X___V,,446 6F F6 65 5 CB
F8 X'ABBL? L? CBL?\ X'ABB+ + CB+,1 1 13 3 3F F F.+ + +0 0 0& & & X_RW_&FGG2 2 HG2
 X'ABB'1 '1 CB'1R X'ABBG G CBG  X'ABB: : CB:  X'ABBH H CBH: X77X*HIIX___U++t335 5X___V,,446 6( (6 65 5 JI 87( ( ( ( (r(   r   c                  X    t          j                                        t                    S r*   )r   
TestLoaderloadTestsFromTestCaser   rE   r(   r'   
test_suiter     s      66}EEEr(   __main__)*r   r   r   r   rP   os.pathr   textwrapr   test.supportr   r   test.support.warnings_helperr   zlibr   ImportErrorr   r   r   distutils.command.sdistr   r	   distutils.corer
   distutils.tests.test_configr   distutils.errorsr   distutils.spawnr   distutils.logr   distutils.filelistr   distutils.archive_utilr   r"   rq   r   r   r   rE   r(   r'   <module>r      s   ( 				                 6 6 6 6 6 6 6 6 7 7 7 7 7 7KKKLL   LLLJJJJJJOO   OOO 8 7 7 7 7 7 7 7 ' ' ' ' ' ' A A A A A A 1 1 1 1 1 1 + + + + + +       ' ' ' ' ' ' 2 2 2 2 2 2o o o o o- o o obF F F zL s!   8 AA
A AA