ó
,òQc           @   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 m Z m Z m	 Z	 m
 Z
 m Z m Z m Z d d l m Z m Z d d l m Z m Z d d l m Z d d l m Z d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d „  Z d S(   s®   
    jinja2.testsuite.loader
    ~~~~~~~~~~~~~~~~~~~~~~~

    Test the loaders.

    :copyright: (c) 2010 by the Jinja Team.
    :license: BSD, see LICENSE for more details.
iÿÿÿÿN(   t   JinjaTestCaset   dict_loadert   package_loadert   filesystem_loadert   function_loadert   choice_loadert   prefix_loader(   t   Environmentt   loaders(   t   PYPYt   PY2(   t   split_template_path(   t   TemplateNotFoundt   LoaderTestCasec           B   sY   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   c         C   s8   t  d t ƒ } | j d ƒ } |  j t | j d ƒ d  S(   Nt   loaders   justdict.htmls   missing.html(   R   R   t   get_templatet   assert_raisesR   (   t   selft   envt   tmpl(    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   test_dict_loader   s    c         C   s8   t  d t ƒ } | j d ƒ } |  j t | j d ƒ d  S(   NR   s	   test.htmls   missing.html(   R   R   R   R   R   (   R   R   R   (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   test_package_loader#   s    c         C   sG   t  d t ƒ } | j d ƒ } | j d ƒ } |  j t | j d ƒ d  S(   NR   s	   test.htmls   foo/test.htmls   missing.html(   R   R   R   R   R   (   R   R   R   (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   test_filesystem_loader)   s    c         C   sG   t  d t ƒ } | j d ƒ } | j d ƒ } |  j t | j d ƒ d  S(   NR   s   justdict.htmls	   test.htmls   missing.html(   R   R   R   R   R   (   R   R   R   (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   test_choice_loader1   s    c         C   s8   t  d t ƒ } | j d ƒ } |  j t | j d ƒ d  S(   NR   s   justfunction.htmls   missing.html(   R   R   R   R   R   (   R   R   R   (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   test_function_loader9   s    c         C   sG   t  d t ƒ } | j d ƒ } | j d ƒ } |  j t | j d ƒ d  S(   NR   s   a/test.htmls   b/justdict.htmlt   missing(   R   R   R   R   R   (   R   R   R   (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   test_prefix_loader?   s    c            s¹   t  ‰  d t j f ‡  f d †  ƒ  Y} t d | ƒ  d d ƒ } | j d ƒ } t ‰  t  ‰  t d | ƒ  d d ƒ } t d | ƒ  d d ƒ } | j d	 ƒ } | j d
 ƒ } | j d ƒ } d  S(   Nt
   TestLoaderc              s   e  Z ‡  f d  †  Z RS(   c            s   d d  ‡  f d †  f S(   Nu   fooc              s   ˆ  S(   N(    (    (   t   changed(    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   <lambda>K   s    (   t   None(   R   t   environmentt   template(   R   (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt
   get_sourceJ   s    (   t   __name__t
   __module__R!   (    (   R   (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyR   I   s   R   t
   cache_sizeiÿÿÿÿR    i    i   t   onet   twot   three(   t   FalseR   t
   BaseLoaderR   R   t   True(   R   R   R   R   t   t1t   t2t   t3(    (   R   s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   test_cachingG   s    c         C   s3   i d d 6} t  d t j | ƒ ƒ } d | d <d  S(   NR%   t   fooR   R&   (   R   R   t
   DictLoader(   R   t   mappingR   (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt"   test_dict_loader_cache_invalidatesa   s    
c         C   s   |  j  t t d ƒ d  S(   Ns   ../foo(   R   R   R   (   R   (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   test_split_template_pathh   s    (   R"   R#   R   R   R   R   R   R   R.   R2   R3   (    (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyR      s   								t   ModuleLoaderTestCasec           B   s‡   e  Z d Z d  e d „ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z e rs e rs d	 „  Z n  d
 „  Z d „  Z RS(   t   deflatedc         C   sµ   t  t |  ƒ j ƒ  g  } t d t ƒ |  _ | d  k	 rS t j d d ƒ d |  _	 n t j
 ƒ  |  _	 |  j j |  j	 d | d | j d | ƒt d t j |  j	 ƒ ƒ |  _ d j | ƒ S(	   NR   t   suffixs   .zipi   t   zipt   log_functiont
   py_compilet    (   t   superR4   t   setupR   R   t   reg_envR   t   tempfilet   mkstempt   archivet   mkdtempt   compile_templatest   appendR   t   ModuleLoadert   mod_envt   join(   R   R7   R9   t   log(    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   compile_downq   s    	c         C   sj   t  t |  ƒ j ƒ  t |  d ƒ rf t j j |  j ƒ rJ t j |  j ƒ n t	 j
 |  j ƒ d  |  _ n  d  S(   NRE   (   R;   R4   t   teardownt   hasattrt   ost   patht   isfileR@   t   removet   shutilt   rmtreeR   (   R   (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyRI      s    c         C   s   |  j  ƒ  } d  S(   N(   RH   (   R   RG   (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   test_logˆ   s    c         C   sL   |  j  j d ƒ } |  j j d ƒ } |  j  j d ƒ } |  j j d ƒ } d  S(   Ns   a/test.htmls   b/justdict.html(   R=   R   RE   (   R   t   tmpl1t   tmpl2(    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   _test_common   s
    c         C   s   |  j  d d ƒ |  j ƒ  d  S(   NR7   R5   (   RH   RT   (   R   (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   test_deflated_zip_compile™   s    c         C   s   |  j  d d ƒ |  j ƒ  d  S(   NR7   t   stored(   RH   RT   (   R   (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   test_stored_zip_compile   s    c         C   s   |  j  d d  ƒ |  j ƒ  d  S(   NR7   (   RH   R   RT   (   R   (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   test_filesystem_compile¡   s    c         C   su   |  j  ƒ  |  j j d ƒ } t j j d ƒ } |  j j j j } d  |  _ } y d d  l
 } | j ƒ  Wn n Xd  S(   Ns   a/test.htmliÿÿÿÿ(   RH   RE   R   R   RD   t   get_template_keyR   t   moduleR"   R   t   gct   collect(   R   R   t   keyt   nameR[   (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   test_weak_references¥   s    
c         C   s:   |  j  d t ƒ } |  j j d ƒ } |  j j j j } d  S(   NR9   s   a/test.html(   RH   R*   RE   R   R   RZ   t-   tmpl_3c4ddf650c1a73df961a6d3d2ce2752f1b8fd490(   R   RG   RR   t   mod(    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   test_byte_compilation»   s    c         C   s‘   |  j  ƒ  } t j |  j j t j i d d 6ƒ g ƒ |  j _ |  j j d ƒ } |  j | j ƒ  d ƒ |  j j d ƒ } |  j | j ƒ  d ƒ d  S(   Nt   DICT_TEMPLATEt   DICT_SOURCEs   a/test.htmlt   BAR(	   RH   R   t   ChoiceLoaderRE   R   R0   R   t   assert_equalt   render(   R   RG   RR   RS   (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyR   Ã   s    	"c         C   s™   |  j  ƒ  } t j i |  j j d 6t j i d d 6ƒ d 6ƒ |  j _ |  j j d ƒ } |  j | j ƒ  d ƒ |  j j d ƒ } |  j | j ƒ  d ƒ d  S(   Nt   MODRc   s	   test.htmlt   DICTs   MOD/a/test.htmlRe   s   DICT/test.html(	   RH   R   t   PrefixLoaderRE   R   R0   R   Rg   Rh   (   R   RG   RR   RS   (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyR   Ð   s    	#N(   R"   R#   R   R@   R(   RH   RI   RQ   RT   RU   RW   RX   R_   R
   R	   Rb   R   R   (    (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyR4   n   s   										c          C   s<   t  j ƒ  }  |  j t  j t ƒ ƒ |  j t  j t ƒ ƒ |  S(   N(   t   unittestt	   TestSuitet   addTestt	   makeSuiteR   R4   (   t   suite(    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyRp   Þ   s    (   t   __doc__RK   t   sysR>   RO   Rl   t   jinja2.testsuiteR    R   R   R   R   R   R   t   jinja2R   R   t   jinja2._compatR	   R
   t   jinja2.loadersR   t   jinja2.exceptionsR   R   R4   Rp   (    (    (    s;   /usr/lib/python2.7/site-packages/jinja2/testsuite/loader.pyt   <module>
   s   4Sp