
 X]                 @   s  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 m Z m Z m Z m Z d  d l m Z m Z m Z d  d l m Z m Z y e Wn" e k
 r d  d l m Z Yn Xd d d	  Z Gd
 d   d e j  Z e j
 j Z Gd d   d e  Z  Gd d   d e  Z! Gd d   d e  Z" Gd d   d e  Z# Gd d   d e  Z$ Gd d   d e  Z% d S)    N)TestCase)	parse_requirementsVersionConflictparse_versionDistribution
EntryPointRequirementsafe_version	safe_name
WorkingSet)get_script_headeris_shnt_quote_arg)StringIO	iteritems)ImmutableSetFc             C   si   y t  |   } Wn! t k
 r3 t j |   } Yn X| sP t |  t j k  rT | S| d t j  d S)z copied from Python2.7Nz [truncated]...)repr	Exceptionobject__repr__lenpkg_resourcesZ_MAX_LENGTH)objshortresult r   Q/home/ubuntu/projects/ifolica/build/setuptools/setuptools/tests/test_resources.py	safe_repr   s    r   c               @   sF   e  Z d  Z d Z d d   Z d d   Z d d   Z d d	   Z d
 S)MetadatazAMock object to return metadata as if from an on-disk distributionc             G   s   t  |  |  _ d  S)N)dictmetadata)selfpairsr   r   r   __init__&   s    zMetadata.__init__c             C   s   | |  j  k S)N)r    )r!   namer   r   r   has_metadata)   s    zMetadata.has_metadatac             C   s   |  j  | S)N)r    )r!   r$   r   r   r   get_metadata,   s    zMetadata.get_metadatac             C   s   t  j |  j |   S)N)r   yield_linesr&   )r!   r$   r   r   r   get_metadata_lines/   s    zMetadata.get_metadata_linesN)__name__
__module____qualname____doc__r#   r%   r&   r(   r   r   r   r   r   #   s
   r   c               @   s   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z f  d d  Z	 d d   Z
 d d   Z d d   Z d S)DistroTestsc             C   s^  t  j g  d d  d d  } |  j t |  g   |  j | d g   | j t d   | j t d   | j t d   |  j | d  |  j t |  d g  |  j d d	   | d D d
 d d g  | j | d d  |  j d d	   | d D d
 d g  | j t d   |  j d d	   | d D d d
 d g  t g   } t d  } t d  } t	 d  \ } |  j | j
 | |  j d  | j |  |  j | j
 | |  j d
  t g   } | j |  | j |  |  j t | j
 | |  t g   } | j |  | j |  | j |  |  j | j
 | |  j d
  d  S)NplatformpythonFooPkgzFooPkg-1.3_1.eggzFooPkg-1.4-py2.4-win32.eggzFooPkg-1.2-py2.4.eggfoopkgc             S   s   g  |  ] } | j   q Sr   )version).0distr   r   r   
<listcomp>F   s   	 z.DistroTests.testCollection.<locals>.<listcomp>z1.4z1.3-1z1.2   c             S   s   g  |  ] } | j   q Sr   )r2   )r3   r4   r   r   r   r5   K   s   	 zFooPkg-1.9.eggc             S   s   g  |  ] } | j   q Sr   )r2   )r3   r4   r   r   r   r5   P   s   	 z1.9zFooPkg>=1.3)r   EnvironmentassertEquallistadddist_from_fn
assertTrueremover   r   
best_matchr2   assertRaisesr   )r!   adwsZfoo12Zfoo14reqr   r   r   testCollection6   s@    $!$zDistroTests.testCollectionc             C   s|   |  j  | j d  |  j  | j d  |  j  | j d  |  j  | j d  |  j  | j d  |  j  | j t d   d  S)Nr0   r1   z1.3-1z2.4win32)r8   project_namekeyr2   
py_versionr.   parsed_versionr   )r!   dr   r   r   checkFooPkgk   s    zDistroTests.checkFooPkgc          
   C   st   t  d d d d d d d d d	 } |  j |  t  d  } |  j | j t j d  d
   |  j | j d   d  S)Nz
/some/pathrE   r0   r2   z1.3-1rG   z2.4r.   rD      )r   rJ   r8   rG   sysr2   r.   )r!   rI   r   r   r   testDistroBasicss   s     zDistroTests.testDistroBasicsc             C   s6   t  d  } |  j |  t  d  } |  j |  d  S)NzFooPkg-1.3_1-py2.4-win32.eggz!FooPkg-1.3_1-py2.4-win32.egg-info)r;   rJ   )r!   rI   r   r   r   testDistroParse~   s    zDistroTests.testDistroParsec             C   s;   t  d d d d d d d d t d  } |  j |  d  S)Nz
/some/pathrE   r0   rG   z2.4r.   rD   r    PKG-INFO%Metadata-Version: 1.0
Version: 1.3-1
)rO   rP   )r   r   rJ   )r!   rI   r   r   r   testDistroMetadata   s
    zDistroTests.testDistroMetadatac             C   s   t  d d t d | f  S)Nz/foor    zdepends.txt)r   r   )r!   txtr   r   r   distRequires   s    zDistroTests.distRequiresc             C   s/   |  j  t | j |   t t |    d  S)N)r8   r9   requiresr   )r!   r4   rR   extrasr   r   r   checkRequires   s    zDistroTests.checkRequiresc             C   s.   x' d D] } |  j  |  j |  |  q Wd  S)NTwisted>=1.5Twisted>=1.5
ZConfig>=2.0)rW   rX   )rV   rS   )r!   vr   r   r   testDistroDependsSimple   s    z#DistroTests.testDistroDependsSimplec             C   s  t  j g   } t g   } |  j t | j g  |   g   |  j t  j | j t d  |  t	 j
 d d t d  } | j |  | j t	 j
 d   x[ t d  D]M } t | j t d  |   } |  j | | g  t t | j |   q W|  j t | j t d  |  t g   } |  j t  j | j t d	  |  t	 j
 d
 d t d  } | j |  |  j t | j t d	  |   | | g  |  j t | j t d  |  d  S)NFooz/foo_dir/Foo-1.2.eggr    depends.txt[bar]
Baz>=2.0zFoo-0.9.eggrK   zFoo==0.9zFoo[bar]z/foo_dir/Baz-2.1.eggzFoo==1.2
Foo!=1.2)r\   r]   )r\   zFoo)r   r7   r   r8   r9   resolver?   DistributionNotFoundr   r   from_filenamer   r:   rangemapr   )r!   r@   rA   r[   itargetsZBazr   r   r   testResolve   s4    "(	zDistroTests.testResolvec             C   s   |  j  d  } |  j | d  |  j | d j   d g  |  j | d j   d g  |  j | d j   d d g  |  j | d j   d d g  |  j t j | j d	 g  d  S)
Nz
            Twisted>=1.5
            [docgen]
            ZConfig>=2.0
            docutils>=0.3
            [fastcgi]
            fcgiapp>=0.1zTwisted>=1.5z'Twisted>=1.5 ZConfig>=2.0 docutils>=0.3ZdocgenzTwisted>=1.5 fcgiapp>=0.1Zfastcgiz4Twisted>=1.5 ZConfig>=2.0 docutils>=0.3 fcgiapp>=0.1z4Twisted>=1.5 fcgiapp>=0.1 ZConfig>=2.0 docutils>=0.3foo)rS   rV   splitr?   r   UnknownExtrarT   )r!   rI   r   r   r   testDistroDependsOptions   s    	z$DistroTests.testDistroDependsOptionsN)r)   r*   r+   rC   rJ   rM   rN   rQ   rS   rV   rZ   re   ri   r   r   r   r   r-   4   s   5	*r-   c               @   s   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z e	 d e
 d d d g  d e
 d d d g d d g  d e
 d d d d g  Z d Z d d   Z d d   Z d S)EntryPointTestsc             C   s   |  j  | j d  |  j  | j d  |  j  | j d  |  j  | j d  |  j | j   t k  |  j  t |  d  d  S)Nrf   zsetuptools.tests.test_resourcesrj   xz9foo = setuptools.tests.test_resources:EntryPointTests [x])zEntryPointTests)rk   )	r8   r$   module_nameattrsrU   r<   loadrj   str)r!   epr   r   r   assertfields   s    	zEntryPointTests.assertfieldsc             C   s"   t  j d d t d  |  _ d  S)NzFooPkg-1.2-py2.4.eggr    requires.txt[x])rr   rs   )r   r`   r   r4   )r!   r   r   r   setUp   s    zEntryPointTests.setUpc             C   s2   t  d d d g d g |  j  } |  j |  d  S)Nrf   zsetuptools.tests.test_resourcesrj   rk   )r   r4   rq   )r!   rp   r   r   r   
testBasics   s    zEntryPointTests.testBasicsc             C   s   d } t  j | |  j  } |  j |  t  j d  } |  j | j d  |  j | j d  |  j | j f   |  j | j d
  t  j d  } |  j | j d  |  j | j d  |  j | j d  |  j | j f   d  S)Nz9foo = setuptools.tests.test_resources:EntryPointTests [x]zbar baz=  spammity[PING]zbar bazZspammitypingz fizzly =  wocka:fooZfizzlyZwockarf   )rv   )zfoo)	r   parser4   rq   r8   r$   rl   rm   rU   )r!   srp   r   r   r   	testParse   s    zEntryPointTests.testParsec             C   s\   xU d d d d d d g D]; } y t  j |  Wn t k
 rD Yq Xt d |   q Wd  S)Nrf   zx=1=2zx=a:b:czq=x/nazfez=pish:tush-zzx=f[a]>2zShould've been bad)r   rw   
ValueErrorAssertionError)r!   rp   r   r   r   testRejects  s      zEntryPointTests.testRejectsc             C   sh   |  j  t |  t |  j   xB t |  j  D]1 \ } } |  j  t | j |   t |   q/ Wd  S)N)r8   r   submap_expectr   r   get)r!   mrF   rp   r   r   r   checkSubMap  s    zEntryPointTests.checkSubMapZfeature1Z
somemoduleZsomefunctionZfeature2zanother.moduleZ	SomeClassZextra1Zextra2Zfeature3zthis.modulerU   Z	somethingz
            # define features for blah blah
            feature1 = somemodule:somefunction
            feature2 = another.module:SomeClass [extra1,extra2]
            feature3 = this.module [something]
    c             C   sX   |  j  t j d |  j   |  j t t j d d  |  j t t j d d d g  d  S)Nxyzzx azfoo=barrk   zfoo=baz)r   r   parse_group
submap_strr?   rz   )r!   r   r   r   testParseList   s    zEntryPointTests.testParseListc             C   s   t  j i |  j d 6 } |  j | d  |  j t | j    d g  t  j d |  j  } |  j | d  |  j t | j    d g  |  j t t  j d d g  |  j t t  j |  j  d  S)Nr   z[xyz]
z[xyz])	r   	parse_mapr   r   r8   r9   keysr?   rz   )r!   r   r   r   r   testParseMap&  s    zEntryPointTests.testParseMapN)r)   r*   r+   rq   rt   ru   ry   r|   r   r   r   r}   r   r   r   r   r   r   r   rj      s   rj   c               @   sd   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z	 d S)RequirementsTestsc             C   s   t  j d  } |  j t |  d  |  j t |  d  |  j | t  d d g f    |  j | t  d d g f    |  j | t  d d g f    |  j | t  d d g f    |  j | t  d d g f    |  j | t  j d
   d  S)NzTwisted>=1.2z!Requirement.parse('Twisted>=1.2')Twisted>=1.2ZtwisTed2.0ZZope3.0zTwisted[extras]>=1.2)r   r   )r   r   )r   r   )r   r   )r   r   )r   rw   r8   ro   r   assertNotEqual)r!   rr   r   r   ru   2  s    zRequirementsTests.testBasicsc             C   sv   t  d d d g f   } t  d d	 d
 g f   } |  j | |  |  j t |  t |   |  j t |  d  d  S)Nr   ==1.2c1>=1.2zTwisted==1.2c1,>=1.2)r   r   )r   r   )r   r   )r   r   )r   r8   ro   )r!   r1r2r   r   r   testOrdering=  s
    zRequirementsTests.testOrderingc             C   s   t  d d g f   } t j d  } t j d  } t j d  } |  j t d  | k  |  j t d  | k  |  j d | k  |  j d | k  |  j | | k  |  j | | k  |  j | | k  d  S)	Nr   >=1.2zFooPkg-1.3_1.eggzTwisted-1.1.eggzTwisted-1.2.eggz1.1)r   r   )r   r   r`   r<   r   )r!   r   Zfoo_distZtwist11Ztwist12r   r   r   testBasicContainsD  s    z#RequirementsTests.testBasicContainsc          	   C   sm   t  d  \ } x* d D]" } |  j | | k | | f  q Wx* d D]" } |  j | | k | | f  qC Wd  S)Nz*Foo>=1.2,<=1.3,==1.9,>2.0,!=2.5,<3.0,==4.51.21.2.21.31.92.0.12.32.63.0c14.51.2c11.3.11.51.9.12.02.53.04.0)	r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r<   )r!   r   rY   r   r   r   testAdvancedContainsQ  s
     z&RequirementsTests.testAdvancedContainsc             C   s   t  j d  } t  j d  } t  j d  } |  j | |  |  j | |  |  j | j d	  |  j | j d
  |  j t |  t |   |  j t |  t d d t d  f f t d d g  f   d  S)NzTwisted[foo,bar]>=1.2zTwisted[bar,FOO]>=1.2zTwisted[BAR,FOO]>=1.2.0rf   barZtwistedz>=z1.2)foor   )r   r   )r   rw   r8   rU   hashr   	frozenset)r!   r   r   Zr3r   r   r   testOptionsAndHashingX  s    !z'RequirementsTests.testOptionsAndHashingc             C   s   t  j d  } t  j d  } t j } |  j | d  | k  |  j | d  | k  |  j | d  | k  |  j | d  | k  |  j | d  | k  |  j | d  | k  |  j | d  | k  d  S)Nz
foo==0.3a2z
foo!=0.3a4zfoo-0.3a4.eggzfoo-0.3a1.eggzfoo-0.3a2.eggzfoo-0.3a3.eggzfoo-0.3a5.egg)r   rw   r   r`   r<   )r!   r   r   rI   r   r   r   testVersionEqualityf  s    	z%RequirementsTests.testVersionEqualityc             C   st   |  j  t j d  j d  |  j  t j d  j d  |  j  t j d  j d  |  j  t j d  j d  d S)zQ
        The setuptools project should implement the setuptools package.
        
setuptoolszsetuptools == 0.7zsetuptools == 0.7a1zsetuptools >= 0.7N)r8   r   rw   rE   )r!   r   r   r   testSetuptoolsProjectNamet  s    z+RequirementsTests.testSetuptoolsProjectNameN)
r)   r*   r+   ru   r   r   r   r   r   r   r   r   r   r   r   0  s   r   c               @   sp   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z	 d d   Z
 d S)
ParseTestsc             C   s    |  j  t t d   g   d  S)N )r8   r9   r   )r!   r   r   r   testEmptyParse  s    zParseTests.testEmptyParsec             C   s   xx g  g  f d d g f g  g g  f d d d g f d d g d d g f g D]+ \ } } |  j  t t j |   |  qL Wd  S)Nrk   z x
 yyzx

)r8   r9   r   r'   )r!   inpoutr   r   r   testYielding  s    0%zParseTests.testYieldingc             C   s   d } |  j  t t j |   d  d g f d d d g f d d g f d g  f d	 d
 g f g  |  j t t t j d   d  S)Na   
                    x
                    [Y]
                    z

                    a
                    [b ]
                    # foo
                    c
                    [ d]
                    [q]
                    v
                    rk   YzabcrI   qrY   z[foo)r8   r9   r   split_sectionsr?   rz   )r!   sampler   r   r   testSplitting  s    CzParseTests.testSplittingc             C   sr   |  j  t d  d  |  j  t d  d  |  j  t d  d  |  j  t d  d  |  j t d  d  d  S)	Nzadns-pythonz
WSGI Utilsz
WSGI-UtilszWSGI  UtilszMoney$$$MakerzMoney-Makerzpeak.webzpeak-web)r8   r
   r   )r!   r   r   r   testSafeName  s
    zParseTests.testSafeNamec             C   sr   |  j  t d  d  |  j  t d  d  |  j  t d  d  |  j  t d  d  |  j  t d  d  d  S)	Nz1.2-1z	1.2 alphaz	1.2.alphaz2.3.4 20050521z2.3.4.20050521zMoney$$$MakerzMoney-Makerzpeak.web)r8   r	   )r!   r   r   r   testSafeVersion  s
    zParseTests.testSafeVersionc             C   s   |  j  t t d   t d d g f   g  |  j  t t d   t d d d g f   g  |  j  t j d
  t d d g f    |  j t t j d  |  j t t j d  |  j t t j d  |  j t t j d  |  j t t j d  d  S)NzTwis-Ted>=1.2-1zTwis-Ted>=1.2-1zTwisted >=1.2, \ # more
<2.0r   1.2<2.0zFooBar==1.99a3ZFooBar==1.99a3z>=2.3zx\zx==2 qz	X==1
Y==2#)r   r   )r   r   )r   r   )r   r   )r8   r9   r   r   rw   r?   rz   )r!   r   r   r   testSimpleRequirements  s    z!ParseTests.testSimpleRequirementsc                s     f d d   } | d d  | d d  | d d  | d d	  | d
 d  | d d  | d d  | d d  | d d  | d d  d  S)Nc                s<   t  |   t  |  } }   j | | |  | | | f  d  S)N)r   r8   )s1s2p1p2)r!   r   r   r     s    z)ParseTests.testVersionEquality.<locals>.cz1.2-rc1z1.2rc1z0.4z0.4.0z0.4.0.0z0.4.0-0z0.4-00pl1z0.0pl1Z0pre1z0.0c1z0.0.0preview1Z0c1z0-rc1z1.2a1z1.2.a.1z1.2...az1.2ar   )r!   r   r   )r!   r   r     s    zParseTests.testVersionEqualityc                sU    f d d   } | d d  | d d  | d d  | d d  | d	 d
  | d	 d  | d d  | d d  | d d  | d d  | d d  | d d  | d d  | d d  | d d  | d d  | d d  | d d  d  j    } xF t |  D]8 \ } } x) | | d! d   D] } | | |  q6WqWd  S)"Nc                s?   t  |   t  |  } }   j | | k  |  | | | f  d  S)N)r   r<   )r   r   r   r   )r!   r   r   r     s    z)ParseTests.testVersionOrdering.<locals>.cz2.1z2.1.1Z2a1Z2b0z2.3a1z2.3z2.1-1z2.1-2z2.1pl4z2.1a0-20040501z1.1z02.1ZA56ZB27z3.2z3.2.pl0z3.2-1z3.2pl1z3.2pl1-1z0.4z4.0z0.0.4z0.4.0r   z0.4pl1z	2.1.0-rc1z2.1.0z2.1devz2.1a0z
        0.80.1-3 0.80.1-2 0.80.1-1 0.79.9999+0.80.0pre4-1
        0.79.9999+0.80.0pre2-3 0.79.9999+0.80.0pre2-2
        0.77.2-1 0.77.1-1 0.77.0-1
        r6   )rg   	enumerate)r!   r   Ztorturepv1v2r   )r!   r   testVersionOrdering  s.    zParseTests.testVersionOrderingN)r)   r*   r+   r   r   r   r   r   r   r   r   r   r   r   r   r     s   r   c               @   s4   e  Z d  Z d Z d Z d d   Z d d   Z d S)ScriptHeaderTestsu   /Users/José/bin/pythonz$C:\Program Files\Python33\python.exec             C   s   t  j j d  s# t t  j  r d t t j j t  j   } |  j	 t
 d  |  d t t j j t  j   } |  j	 t
 d  |  |  j	 t
 d d |  j d |  j  t
 d d |  j } |  j	 | d	 |  j  n  d  S)
Njavaz#!%s
z#!/usr/local/bin/pythonz	#!%s  -x
z#!/usr/bin/python -xz#!/usr/bin/python
executablez#!%s -x
z#!"%s"
)rL   r.   
startswithr   r   r   ospathnormpathr8   r   non_ascii_exeexe_with_spaces)r!   expected	candidater   r   r   test_get_script_header  s    #		z(ScriptHeaderTests.test_get_script_headerc             C   s  t  j d k r+ t j j d  d k r+ d  SGd d   d  } | t  j d <t  j } d t  _ t  j t  j } } z t j	 j
 t j	 j t  d d	  } |  j t d
 d | d |  t   t  _ t  _ |  j t d d | d |  |  j d t  j j   k  t   t  _ t  _ |  j t d d |  j d |  j  |  j d t  j j   k  Wd  t  j d =| t  _ | | t  _ t  _ Xd  S)NrK   LC_CTYPECPOSIXc               @   s#   e  Z d  Z Gd d   d  Z d S)zHScriptHeaderTests.test_get_script_header_jython_workaround.<locals>.javac               @   s#   e  Z d  Z Gd d   d  Z d S)zMScriptHeaderTests.test_get_script_header_jython_workaround.<locals>.java.langc               @   s"   e  Z d  Z e d d    Z d S)zTScriptHeaderTests.test_get_script_header_jython_workaround.<locals>.java.lang.Systemc             S   s   d S)Nr   r   )propertyr   r   r   getProperty  s    z`ScriptHeaderTests.test_get_script_header_jython_workaround.<locals>.java.lang.System.getPropertyN)r)   r*   r+   staticmethodr   r   r   r   r   System  s   r   N)r)   r*   r+   r   r   r   r   r   lang  s   r   N)r)   r*   r+   r   r   r   r   r   r     s   r   zjava1.5.0_13r   z.pyz#!/usr/local/bin/pythonr   z#!/usr/bin/env %s
z#!/usr/bin/python -xz	#!%s  -x
zUnable to adapt shebang linez#!/usr/bin/pythonz#!%s -x
)rK   )Nr   r   )rL   version_infor   environr~   modulesr.   stdoutstderrr   r   splitext__file__r8   r   r   r<   getvaluer   )r!   r   r.   r   r   Zexer   r   r   (test_get_script_header_jython_workaround  s4    			&	 
	z:ScriptHeaderTests.test_get_script_header_jython_workaroundN)r)   r*   r+   r   r   r   r   r   r   r   r   r     s   r   c               @   s@   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 S)
NamespaceTestsc             C   s   t  j j   |  _ t j d d  |  _ t j t j	 j
 |  j d   t j	 d  d   |  _ t j	 j t j	 j
 |  j d   d  S)Nprefixztests-setuptools-z	site-pkgs)r   _namespace_packagescopy_ns_pkgstempfilemkdtemp_tmpdirr   makedirsr   joinrL   _prev_sys_pathappend)r!   r   r   r   rt   7  s
    zNamespaceTests.setUpc             C   s<   t  j |  j  |  j j   t _ |  j d  d   t _	 d  S)N)
shutilrmtreer   r   r   r   r   r   rL   r   )r!   r   r   r   tearDown>  s    zNamespaceTests.tearDownc             C   sH   | | k rD d t  |  t  |  f } |  j |  j t |   n  d S)z4 assertIn and assertTrue does not exist in Python2.3z%s not found in %sN)r   failZ_formatMessagemsg)r!   member	containerZstandardMsgr   r   r   	_assertInC  s    zNamespaceTests._assertInc             C   s  t  j j t j j |  j d   t j t j j |  j d d d   t j t j j |  j d d d   d } x d d g D] } t t j j |  j | d d  d  } | j |  | j	   t t j j |  j | d d d  d  } | j |  | j	   q Wd d	 l
 } |  j d t j j    y d d	 l } Wn t k
 r^|  j d
  Yn X|  j d t j j    |  j t j d d g  |  j | j j t j j |  j d d d  t j j |  j d d d  g  d	 S)a  
        Test nested namespace packages
        Create namespace packages in the following tree :
            site-packages-1/pkg1/pkg2
            site-packages-2/pkg1/pkg2
        Check both are in the _namespace_packages dict and that their __path__
        is correct
        z
site-pkgs2z	site-pkgspkg1pkg2z8__import__('pkg_resources').declare_namespace(__name__)
z__init__.pywr   Nz7Setuptools tried to import the parent namespace packagez	pkg1.pkg2)rL   r   r  r   r   r   r   openwritecloser
  r	  r   r   r   Z	pkg1.pkg2ImportErrorr  r8   r  __path__)r!   Zns_strsiteZ	pkg1_initZ	pkg2_initr
  r   r   r   test_two_levels_deepJ  s0    	"%%
z#NamespaceTests.test_two_levels_deepN)r)   r*   r+   rt   r  r	  r  r   r   r   r   r   5  s   r   )&r   rL   r   r  Zunittestr   r   r   r   r   r   r   r   r	   r
   r   Zsetuptools.command.easy_installr   r   r   Zsetuptools.compatr   r   r   	NameErrorZsetsr   r   EmptyProviderr   r`   r;   r-   rj   r   r   r   r   r   r   r   r   <module>   s*   @
RTs>