
 XE                 @   s  d  Z  d d l Z d d l Z d d l Z 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
 m Z d d l m Z d d l m Z m Z d d l m Z d d l m Z m Z d d l m Z d d l m Z d d	 l m Z i d
 d 6d d 6d
 g d 6i d g d
 6d 6Z d e Z e j d f k rUd j d  Z n d Z d d   Z d d   Z  d d d  Z! d d   Z" d d   Z# Gd  d!   d! e j$  Z% Gd" d#   d# e
 j&  Z' Gd$ d%   d% e
 j&  Z( d& d'   Z) d S)(zsdist tests    N)environmenttest_svn)skipIf)StringIOunicode)sdistwalk_revctrl)manifest_maker)Distribution)	svn_utils
sdist_testnamez0.0versionpackagesz*.txtpackage_dataz*from setuptools import setup

setup(**%r)
   u   smörbröd.pyzlatin-1c               C   s0   t  j t  j a a t   t   t  _ t  _ d  S)N)sysstdoutstderr
old_stdout
old_stderrr    r   r   M/home/ubuntu/projects/ifolica/build/setuptools/setuptools/tests/test_sdist.pyquiet,   s    r   c               C   s   t  t t _ t _ d  S)N)r   r   r   r   r   r   r   r   r   unquiet1   s    r   zutf-8c             C   s    t  j d k r |  j |  S|  S)Nr   )r   )r   version_infoencode)sencodingr   r   r   b6   s    r   c             C   sX   t  j d k rA t |  t  rA |  j t j j d  t d   S|  j t j d  Sd  S)Nr   ascii/)r   )	r   r   
isinstancestrreplaceossepr   r   )pathr   r   r   posix=   s    "r(   c             C   sl   t  |  t  r t j d |   Sy4 |  j d  }  t j d |   }  |  j d  }  Wn t k
 rg Yn X|  S)NZNFDzutf-8)r"   r   unicodedata	normalizedecoder   UnicodeError)r'   r   r   r   	decomposeE   s    r-   c               @   s   e  Z d  Z d d   Z d d   Z d d   Z d d   Z e j d k rf d
 d   Z	 d d   Z
 n  d d   Z e j d k r d d   Z n  e e j d k o e j   d k d  d d    Z d d   Z d S)TestSdistTestc             C   s   t  j   |  _ t t j j |  j d  d  } | j t  | j	   t j j |  j d  } t j
 |  x< d d d d g D]( } t t j j | |  d  j	   q Wt j   |  _ t j |  j  d  S)Nzsetup.pywr   z__init__.pyza.txtzb.txtzc.rst)tempfilemkdtemptemp_diropenr%   r'   joinwriteSETUP_PYclosemkdirgetcwdold_cwdchdir)selffZtest_pkgfnamer   r   r   setUpS   s    !
&zTestSdistTest.setUpc             C   s$   t  j |  j  t j |  j  d  S)N)r%   r;   r:   shutilrmtreer2   )r<   r   r   r   tearDownd   s    zTestSdistTest.tearDownc             C   s   t  t  } d | _ t |  } | j   t   z | j   Wd t   X| j j	 } |  j
 t j j d d  | k  |  j
 t j j d d  | k  |  j
 t j j d d  | k  d S)zRegression test for pull request #4: ensures that files listed in
        package_data are included in the manifest even if they're not added to
        version control.
        zsetup.pyNr   za.txtzb.txtzc.rst)r
   SETUP_ATTRSscript_namer   ensure_finalizedr   runr   filelistfiles
assertTruer%   r'   r4   )r<   distcmdmanifestr   r   r   test_package_data_in_sdisth   s    	
""z(TestSdistTest.test_package_data_in_sdistc             C   sM  t  t  } d | _ t |  } t j j d d  | _ t j d  t j j d d  } t	   z+ | j
   | j j j |  | j   Wd  t   Xt | j d  } | j   } | j   y | j d  } Wn/ t k
 rt j   d } |  j |  Yn Xt j d
 k r0|  j t |  | k  n |  j t |  | k  d  S)Nzsetup.pyzsdist_test.egg-infozSOURCES.txtr   u   smörbröd.pyrbUzUTF-8   r   )r   )r
   rC   rD   r	   r%   r'   r4   rL   r8   r   rF   rG   rH   appendwrite_manifestr   r3   readr7   r+   UnicodeDecodeErrorr   exc_infofailr   rI   r(   )r<   rJ   mmfilenamerL   contentsZ
u_contentser   r   r   +test_manifest_is_written_with_utf8_encoding   s.    	

z9TestSdistTest.test_manifest_is_written_with_utf8_encodingr   c             C   sT  t  t  } d | _ t |  } t j j d d  | _ t j d  t j j t	 d  t	 d   } t
   z: | j   | j d  } | j j j |  | j   Wd  t   Xt | j d  } | j   } | j   y | j d  Wn/ t k
 rt j   d	 } |  j |  Yn X|  j t |  | k  |  j | | j j k  d  S)
Nzsetup.pyzsdist_test.egg-infozSOURCES.txtr   u   smörbröd.pyzutf-8rN   zUTF-8rO   )r
   rC   rD   r	   r%   r'   r4   rL   r8   r   r   rF   r+   rG   rH   rP   rQ   r   r3   rR   r7   rS   r   rT   rU   rI   r(   )r<   rJ   rV   rW   
u_filenamerL   rX   rY   r   r   r   )test_write_manifest_allows_utf8_filenames   s.    	!

z7TestSdistTest.test_write_manifest_allows_utf8_filenamesc             C   sQ  t  t  } d | _ t |  } t j j d d  | _ t j d  t j j t	 d  t
  } t   z= | j   | j d d  } | j j j |  | j   Wd  t   Xt | j d  } | j   } | j   y | j d  Wn/ t k
 rt j   d	 } |  j |  Yn X|  j t |  | k  |  j | | j j k  d  S)
Nzsetup.pyzsdist_test.egg-infozSOURCES.txtr   zutf-8surrogateescaperN   zUTF-8rO   )r
   rC   rD   r	   r%   r'   r4   rL   r8   r   LATIN1_FILENAMEr   rF   r+   rG   rH   rP   rQ   r   r3   rR   r7   rS   r   rT   rU   assertFalser(   )r<   rJ   rV   rW   r[   rL   rX   rY   r   r   r   ,test_write_manifest_skips_non_utf8_filenames   s.    	

z:TestSdistTest.test_write_manifest_skips_non_utf8_filenamesc             C   s4  t  t  } d | _ t |  } | j   t   z | j   Wd  t   Xt j	 j
 t d  t d   } t j	 j
 d d  | _ t | j d  } | j t d  |  | j   t | d  j   g  | j _ t   z | j   Wd  t   Xt j d k r| j d
  } n  |  j | | j j k  d  S)Nzsetup.pyr   u   smörbröd.pyzsdist_test.egg-infozSOURCES.txtab
r/   r   zutf-8)r   )r
   rC   rD   r   rE   r   rF   r   r%   r'   r4   r   rL   r3   r5   r7   rG   rH   read_manifestr   r   r+   rI   )r<   rJ   rK   rW   rL   r   r   r   (test_manifest_is_read_with_utf8_encoding   s,    	
!
z6TestSdistTest.test_manifest_is_read_with_utf8_encodingc             C   sR  t  t  } d | _ t |  } | j   t   z | j   Wd  t   Xt j	 j
 t d  t  } t j	 j
 d d  | _ t | j d  } | j t d  |  | j   t | d  j   g  | j _ t   zD y | j   Wn/ t k
 rt j   d } |  j |  Yn XWd  t   X| j d	  } |  j | | j j k  d  S)
Nzsetup.pyr   zsdist_test.egg-infozSOURCES.txtra   rb   r/   rO   zlatin-1)r
   rC   rD   r   rE   r   rF   r   r%   r'   r4   r   r^   rL   r3   r5   r7   rG   rH   rc   rS   r   rT   rU   r+   r_   )r<   rJ   rK   rW   rL   rY   r   r   r   +test_read_manifest_skips_non_utf8_filenames  s2    	

z9TestSdistTest.test_read_manifest_skips_non_utf8_filenameszUTF-8zMUnittest fails if locale is not utf-8 but the manifests is recorded correctlyc             C   sq  t  t  } d | _ t |  } | j   t j j t d  t d   } t	 | d  j
   t   z | j   Wd  t   Xt j d k r t |  } n  t j d k rTt j   } t j d k r)| d k r | j d  } |  j | | j j k  qQ| j d	  } |  j | | j j k  qm| j d
  } |  j | | j j k  n |  j | | j j k  d  S)Nzsetup.pyr   u   smörbröd.pyr/   darwinr   win32cp1252mbcszutf-8)r   )r
   rC   rD   r   rE   r%   r'   r4   r   r3   r7   r   rF   r   r   platformr-   r   getfilesystemencodingr+   rI   rG   rH   )r<   rJ   rK   rW   fs_encr   r   r   %test_sdist_with_utf8_encoded_filenameE  s.    	
!z3TestSdistTest.test_sdist_with_utf8_encoded_filenamec             C   sM  t  t  } d | _ t |  } | j   t j j t d  t	  } t
 | d  j   |  j t j j |   t   z | j   Wd  t   Xt j d k r0t j d k rt j   } | d k r | j d  } n | j d  } |  j | | j j k  qI| j d  } |  j | | j j k  n |  j | | j j k  d  S)	Nzsetup.pyr   r/   r   rg   ri   zlatin-1)r   )r
   rC   rD   r   rE   r%   r'   r4   r   r^   r3   r7   rI   isfiler   rF   r   r   r   rj   rk   r+   rG   rH   r_   )r<   rJ   rK   rW   rl   r   r   r   'test_sdist_with_latin1_encoded_filenamel  s*    	
z5TestSdistTest.test_sdist_with_latin1_encoded_filenameN)r   )r   )r   )__name__
__module____qualname__r?   rB   rM   rZ   r   r   r\   r`   rd   re   r   localegetpreferredencodingrm   ro   r   r   r   r   r.   Q   s   &''&(!&r.   c                   s:   e  Z d  Z   f d d   Z d d   Z d d   Z   S)TestDummyOutputc                s>   t  j j d d d d  |  _ d |  _ t t |   j   d  S)N
setuptoolstestssvn_dataz	dummy.zipdummy)r%   r'   r4   datafiledatanamesuperru   r?   )r<   )	__class__r   r   r?     s    	zTestDummyOutput.setUpc       	      C   s  t  j d g d |  j d d \ } } | rj d t j j d  } | d | 7} | | 7} t |   n  | j   } d( } t d# t j j d   xn | D]f } d$ } x8 | D]0 } t	 j
 | |  r t d% |  d& } Pq q W| s t d' | | f   q q W| S))Nr   ZpypathZdata_streamr   zDIR: .z
  SDIST RETURNED: %i

running sdistrunning egg_infocreating dummy\.egg-infowriting dummy\.egg-info*writing top-level names to dummy\.egg-info+writing dependency_links to dummy\.egg-info&writing manifest file 'dummy\.egg-info&reading manifest file 'dummy\.egg-info(reading manifest template 'MANIFEST\.in'creating dummy-0.1.1"making hard links in dummy-0\.1\.1copying files to dummy-0\.1\.1copying \S+ -> dummy-0\.1\.1copying dummycopying dummy\.egg-info!hard linking \S+ -> dummy-0\.1\.1hard linking dummyhard linking dummy\.egg-infoWriting dummy-0\.1\.1creating distcreating 'distCreating tar archiverunning checkadding 'dummy-0\.1\.1,tar .+ dist/dummy-0\.1\.1\.tar dummy-0\.1\.1gzip .+ dist/dummy-0\.1\.1\.tar4removing 'dummy-0\.1\.1' \(and everything under it\)z	    DIR: Fz	   READ: TzUnexpexected: %s
-in-
%s)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   Zrun_setup_pyr:   r%   r'   abspathAssertionError
splitlinesprintrematch)	r<   codedatainfoZ	datalinespossiblelinefoundpatternr   r   r   _run  sb    	
                           zTestDummyOutput._runc             C   s   |  j    d  S)N)r   )r<   r   r   r   test_sources  s    zTestDummyOutput.test_sources)rp   rq   rr   r?   r   r   r   r   )r}   r   ru     s   9ru   c                   sA   e  Z d  Z   f d d   Z e e j d  d d    Z   S)TestSvnc                s   t  j j   } | s d  St d d   | j d  D d  d   |  _ |  j s` t d   n= |  j d k  r t d |   n |  j d k r d |  _ n  d |  j |  _ t j	 j
 d d d |  j d  |  _ t t |   j   d  S)Nc             S   s   g  |  ] } t  |   q Sr   )int).0xr   r   r   
<listcomp>  s   	 z!TestSvn.setUp.<locals>.<listcomp>r~      zNo SVN tools installedrO   r   zInsufficient SVN Version %s	      zsvn%i%i_examplerv   rw   rx   z.zip)rO   r   )rO   r   )rO   r   )r   ZSvnInfoZget_svn_versiontuplesplitbase_version
ValueErrorr{   r%   r'   r4   rz   r|   r   r?   )r<   r   )r}   r   r   r?     s    /	zTestSvn.setUpz"No SVN to text, in the first placec             C   s  |  j  d k r d } d } n d } d } t t j j d  t j j | d  t j j | d	  t j j | d
  t j j | d  t j j | d	  t j j | d
  t j j | d  t j j | d  t j j d d
  t j j d | d  t j j d | d	  t j j d | d  t j j d | d  t j j d | d  t j j d | d	  t j j d | d  t j j d | d  t j j d | d  t j j d d d  t j j d d  t j j d d  g  } |  j t d d   t   D  |  d  S)NrO      zthird party2zthird party3Zthird_party2Zthird_party3za filezChanges.txtZMD5SUMSz
README.txtzTODO.txtZfinZthird_partyfolderzWatashiNiYomimasu.txtZoopszZuMachen.txtz
lalala.txtz	quest.txtc             s   s   |  ] } | Vq d  S)Nr   )r   r   r   r   r   	<genexpr>  s    z'TestSvn.test_walksvn.<locals>.<genexpr>)rO   r   )r   setr%   r'   r4   ZassertEqualr   )r<   Zfolder2Zfolder3expectedr   r   r   test_walksvn  s:    	zTestSvn.test_walksvn)rp   rq   rr   r?   r   r   Z
_svn_checkr   r   r   )r}   r   r     s   r   c               C   s   t  j j t  S)N)unittestZdefaultTestLoaderZloadTestsFromNamerp   r   r   r   r   
test_suite  s    r   )*__doc__rs   r%   r@   r   r0   r   r)   r   Zsetuptools.testsr   r   Zsetuptools.tests.py26compatr   Zsetuptools.compatr   r   Zsetuptools.command.sdistr   r   Zsetuptools.command.egg_infor	   Zsetuptools.distr
   rv   r   rC   r6   r   r   r^   r   r   r   r(   r-   ZTestCaser.   ZZippedEnvironmentru   r   r   r   r   r   r   <module>   sF   

 DE=