ó
Š]c           @   s¯  d  Z  d 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 Z d d l	 m
 Z
 m Z m Z m Z m Z d d l m Z m Z d d l m Z d d l m Z m Z y" d d l Z d d l Z e Z Wn e k
 r÷ e Z n Xy d d l Z e Z Wn e k
 r-e d	 ƒ Z n Xy d d l Z Wn e k
 rWe  Z n Xd
 „  Z! d e j" e j# e j$ f d „  ƒ  YZ% d „  Z& e' d k r«e e& ƒ  ƒ n  d S(   s!   Tests for distutils.archive_util.s   $Id$iÿÿÿÿN(   t
   splitdrive(   t   check_archive_formatst   make_tarballt   make_zipfilet   make_archivet   ARCHIVE_FORMATS(   t   find_executablet   spawn(   t   support(   t   check_warningst   run_unittestt   zipc         C   s@   t  j j r t Sy |  j t j ƒ  ƒ Wn t k
 r; t SXt S(   sF   
    Return True if the filename can be saved in the file system.
    (	   t   ost   patht   supports_unicode_filenamest   Truet   encodet   syst   getfilesystemencodingt   UnicodeEncodeErrort   False(   t   filename(    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt   can_fs_encode&   s    t   ArchiveUtilTestCasec           B   s¯  e  Z e j e d  ƒ d „  ƒ Z d „  Z d „  Z d „  Z e j e d ƒ e j e	 d ƒ of e	 d ƒ d ƒ d	 „  ƒ ƒ Z
 e j e	 d
 ƒ d ƒ d „  ƒ Z e j e d ƒ e j e d ƒ d „  ƒ ƒ Z d „  Z d „  Z e j e d ƒ d „  ƒ Z e j e d ƒ e j e d ƒ d „  ƒ ƒ Z d „  Z e j e d  ƒ d „  ƒ Z e j e d  ƒ e j e d ƒ d ƒ d „  ƒ ƒ Z e j e d  ƒ e j e d ƒ d ƒ d „  ƒ ƒ Z RS(   s   requires zlibc         C   s   |  j  d ƒ d  S(   Nt   archive(   t   _make_tarball(   t   self(    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt   test_make_tarball7   s    c         C   s§  |  j  ƒ  } |  j | d g d ƒ |  j | d g d ƒ t j t j j | d ƒ ƒ |  j | d d g d ƒ |  j  ƒ  } t j t | ƒ d t | ƒ d k d ƒ t j j | | ƒ } t j	 ƒ  } t j
 | ƒ z t t | ƒ d d	 ƒ Wd  t j
 | ƒ X| d
 } |  j t j j | ƒ ƒ t j j | | ƒ } t j	 ƒ  } t j
 | ƒ z! t t | ƒ d d	 d d  ƒWd  t j
 | ƒ X| d } |  j t j j | ƒ ƒ d  S(   Nt   file1t   xxxt   file2t   subt   file3i    s)   source and target should be on same drivei   t   .s   .tar.gzt   compresss   .tar(   t   mkdtempt
   write_fileR   t   mkdirR   t   joint   unittestt
   skipUnlessR    t   getcwdt   chdirR   t
   assertTruet   existst   None(   R   t   target_namet   tmpdirt   tmpdir2t	   base_namet   old_dirt   tarball(    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyR   ;   s0    #
!
c         C   s?   t  j | ƒ } z | j ƒ  } | j ƒ  | SWd  | j ƒ  Xd  S(   N(   t   tarfilet   opent   getnamest   sortt   close(   R   R   t   tart   names(    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt   _tarinfo`   s    
c         C   sÙ   |  j  ƒ  } t j j | d ƒ } t j | ƒ |  j | d g d ƒ |  j | d g d ƒ t j t j j | d ƒ ƒ |  j | d d g d ƒ t j t j j | d ƒ ƒ |  j  ƒ  } t j j | d ƒ } | | | f S(	   Nt   distR   R   R   R   R    t   sub2R   (   R#   R   R   R&   R%   R$   (   R   R/   R<   R0   R1   (    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt   _create_filesi   s    s   Requires zlibR9   t   gzips   Need the tar command to runc   	      C   s"  |  j  ƒ  \ } } } t j ƒ  } t j | ƒ z t | d ƒ Wd  t j | ƒ X| d } |  j t j j | ƒ ƒ t j j | d ƒ } d d d d g } d d d g } t j ƒ  } t j | ƒ z t	 | ƒ t	 | ƒ Wd  t j | ƒ X|  j t j j | ƒ ƒ |  j
 |  j | ƒ |  j | ƒ ƒ t j j | d	 ƒ } t j ƒ  } t j | ƒ z t | d d
 d  ƒWd  t j | ƒ X| d } |  j t j j | ƒ ƒ t j j | d	 ƒ } t j ƒ  } t j | ƒ z t | d d
 d  d t ƒWd  t j | ƒ X| d } |  j t j j | ƒ ƒ d  S(   NR<   s   .tar.gzs   archive2.tar.gzR9   s   -cfs   archive2.tarR?   s   -f9R   R"   s   .tart   dry_run(   R>   R   R)   R*   R   R+   R   R,   R&   R   t   assertEqualR;   R-   R   (	   R   R/   R0   R1   R2   R3   t   tarball2t   tar_cmdt   gzip_cmd(    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt   test_tarfile_vs_tarw   sF    

"

R"   s    The compress program is requiredc         C   sZ  |  j  ƒ  \ } } } t j ƒ  } t j | ƒ z6 t ƒ  ' } t j d ƒ t | d d d ƒWd  QXWd  t j | ƒ X| d } |  j t j	 j
 | ƒ ƒ |  j t | j ƒ d ƒ t j | ƒ t j ƒ  } t j | ƒ z< t ƒ  - } t j d ƒ t | d d d d t ƒWd  QXWd  t j | ƒ X|  j t j	 j
 | ƒ ƒ |  j t | j ƒ d ƒ d  S(   Nt   alwaysR<   R"   s   .tar.Zi   R@   (   R>   R   R)   R*   R	   t   warningst   simplefilterR   R+   R   R,   RA   t   lent   removeR   t   assertFalse(   R   R/   R0   R1   R2   t   wR3   (    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt   test_compress_deprecated­   s,    
s   Need zip support to runc         C   st   |  j  ƒ  } |  j | d g d ƒ |  j | d g d ƒ |  j  ƒ  } t j j | d ƒ } t | | ƒ | d } d  S(   NR   R   R   R   s   .zip(   R#   R$   R   R   R&   R   (   R   R/   R0   R1   R3   (    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt   test_make_zipfileÍ   s    c         C   s?   |  j  t d d d g ƒ d ƒ |  j  t d d g ƒ d  ƒ d  S(   Nt   gztarR   R   (   RA   R   R-   (   R   (    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt   test_check_archive_formatsÜ   s    c         C   s;   |  j  ƒ  } t j j | d ƒ } |  j t t | d ƒ d  S(   NR   R   (   R#   R   R   R&   t   assertRaisest
   ValueErrorR   (   R   R/   R1   (    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt   test_make_archiveá   s    c      	   C   sI  t  r/ t j d ƒ d } t j d ƒ d } n
 d } } |  j ƒ  \ } } } t j j |  j	 ƒ  d ƒ } t
 | d | | d | d | ƒ} |  j t j j | ƒ ƒ t
 | d | | ƒ } |  j t j j | ƒ ƒ t
 | d | | d | d | ƒ} |  j t j j | ƒ ƒ t
 | d | | d d d d	 ƒ} |  j t j j | ƒ ƒ d  S(
   Ni    t   rootR   R   t   ownert   groupR9   t	   kjhkjhkjgt   oihohoh(   t   UID_GID_SUPPORTt   grpt   getgrgidt   pwdt   getpwuidR>   R   R   R&   R#   R   R+   R,   (   R   RV   RU   t   base_dirt   root_dirR1   t   res(    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt   test_make_archive_owner_groupæ   s"    
	s   Requires grp and pwd supportc   
   	   C   s  |  j  ƒ  \ } } } t j ƒ  } t j | ƒ t j d ƒ d } t j d ƒ d } z% t | d d d  d | d | ƒ} Wd  t j | ƒ X|  j
 t j j | ƒ ƒ t j | ƒ } zA x: | j ƒ  D], }	 |  j |	 j d ƒ |  j |	 j d ƒ qÂ WWd  | j ƒ  Xd  S(   Ni    R<   R"   RU   RV   (   R>   R   R)   R*   RZ   R[   R\   R]   R   R-   R+   R   R,   R4   R5   t
   getmembersRA   t   uidt   gidR8   (
   R   R/   R0   R1   R2   RV   RU   t   archive_nameR   t   member(    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt   test_tarfile_root_owner  s     c         C   sx   t  j ƒ  } d „  } | g  d f t d <zA y t d d d |  j ƒ  ƒWn n X|  j t  j ƒ  | ƒ Wd  t d =Xd  S(   Nc          _   s   t  ƒ  ‚ d  S(   N(   t   RuntimeError(   t   argst   kw(    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt   _breaks  s    s   xxx fileR   R_   (   R   R)   R   R   R#   RA   (   R   t   current_dirRk   (    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt   test_make_archive_cwd  s    	c         C   s   |  j  d ƒ d S(   sG   
        Mirror test_make_tarball, except filename is unicode.
        u   archiveN(   R   (   R   (    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt   test_make_tarball_unicode)  s    u   Ã¥rchivs'   File system cannot handle this filenamec         C   s   |  j  d ƒ d S(   sm   
        Mirror test_make_tarball, except filename is unicode and contains
        latin characters.
        u   Ã¥rchivN(   R   (   R   (    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt    test_make_tarball_unicode_latin10  s    u   ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–c         C   s   |  j  d ƒ d S(   s   
        Mirror test_make_tarball, except filename is unicode and contains
        characters outside the latin charset.
        u   ã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–N(   R   (   R   (    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt"   test_make_tarball_unicode_extended:  s    (   t   __name__t
   __module__R'   R(   t   zlibR   R   R;   R>   R   RE   RM   t   ZIP_SUPPORTRN   RP   RS   Ra   RY   Rg   Rm   Rn   R   Ro   Rp   (    (    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyR   3   s0   	%			4			c           C   s   t  j t ƒ S(   N(   R'   t	   makeSuiteR   (    (    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt
   test_suiteD  s    t   __main__((   t   __doc__t   __revision__R'   R   R   R4   t   os.pathR    RG   t   distutils.archive_utilR   R   R   R   R   t   distutils.spawnR   R   t   distutils.testsR   t   test.test_supportR	   R
   RZ   R\   R   RY   t   ImportErrorR   t   zipfileRt   Rs   R-   R   t   TempdirManagert   LoggingSilencert   TestCaseR   Rv   Rq   (    (    (    s2   lib/python2.7/distutils/tests/test_archive_util.pyt   <module>   sD   (



		ÿ 	