ó q®¸Qc@s¯dZdZddlZddlZddlZddlZddlmZddlZddl m Z m Z m Z m Z mZddlmZmZddlmZddlmZmZy"ddlZddlZeZWnek r÷eZnXyddlZeZWnek r-ed ƒZnXyddlZWnek rWe ZnXd „Z!d ej"ej#ej$fd „ƒYZ%d „Z&e'dkr«ee&ƒƒndS(s!Tests for distutils.archive_util.s$Id$iÿÿÿÿN(t splitdrive(tcheck_archive_formatst make_tarballt make_zipfilet make_archivetARCHIVE_FORMATS(tfind_executabletspawn(tsupport(tcheck_warningst run_unittesttzipcCs@tjjrtSy|jtjƒƒWntk r;tSXtS(sF Return True if the filename can be saved in the file system. ( tostpathtsupports_unicode_filenamestTruetencodetsystgetfilesystemencodingtUnicodeEncodeErrortFalse(tfilename((s7/sys/lib/python2.7/distutils/tests/test_archive_util.pyt can_fs_encode&s  tArchiveUtilTestCasecBs¯eZejedƒd„ƒZd„Zd„Zd„Zejedƒeje dƒofe dƒdƒd „ƒƒZ eje d ƒd ƒd „ƒZ ejedƒeje d ƒd„ƒƒZ d„Zd„Zejedƒd„ƒZejedƒejedƒd„ƒƒZd„Zejedƒd„ƒZejedƒejedƒdƒd„ƒƒZejedƒejedƒdƒd„ƒƒZRS(s requires zlibcCs|jdƒdS(Ntarchive(t _make_tarball(tself((s7/sys/lib/python2.7/distutils/tests/test_archive_util.pyttest_make_tarball7scCs§|jƒ}|j|dgdƒ|j|dgdƒtjtjj|dƒƒ|j|ddgdƒ|jƒ}tjt|ƒdt|ƒdkdƒtjj||ƒ}tj ƒ}tj |ƒzt t|ƒdd ƒWdtj |ƒX|d }|j tjj |ƒƒtjj||ƒ}tj ƒ}tj |ƒz!t t|ƒdd d dƒWdtj |ƒX|d }|j tjj |ƒƒdS( Ntfile1txxxtfile2tsubtfile3is)source and target should be on same driveit.s.tar.gztcompresss.tar(tmkdtempt write_fileR tmkdirR tjointunittestt skipUnlessRtgetcwdtchdirRt assertTruetexiststNone(Rt target_namettmpdirttmpdir2t base_nametold_dirttarball((s7/sys/lib/python2.7/distutils/tests/test_archive_util.pyR;s0  #     ! cCsEtj|ƒ}z$|jƒ}|jƒt|ƒSWd|jƒXdS(N(ttarfiletopentgetnamestsortttupletclose(RR ttartnames((s7/sys/lib/python2.7/distutils/tests/test_archive_util.pyt_tarinfo`s   cCsÙ|jƒ}tjj|dƒ}tj|ƒ|j|dgdƒ|j|dgdƒtjtjj|dƒƒ|j|ddgdƒtjtjj|dƒƒ|jƒ}tjj|dƒ}|||fS( NtdistRRRRR tsub2R(R#R R R&R%R$(RR/R=R0R1((s7/sys/lib/python2.7/distutils/tests/test_archive_util.pyt _create_filesis   s Requires zlibR:tgzipsNeed the tar command to runc Cs"|jƒ\}}}tjƒ}tj|ƒzt|dƒWdtj|ƒX|d}|jtjj|ƒƒtjj|dƒ}ddddg}dddg}tjƒ}tj|ƒzt |ƒt |ƒWdtj|ƒX|jtjj|ƒƒ|j |j |ƒ|j |ƒƒtjj|d ƒ}tjƒ}tj|ƒzt|dd dƒWdtj|ƒX|d }|jtjj|ƒƒtjj|d ƒ}tjƒ}tj|ƒzt|dd dd t ƒWdtj|ƒX|d }|jtjj|ƒƒdS( NR=s.tar.gzsarchive2.tar.gzR:s-cfs archive2.tarR@s-f9RR"s.tartdry_run(R?R R)R*RR+R R,R&Rt assertEqualR<R-R( RR/R0R1R2R3ttarball2ttar_cmdtgzip_cmd((s7/sys/lib/python2.7/distutils/tests/test_archive_util.pyttest_tarfile_vs_tarwsF      "      R"s The compress program is requiredc Cs[|jƒ\}}}tjƒ}tj|ƒz6tƒ'}tjdƒt|dddƒWdQXWdtj|ƒX|d}|jtj j |ƒƒ|j t |jƒdƒtj |ƒtjƒ}tj|ƒz<tƒ-}tjdƒt|ddddtƒWdQXWdtj|ƒX|jtj j |ƒ ƒ|j t |jƒdƒdS(NtalwaysR=R"s.tar.ZiRA(R?R R)R*R twarningst simplefilterRR+R R,RBtlentremoveR(RR/R0R1R2twR3((s7/sys/lib/python2.7/distutils/tests/test_archive_util.pyttest_compress_deprecated­s,          sNeed zip support to runcCst|jƒ}|j|dgdƒ|j|dgdƒ|jƒ}tjj|dƒ}t||ƒ|d}dS(NRRRRs.zip(R#R$R R R&R(RR/R0R1R3((s7/sys/lib/python2.7/distutils/tests/test_archive_util.pyttest_make_zipfileÍs   cCs?|jtdddgƒdƒ|jtddgƒdƒdS(NtgztarRR (RBRR-(R((s7/sys/lib/python2.7/distutils/tests/test_archive_util.pyttest_check_archive_formatsÜscCs;|jƒ}tjj|dƒ}|jtt|dƒdS(NRR(R#R R R&t assertRaisest ValueErrorR(RR/R1((s7/sys/lib/python2.7/distutils/tests/test_archive_util.pyttest_make_archiveás c CsItr/tjdƒd}tjdƒd}n d}}|jƒ\}}}tjj|j ƒdƒ}t |d||d|d|ƒ}|j tjj |ƒƒt |d||ƒ}|j tjj |ƒƒt |d||d|d|ƒ}|j tjj |ƒƒt |d||dddd ƒ}|j tjj |ƒƒdS( NitrootRR townertgroupR:t kjhkjhkjgtoihohoh( tUID_GID_SUPPORTtgrptgetgrgidtpwdtgetpwuidR?R R R&R#RR+R,(RRVRUtbase_dirtroot_dirR1tres((s7/sys/lib/python2.7/distutils/tests/test_archive_util.pyttest_make_archive_owner_groupæs"  sRequires grp and pwd supportc Cs|jƒ\}}}tjƒ}tj|ƒtjdƒd}tjdƒd}z%t|dddd|d|ƒ}Wdtj|ƒX|j tj j |ƒƒt j|ƒ}zAx:|jƒD],} |j| jdƒ|j| jdƒqÂWWd|jƒXdS(NiR=R"RURV(R?R R)R*RZR[R\R]RR-R+R R,R4R5t getmembersRBtuidtgidR9( RR/R0R1R2RVRUt archive_nameRtmember((s7/sys/lib/python2.7/distutils/tests/test_archive_util.pyttest_tarfile_root_owners   cCsxtjƒ}d„}|gdftdsD     (           ÿ