a 9êdgÝ7ã@s¨dZddlZddlZddlZddlZddlmZddlZddlm Z ddl m Z m Z m Z mZmZddlmZmZddlmZddlmZmZmZmZzddlZddlZd ZWneyÂd ZYn0zddlZd ZWneyîed ƒZYn0zddl Z d Z!Wneyd Z!Yn0z ddl"Z"Wney>dZ"Yn0z ddl#Z#WneyddZ#Yn0d d „Z$Gdd„dej%ej&ej'ƒZ(dd„Z)e*dkr¤ee)ƒƒdS)z!Tests for distutils.archive_util.éN)Ú splitdrive)Ú archive_util)Úcheck_archive_formatsÚ make_tarballÚ make_zipfileÚ make_archiveÚARCHIVE_FORMATS)Úfind_executableÚspawn)Úsupport)Úcheck_warningsÚ run_unittestÚpatchÚ change_cwdTFÚzipcCs8tjjr dSz| t ¡¡Wnty2YdS0dS)zF Return True if the filename can be saved in the file system. TF)ÚosÚpathÚsupports_unicode_filenamesÚencodeÚsysÚgetfilesystemencodingÚUnicodeEncodeError)Úfilename©rú=/usr/local/lib/python3.9/distutils/tests/test_archive_util.pyÚ can_fs_encode/s rc@sªeZdZe ed¡dBdd„ƒZe ed¡dd„ƒZe ed¡dd „ƒZ e e d ¡d d „ƒZ e e d ƒd¡dd„ƒZ e e dƒd¡dd„ƒZdd„Zdd„Zgd¢Zdd„eDƒZdd„Ze edƒoÎedƒoÎed¡d d!„ƒZe ed"ƒd#¡d$d%„ƒZe eoed&¡d'd(„ƒZe ed)¡d*d+„ƒZd,d-„Zd.d/„Zd0d1„Zd2d3„Ze ed¡d4d5„ƒZe ed¡d6d7„ƒZe e d8¡d9d:„ƒZ d;d<„Z!e ed=¡e e"d>¡d?d@„ƒƒZ#dAS)CÚArchiveUtilTestCasezNeed zlib support to runÚarchivecCs,| ¡}| ||d¡|j||ddddS)Nú.tar.gzú.tar©Úcompress©Ú _create_filesÚ _make_tarball)ÚselfÚnameÚtmpdirrrrÚtest_make_tarball@sz%ArchiveUtilTestCase.test_make_tarballcCs| ¡}|j|dddddS)NrrÚgzipr r"©r%r'rrrÚtest_make_tarball_gzipHsz*ArchiveUtilTestCase.test_make_tarball_gzipzNeed bz2 support to runcCs| ¡}|j|dddddS)Nrz.tar.bz2Úbzip2r r"r*rrrÚtest_make_tarball_bzip2Msz+ArchiveUtilTestCase.test_make_tarball_bzip2zNeed lzma support to runcCs| ¡}|j|dddddS)Nrz.tar.xzÚxzr r"r*rrrÚtest_make_tarball_xzRsz(ArchiveUtilTestCase.test_make_tarball_xzõÃ¥rchivz'File system cannot handle this filenamecCs| d¡dS)zV Mirror test_make_tarball, except filename contains latin characters. r0N©r(©r%rrrÚtest_make_tarball_latin1Wsz,ArchiveUtilTestCase.test_make_tarball_latin1õã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–cCs| d¡dS)z{ Mirror test_make_tarball, except filename contains extended characters outside the latin charset. r4Nr1r2rrrÚtest_make_tarball_extended_sz.ArchiveUtilTestCase.test_make_tarball_extendedcKsª| ¡}t t|ƒdt|ƒdkd¡tj ||¡}t|ƒ*tt|ƒddfi|¤ŽWdƒn1sn0Y||}|  tj  |¡¡|  |  |¡|j ¡dS)Nrz)source and target should be on same driveéÚdist)ÚmkdtempÚunittestÚ skipUnlessrrrÚjoinrrÚ assertTrueÚexistsÚ assertEqualÚ_tarinfoÚ_created_files)r%r'Z target_nameÚsuffixÚkwargsÚtmpdir2Ú base_nameÚtarballrrrr$hsÿ 8z!ArchiveUtilTestCase._make_tarballcCs8t |¡}z| ¡}| ¡|W| ¡S| ¡0dS©N)ÚtarfileÚopenZgetnamesÚsortÚclose)r%rÚtarÚnamesrrrr?xs þzArchiveUtilTestCase._tarinfo)zdist/z dist/file1z dist/file2z dist/sub/zdist/sub/file3z dist/sub2/cCsg|]}| d¡‘qS)ú/)Úrstrip)Ú.0ÚprrrÚ ƒózArchiveUtilTestCase.cCs~| ¡}tj |d¡}t |¡| |dgd¡| |dgd¡t tj |d¡¡| |ddgd¡t tj |d¡¡|S)Nr7Zfile1ÚxxxZfile2ÚsubZfile3Zsub2)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|dƒWt |¡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 rT©r!Údry_run)r#r8rrr;ÚgetcwdÚchdirrr<r=r r>r?r@) r%r'rCrDÚold_dirrEZtarball2Ztar_cmdZgzip_cmdrrrÚtest_tarfile_vs_tar‘sL      z'ArchiveUtilTestCase.test_tarfile_vs_tarr!z The compress program is requiredc CsT| ¡}tj | ¡d¡}t ¡}t |¡zLtƒ(}t  d¡t |dddWdƒn1sb0YWt |¡n t |¡0|d}|  tj  |¡¡|  t|jƒd¡t |¡t ¡}t |¡zPtƒ*}t  d¡t |dddd Wdƒn1s0YWt |¡n t |¡0| tj  |¡¡|  t|jƒd¡dS) NrÚalwaysr7r!r z.tar.Zr6TrW)r#rrr;r8rYrZr ÚwarningsÚ simplefilterrr<r=r>ÚlenÚremoveZ assertFalse)r%r'rDr[ÚwrErrrÚtest_compress_deprecatedÊs0  .   ÿ(z,ArchiveUtilTestCase.test_compress_deprecatedz Need zip and zlib support to runcCsª| ¡}tj | ¡d¡}t|ƒt|dƒWdƒn1sB0Y|d}| tj |¡¡t   |¡&}|  t |  ¡ƒ|j¡Wdƒn1sœ0YdS)Nrr7ú.zip)r#rrr;r8rrr<r=ÚzipfileÚZipFiler>ÚsortedÚnamelistÚ_zip_created_files)r%r'rDrEÚzfrrrÚtest_make_zipfileës ( z%ArchiveUtilTestCase.test_make_zipfilezNeed zip support to runcsþt|tjddƒg‰tj‰‡‡fdd„}t|tjd|ƒ| ¡}tj | ¡d¡}t |ƒt |dƒWdƒn1sz0Y|d}|  ˆ|dfd tj ifg¡|  tj |¡¡t |¡&}|  t| ¡ƒ|j¡Wdƒn1sð0YdS) NÚzlibcs.| dd¡tjkr ˆ ||f¡ˆ|i|¤ŽS)NÚ compression)ÚgetreÚ ZIP_STOREDÚappend)ÚaÚkw©ZcalledZ zipfile_classrrÚ fake_zipfileszCArchiveUtilTestCase.test_make_zipfile_no_zlib..fake_zipfilerfrr7rdrbrm)rrrerfr#rrr;r8rrr>ror<r=rgrhri)r%rtr'rDrErjrrsrÚtest_make_zipfile_no_zlibús  (ÿ z-ArchiveUtilTestCase.test_make_zipfile_no_zlibcCs*| tgd¢ƒd¡| tgd¢ƒ¡dS)N)ÚgztarrSrrS)rvÚbztarÚxztarZztarrKr)r>rZ assertIsNoner2rrrÚtest_check_archive_formatssÿz.ArchiveUtilTestCase.test_check_archive_formatscCs*| ¡}tj |d¡}| tt|d¡dS)NrrS)r8rrr;Z assertRaisesÚ ValueErrorr)r%r'rDrrrÚtest_make_archivesz%ArchiveUtilTestCase.test_make_archivecCsjt ¡}dd„}|gdftd<z>ztdd| ¡dWn Yn0| t ¡|¡Wtd=ntd=0dS)Nc_s tƒ‚dSrF)Ú RuntimeError)ÚargsrrrrrÚ_breaks!sz:ArchiveUtilTestCase.test_make_archive_cwd.._breakszxxx filerS)Úroot_dir)rrYrrr8r>)r%Z current_dirr~rrrÚtest_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_dirrDÚresrrrÚtest_make_archive_tar-s z)ArchiveUtilTestCase.test_make_archive_tarcCsf| ¡}tj | ¡d¡}t|d|dƒ}| tj |¡¡| tj  |¡d¡| |  |¡|j ¡dS)Nrrvr7zarchive.tar.gzrrƒrrrÚtest_make_archive_gztar5s z+ArchiveUtilTestCase.test_make_archive_gztarcCsf| ¡}tj | ¡d¡}t|d|dƒ}| tj |¡¡| tj  |¡d¡| |  |¡|j ¡dS)Nrrwr7zarchive.tar.bz2rrƒrrrÚtest_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.xzrrƒrrrÚtest_make_archive_xztarGs z+ArchiveUtilTestCase.test_make_archive_xztarcCsâtr"t d¡d}t d¡d}nd}}| ¡}| ¡}tj  | ¡d¡}t |d||||d}|  tj  |¡¡t |d||ƒ}|  tj  |¡¡t |d||||d}|  tj  |¡¡t |d||ddd}|  tj  |¡¡dS) NrÚrootrr)ÚownerÚgrouprKZ kjhkjhkjgZoihohoh) ÚUID_GID_SUPPORTÚgrpÚgetgrgidÚpwdÚgetpwuidr#r8rrr;rr<r=)r%rŒr‹r„rrDr…rrrÚtest_make_archive_owner_groupPs* ÿ ÿ ÿz1ArchiveUtilTestCase.test_make_archive_owner_groupz Requires zlibzRequires grp and pwd supportc CsØ| ¡}tj | ¡d¡}t ¡}t |¡t d¡d}t   d¡d}z t |dd||d}Wt |¡n t |¡0|  tj  |¡¡t |¡}z6| ¡D] }| |jd¡| |jd¡qœW| ¡n | ¡0dS)Nrrr7)r!r‹rŒ)r#rrr;r8rYrZrŽrrr‘rr<r=rGrHZ getmembersr>ÚuidÚgidrJ) r%r'rDr[rŒr‹Ú archive_namerÚmemberrrrÚtest_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{r€r†r‡rˆr‰r’rr—rrrrr<sd         ÿ  ÿ   þ 6 ÿ  ÿ          rcCs t t¡SrF)r9Z makeSuiterrrrrÚ test_suite†srŸÚ__main__)+Ú__doc__r9rrrGZos.pathrr^Z distutilsrZdistutils.archive_utilrrrrrZdistutils.spawnr r Zdistutils.testsr Z test.supportr r rrrŽrrÚ ImportErrorreržrlr›rœrrZTempdirManagerZLoggingSilencerZTestCaserrŸr˜rrrrÚsZ            þL