a  ze7@sdZddlZddlZddlZddlZddlmZddlZddlm Z ddl m Z m Z m Z mZmZddlmZmZddlmZddlmZmZmZmZzddlZddlZd ZWneyd ZYn0zddlZd ZWneyed ZYn0zddl Z d Z!Wneyd Z!Yn0z ddl"Z"Wney>dZ"Yn0z ddl#Z#WneyddZ#Yn0d d Z$Gdddej%ej&ej'Z(ddZ)e*dkree)dS)z!Tests for distutils.archive_util.N) splitdrive) archive_util)check_archive_formats make_tarball make_zipfile make_archiveARCHIVE_FORMATS)find_executablespawn)support)check_warnings run_unittestpatch change_cwdTFzipcCs8tjjr dSz|tWnty2YdS0dS)zF Return True if the filename can be saved in the file system. TF)ospathsupports_unicode_filenamesencodesysgetfilesystemencodingUnicodeEncodeError)filenamerU/opt/bitninja-python-dojo/embedded/lib/python3.9/distutils/tests/test_archive_util.py can_fs_encode/s rc@seZdZeeddBddZeedddZeeddd Z ee d d d Z ee d dddZ ee ddddZddZddZgdZddeDZddZeedoedoedd d!Zeed"d#d$d%Zeeoed&d'd(Zeed)d*d+Zd,d-Zd.d/Zd0d1Zd2d3Zeedd4d5Zeedd6d7Zee d8d9d:Z d;d<Z!eed=ee"d>d?d@Z#dAS)CArchiveUtilTestCasezNeed zlib support to runarchivecCs,|}|||d|j||ddddS)N.tar.gz.tarcompress _create_files _make_tarball)selfnametmpdirrrrtest_make_tarball@sz%ArchiveUtilTestCase.test_make_tarballcCs|}|j|dddddS)Nrrgzipr r"r%r'rrrtest_make_tarball_gzipHsz*ArchiveUtilTestCase.test_make_tarball_gzipzNeed bz2 support to runcCs|}|j|dddddS)Nrz.tar.bz2bzip2r r"r*rrrtest_make_tarball_bzip2Msz+ArchiveUtilTestCase.test_make_tarball_bzip2zNeed lzma support to runcCs|}|j|dddddS)Nrz.tar.xzxzr r"r*rrrtest_make_tarball_xzRsz(ArchiveUtilTestCase.test_make_tarball_xzårchivz'File system cannot handle this filenamecCs|ddS)zV Mirror test_make_tarball, except filename contains latin characters. r0Nr(r%rrrtest_make_tarball_latin1Wsz,ArchiveUtilTestCase.test_make_tarball_latin1のアーカイブcCs|ddS)z{ Mirror test_make_tarball, except filename contains extended characters outside the latin charset. r4Nr1r2rrrtest_make_tarball_extended_sz.ArchiveUtilTestCase.test_make_tarball_extendedcKs|}tt|dt|dkdtj||}t|*tt|ddfi|Wdn1sn0Y||}| tj || | ||j dS)Nrz)source and target should be on same drivedist)mkdtempunittest skipUnlessrrrjoinrr assertTrueexists assertEqual_tarinfo_created_files)r%r'Z target_namesuffixkwargstmpdir2 base_nametarballrrrr$hs 8z!ArchiveUtilTestCase._make_tarballcCs8t|}z|}||W|S|0dSN)tarfileopenZgetnamessortclose)r%rtarnamesrrrr?xs zArchiveUtilTestCase._tarinfo)zdist/z dist/file1z dist/file2z dist/sub/zdist/sub/file3z dist/sub2/cCsg|]}|dqS)/)rstrip).0prrr zArchiveUtilTestCase.cCs~|}tj|d}t|||dgd||dgdttj|d||ddgdttj|d|S)Nr7Zfile1xxxZfile2subZfile3Zsub2)r8rrr;mkdirZ write_file)r%r'r7rrrr#s z!ArchiveUtilTestCase._create_filesrKr)z*Need the tar, gzip and zlib command to runc Cs|}|}tj|d}t}t|zt|dWt|n t|0|d}|tj |tj|d}gd}gd}t}t|zt |t |Wt|n t|0|tj || | ||j | | ||j tj|d}t}t|zt|dddWt|n t|0|d}|tj |tj|d}t}t|zt|ddd d Wt|n t|0|d}|tj |dS) Nrr7rzarchive2.tar.gz)rKz-cf archive2.tarr7)r)z-fz-9rVr rTr!dry_run)r#r8rrr;getcwdchdirrr<r=r r>r?r@) r%r'rCrDold_dirrEZtarball2Ztar_cmdZgzip_cmdrrrtest_tarfile_vs_tarsL      z'ArchiveUtilTestCase.test_tarfile_vs_tarr!z The compress program is requiredc CsT|}tj|d}t}t|zLt(}t dt |dddWdn1sb0YWt|n t|0|d}| tj || t|jdt|t}t|zPt*}t dt |dddd Wdn1s0YWt|n t|0|tj || t|jddS) Nralwaysr7r!r z.tar.Zr6TrW)r#rrr;r8rYrZr warnings simplefilterrr<r=r>lenremoveZ assertFalse)r%r'rDr[wrErrrtest_compress_deprecateds0  .   (z,ArchiveUtilTestCase.test_compress_deprecatedz Need zip and zlib support to runcCs|}tj|d}t|t|dWdn1sB0Y|d}|tj|t |&}| t | |jWdn1s0YdS)Nrr7.zip)r#rrr;r8rrr<r=zipfileZipFiler>sortednamelist_zip_created_files)r%r'rDrEzfrrrtest_make_zipfiles ( z%ArchiveUtilTestCase.test_make_zipfilezNeed zip support to runcst|tjddgtjfdd}t|tjd||}tj|d}t |t |dWdn1sz0Y|d}| |dfd tj ifg| tj|t|&}| t||jWdn1s0YdS) Nzlibcs.|ddtjkr ||f|i|S)N compression)getre ZIP_STOREDappend)akwZcalledZ zipfile_classrr fake_zipfileszCArchiveUtilTestCase.test_make_zipfile_no_zlib..fake_zipfilerfrr7rdrbrm)rrrerfr#rrr;r8rrr>ror<r=rgrhri)r%rtr'rDrErjrrsrtest_make_zipfile_no_zlibs  ( z-ArchiveUtilTestCase.test_make_zipfile_no_zlibcCs*|tgdd|tgddS)N)gztarrSrrS)rvbztarxztarZztarrKr)r>rZ assertIsNoner2rrrtest_check_archive_formatssz.ArchiveUtilTestCase.test_check_archive_formatscCs*|}tj|d}|tt|ddS)NrrS)r8rrr;Z assertRaises ValueErrorr)r%r'rDrrrtest_make_archivesz%ArchiveUtilTestCase.test_make_archivecCsjt}dd}|gdftd<z>ztdd|dWn Yn0|t|Wtd=ntd=0dS)Nc_s tdSrF) RuntimeError)argsrrrrr_breaks!sz:ArchiveUtilTestCase.test_make_archive_cwd.._breakszxxx filerS)root_dir)rrYrrr8r>)r%Z current_dirr~rrrtest_make_archive_cwdsz)ArchiveUtilTestCase.test_make_archive_cwdcCsf|}tj|d}t|d|d}|tj||tj |d|| ||j dS)NrrKr7z archive.tar r#rrr;r8rr<r=r>basenamer?r@r%base_dirrDresrrrtest_make_archive_tar-s z)ArchiveUtilTestCase.test_make_archive_tarcCsf|}tj|d}t|d|d}|tj||tj |d|| ||j dS)Nrrvr7zarchive.tar.gzrrrrrtest_make_archive_gztar5s z+ArchiveUtilTestCase.test_make_archive_gztarcCsf|}tj|d}t|d|d}|tj||tj |d|| ||j dS)Nrrwr7zarchive.tar.bz2rrrrrtest_make_archive_bztar>s z+ArchiveUtilTestCase.test_make_archive_bztarzNeed xz support to runcCsf|}tj|d}t|d|d}|tj||tj |d|| ||j dS)Nrrxr7zarchive.tar.xzrrrrrtest_make_archive_xztarGs z+ArchiveUtilTestCase.test_make_archive_xztarcCstr"tdd}tdd}nd}}|}|}tj |d}t |d||||d}| tj |t |d||}| tj |t |d||||d}| tj |t |d||ddd}| tj |dS) Nrrootrr)ownergrouprKZ kjhkjhkjgZoihohoh) UID_GID_SUPPORTgrpgetgrgidpwdgetpwuidr#r8rrr;rr<r=)r%rrrrrDrrrrtest_make_archive_owner_groupPs*   z1ArchiveUtilTestCase.test_make_archive_owner_groupz Requires zlibzRequires grp and pwd supportc Cs|}tj|d}t}t|tdd}t dd}z t |dd||d}Wt|n t|0| tj |t|}z6|D] }||jd||jdqW|n |0dS)Nrrr7)r!rr)r#rrr;r8rYrZrrrrrr<r=rGrHZ getmembersr>uidgidrJ) r%r'rDr[rr archive_namermemberrrrtest_tarfile_root_ownerks$   z+ArchiveUtilTestCase.test_tarfile_root_ownerN)r)$__name__ __module__ __qualname__r9r: ZLIB_SUPPORTr(r+bz2r-lzmar/rr3r5r$r?rir@r#r r\rc ZIP_SUPPORTrkruryr{rrrrrrrrrrrrr<sd               6             rcCs ttSrF)r9Z makeSuiterrrrr test_suitesr__main__)+__doc__r9rrrGZos.pathrr^Z distutilsrZdistutils.archive_utilrrrrrZdistutils.spawnr r Zdistutils.testsr Z test.supportr r rrrrr ImportErrorrerrlrrrrZTempdirManagerZLoggingSilencerZTestCaserrrrrrrsZ            L