î
½1kd˜E  ã               @   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   úQ/var/www/pythonscrapper/code/venv/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)z²Regression 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\.tarú4removing '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=