ó
ÚÂŠ]c           @  s¤  d  d l  m 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 d d l m	 Z	 m
 Z
 m Z m Z m Z m Z m Z m Z y d  d l m Z Wn! e k
 rÍ d  d l m Z n Xd	 e j e j f d
 „  ƒ  YZ d e j e j f d „  ƒ  YZ d e j e j e j f d „  ƒ  YZ d e j e j e j f d „  ƒ  YZ d e j e j e j f d „  ƒ  YZ  d e j e j e j f d „  ƒ  YZ! d S(   iÿÿÿÿ(   t   unicode_literalsNi   (   t   fixturesi   (   t   Distributiont
   EntryPointt   MetadataPathFindert   PackageNotFoundErrort   distributionst   entry_pointst   metadatat   version(   t   str(   t   unicodet
   BasicTestsc           B  s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   u   \d+\.\d+(\.\d)?c         C  sI   t  j d ƒ } t | j t ƒ s' t ‚ t j |  j | j ƒ sE t ‚ d  S(   Nu   distinfo-pkg(	   R   t	   from_namet
   isinstanceR	   t   textt   AssertionErrort   ret   matcht   version_pattern(   t   selft   dist(    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt   test_retrieves_version_of_self   s    c         C  s'   |  j  t ƒ  t j d ƒ Wd  QXd  S(   Nu   does-not-exist(   t   assertRaisesR   R   R   (   R   (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt   test_for_name_does_not_exist   s    c         C  s$   |  j  t t ƒ |  j  t t ƒ d  S(   N(   t   assertIsInstanceR   t   typeR   (   R   (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt   test_new_style_classes#   s    (   t   __name__t
   __module__R   R   R   R   (    (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyR      s   		t   ImportTestsc           B  s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C  s'   |  j  t ƒ  t j d ƒ Wd  QXd  S(   Nu   does_not_exist(   R   t   ImportErrort	   importlibt   import_module(   R   (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt   test_import_nonexistent_module)   s    c         C  s:   t  t ƒ  d ƒ } | d } |  j | j ƒ  j d ƒ d  S(   Nu   entriesu   main(   t   dictR   t   assertEqualt   loadR   (   R   t   entriest   ep(    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt   test_resolve/   s    
c         C  s4   t  t ƒ  d ƒ } | d } |  j | j d ƒ d  S(   Nu   entriesu   ns:subu   mod:main(   R#   R   R$   t   value(   R   R&   R'   (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt"   test_entrypoint_with_colon_in_name4   s    
c         C  s7   t  d d d d d d ƒ } | j ƒ  t k s3 t ‚ d  S(   Nt   nameu   epR)   u   importlib_metadatat   groupu   grp(   R   R%   t   importlib_metadataR   (   R   R'   (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt   test_resolve_without_attr9   s
    	(   R   R   R"   R(   R*   R.   (    (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyR   (   s   			t   NameNormalizationTestsc           B  s8   e  Z e d  „  ƒ Z d „  Z e d „  ƒ Z d „  Z RS(   c         C  sG   |  d } | j  ƒ  | d } | j d ƒ  } | j d ƒ Wd QXd S(   u   
        Create minimal metadata for a package with dashes
        in the name (and thus underscores in the filename).
        u   my_pkg.dist-infou   METADATAu   wu   Version: 1.0
Nu   my-pkg(   t   mkdirt   opent   write(   t   site_dirt   metadata_dirR   t   strm(    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt   pkg_with_dashesD   s    


c         C  s.   |  j  |  j ƒ } t | ƒ d k s* t ‚ d S(   u   
        For a package with a dash in the name, the dist-info metadata
        uses underscores in the name. Ensure the metadata loads.
        u   1.0N(   R6   R3   R	   R   (   R   t   pkg_name(    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt-   test_dashes_in_dist_name_found_as_underscoresQ   s    c         C  sG   |  d } | j  ƒ  | d } | j d ƒ  } | j d ƒ Wd QXd S(   u\   
        Create minimal metadata for a package with mixed case
        in the name.
        u   CherryPy.dist-infou   METADATAu   wu   Version: 1.0
Nu   CherryPy(   R0   R1   R2   (   R3   R4   R   R5   (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt   pkg_with_mixed_caseY   s    


c         C  sj   |  j  |  j ƒ } t | ƒ d k s* t ‚ t | j ƒ  ƒ d k sH t ‚ t | j ƒ  ƒ d k sf t ‚ d S(   uG   
        Ensure the metadata loads when queried with any case.
        u   1.0N(   R9   R3   R	   R   t   lowert   upper(   R   R7   (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt    test_dist_name_found_as_any_casef   s    (   R   R   t   staticmethodR6   R8   R9   R<   (    (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyR/   B   s   	t   NonASCIITestsc           B  s8   e  Z e d  „  ƒ Z e d „  ƒ Z d „  Z d „  Z RS(   c         C  sM   |  d } | j  ƒ  | d } | j d d d ƒ } | j d ƒ Wd QXd S(	   ub   
        Create minimal metadata for a package with non-ASCII in
        the description.
        u   portend.dist-infou   METADATAu   wt   encodingu   utf-8u   Description: pÃ´rËˆtend
Nu   portend(   R0   R1   R2   (   R3   R4   R   t   fp(    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt   pkg_with_non_ascii_descriptionq   s    


c         C  s\   |  d } | j  ƒ  | d } | j d d d ƒ# } | j t j d ƒ j ƒ  ƒ Wd QXd S(	   ul   
        Create minimal metadata for an egg-info package with
        non-ASCII in the description.
        u   portend.dist-infou   METADATAu   wR?   u   utf-8uK   
                Name: portend

                pÃ´rËˆtend
                Nu   portend(   R0   R1   R2   t   textwrapt   dedentt   lstrip(   R3   R4   R   R@   (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt'   pkg_with_non_ascii_description_egg_info~   s    


c         C  s8   |  j  |  j ƒ } t | ƒ } | d d k s4 t ‚ d  S(   Nu   Descriptionu
   pÃ´rËˆtend(   RA   R3   R   R   (   R   R7   t   meta(    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt   test_metadata_loads   s    c         C  s:   |  j  |  j ƒ } t | ƒ } | j ƒ  d k s6 t ‚ d  S(   Nu   pÃ´rËˆtend
(   RE   R3   R   t   get_payloadR   (   R   R7   RF   (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt   test_metadata_loads_egg_info”   s    (   R   R   R=   RA   RE   RG   RI   (    (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyR>   p   s   	t   DiscoveryTestsc           B  s   e  Z d  „  Z d „  Z RS(   c         C  sg   t  t ƒ  ƒ } t d „  | Dƒ ƒ s+ t ‚ t d „  | Dƒ ƒ sG t ‚ t d „  | Dƒ ƒ sc t ‚ d  S(   Nc         s  s   |  ] } t  | t ƒ Vq d  S(   N(   R   R   (   t   .0R   (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pys	   <genexpr>¡   s   c         s  s"   |  ] } | j  d  d k Vq d S(   u   Nameu   egginfo-pkgN(   R   (   RK   R   (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pys	   <genexpr>¥   s   c         s  s"   |  ] } | j  d  d k Vq d S(   u   Nameu   distinfo-pkgN(   R   (   RK   R   (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pys	   <genexpr>©   s   (   t   listR   t   allR   t   any(   R   t   dists(    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt   test_package_discoveryž   s    c      
   C  s3   |  j  t ƒ  t t d d d d ƒ ƒ Wd  QXd  S(   Nt   contextu	   somethingR+   u   else(   R   t
   ValueErrorRL   R   (   R   (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt   test_invalid_usage­   s    (   R   R   RP   RS   (    (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyRJ   š   s   	t   DirectoryTestc           B  s   e  Z d  „  Z d „  Z RS(   c         C  s:   |  j  j d ƒ j ƒ  |  j t ƒ  t d ƒ Wd  QXd  S(   Nu   EGG-INFOu   unknown-package(   R3   t   joinpathR0   R   R   R	   (   R   (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt   test_egg_info³   s    c      
   C  sV   |  j  j d ƒ } | j ƒ  |  j | ƒ % |  j t ƒ  t d ƒ Wd  QXWd  QXd  S(   Nu   foo-3.6.eggu   foo(   R3   RU   R0   t   add_sys_pathR   R   R	   (   R   t   egg(    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt   test_eggº   s
    
(   R   R   RV   RY   (    (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyRT   ²   s   	("   t
   __future__R    R   RB   t   unittestR    R-   t    R   R   R   R   R   R   R   R   R	   t   builtinsR
   R   R   t   __builtin__R   t   DistInfoPkgt   TestCaseR   R   t	   OnSysPatht   SiteDirR/   R>   t
   EggInfoPkgRJ   RT   (    (    (    sA   lib/python2.7/site-packages/importlib_metadata/tests/test_main.pyt   <module>   s(   :"-%*	