
,Qc           @   s   d  Z  d d l Z d d l m Z d d l m Z m Z m Z d Z d Z	 d Z
 d Z d	 Z d
 Z d Z e d e i e d 6e	 d 6e
 d 6e d 6e d 6e d 6e d 6 d e  Z d e f d     YZ d e f d     YZ d   Z d S(   s   
    jinja2.testsuite.inheritance
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Tests the template inheritance feature.

    :copyright: (c) 2010 by the Jinja Team.
    :license: BSD, see LICENSE for more details.
iN(   t   JinjaTestCase(   t   Environmentt
   DictLoadert   TemplateErrors   |{% block block1 %}block 1 from layout{% endblock %}
|{% block block2 %}block 2 from layout{% endblock %}
|{% block block3 %}
{% block block4 %}nested block 4 from layout{% endblock %}
{% endblock %}|sJ   {% extends "layout" %}
{% block block1 %}block 1 from level1{% endblock %}sq   {% extends "level1" %}
{% block block2 %}{% block block5 %}nested block 5 from level2{%
endblock %}{% endblock %}s   {% extends "level2" %}
{% block block5 %}block 5 from level3{% endblock %}
{% block block4 %}block 4 from level3{% endblock %}
sK   {% extends "level3" %}
{% block block3 %}block 3 from level4{% endblock %}
s   {% extends "layout" %}
{% block block1 %}
  {% if false %}
    {% block block2 %}
      this should workd
    {% endblock %}
  {% endif %}
{% endblock %}
s   {% extends "layout" %}
{% extends "layout" %}
{% block block1 %}
  {% if false %}
    {% block block2 %}
      this should workd
    {% endblock %}
  {% endif %}
{% endblock %}
t   loadert   layoutt   level1t   level2t   level3t   level4t   workingt   doubleet   trim_blockst   InheritanceTestCasec           B   s   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z RS(   c         C   s   t  j d  } d  S(   NR   (   t   envt   get_template(   t   selft   tmpl(    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_layoutR   s    c         C   s   t  j d  } d  S(   NR   (   R   R   (   R   R   (    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_level1W   s    c         C   s   t  j d  } d  S(   NR   (   R   R   (   R   R   (    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_level2\   s    c         C   s   t  j d  } d  S(   NR   (   R   R   (   R   R   (    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_level3a   s    c         C   s   t  j d  } d  S(   NR	   (   R   R   (   t   selR   (    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_level4f   s    c         C   s=   t  d t i d d 6d d 6d d 6  } | j d  } d  S(   NR   sU   {% block intro %}INTRO{% endblock %}|BEFORE|{% block data %}INNER{% endblock %}|AFTERt   as>   {% extends "a" %}{% block data %}({{ super() }}){% endblock %}t   bso   {% extends "b" %}{% block intro %}--{{ super() }}--{% endblock %}
{% block data %}[{{ super() }}]{% endblock %}t   c(   R   R   R   (   R   R   R   (    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt
   test_superk   s    c         C   s   t  j d  } d  S(   NR
   (   R   R   (   R   R   (    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_workingx   s    c         C   s   t  j d  } d  S(   NsA   {{ self.foo() }}|{% block foo %}42{% endblock %}|{{ self.foo() }}(   R   t   from_string(   R   R   (    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_reuse_blocks{   s    c         C   s6   t  d t i d d 6d d 6  } | j d  } d  S(   NR   sC   {% if false %}{% block x %}A{% endblock %}{% endif %}{{ self.x() }}R   s:   {% extends "a" %}{% block x %}B{{ super() }}{% endblock %}R   (   R   R   R   (   R   R   R   (    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_preserve_blocks   s
    c         C   sW   t  d t i d d 6d d 6d d 6  } | j d  } x t d d	  D] } qI Wd  S(
   NR   s"   MASTER1{% block x %}{% endblock %}t   master1s"   MASTER2{% block x %}{% endblock %}t   master2s4   {% extends master %}{% block x %}CHILD{% endblock %}t   childi   i   (   R   R   R   t   range(   R   R   R   t   m(    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_dynamic_inheritance   s    c         C   s=   t  d t i d d 6d d 6d d 6  } | j d  } d  S(   NR   s"   MASTER1{% block x %}{% endblock %}R    s"   MASTER2{% block x %}{% endblock %}R!   s   {% if master %}{% extends master %}{% else %}{% extends
                        'master1' %}{% endif %}{% block x %}CHILD{% endblock %}R"   (   R   R   R   (   R   R   R   (    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_multi_inheritance   s    c         C   s/   t  d t i d d 6  } | j d  } d  S(   NR   sH   {% for item in seq %}[{% block item scoped %}{% endblock %}]{% endfor %}s   master.htmlsC   {% extends "master.html" %}{% block item %}{{ item }}{% endblock %}(   R   R   R   (   R   R   t   t(    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_scoped_block   s    c         C   s/   t  d t i d d 6  } | j d  } d  S(   NR   sR   {% for item in seq %}[{% block item scoped %}{{ item }}{% endblock %}]{% endfor %}s   master.htmlsU   {% extends "master.html" %}{% block item %}{{ super() }}|{{ item * 2 }}{% endblock %}(   R   R   R   (   R   R   R'   (    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_super_in_scoped_block   s    c         C   sO   t  d t i d d 6d d 6d d 6  } | j d  j d d	  j   } d  S(
   NR   s;   
            {% block useless %}{% endblock %}
            s   layout.htmlsl  
            {%- extends 'layout.html' %}
            {% from 'helpers.html' import foo with context %}
            {% block useless %}
                {% for x in [1, 2, 3] %}
                    {% block testing scoped %}
                        {{ foo(x) }}
                    {% endblock %}
                {% endfor %}
            {% endblock %}
            s
   index.htmlsK   
            {% macro foo(x) %}{{ the_foo + x }}{% endmacro %}
            s   helpers.htmlt   the_fooi*   (   R   R   R   t   rendert   split(   R   R   t   rv(    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt#   test_scoped_block_after_inheritance   s    !(   t   __name__t
   __module__R   R   R   R   R   R   R   R   R   R%   R&   R(   R)   R.   (    (    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyR   P   s   										
					t   BugFixTestCasec           B   s   e  Z d    Z d   Z RS(   c         C   s   d  S(   N(    (   R   (    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_fixed_macro_scoping_bug   s    c         C   s-   y t  j d  } Wn t k
 r( } n Xd S(   sm   Ensures that a template with more than 1 {% extends ... %} usage
        raises a ``TemplateError``.
        R   N(   R   R   t	   Exception(   R   R   t   e(    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_double_extends   s    (   R/   R0   R2   R5   (    (    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyR1      s   	"c          C   s<   t  j   }  |  j t  j t   |  j t  j t   |  S(   N(   t   unittestt	   TestSuitet   addTestt	   makeSuiteR   R1   (   t   suite(    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyR:      s    (   t   __doc__R6   t   jinja2.testsuiteR    t   jinja2R   R   R   t   LAYOUTTEMPLATEt   LEVEL1TEMPLATEt   LEVEL2TEMPLATEt   LEVEL3TEMPLATEt   LEVEL4TEMPLATEt   WORKINGTEMPLATEt   DOUBLEEXTENDSt   TrueR   R   R1   R:   (    (    (    s@   /usr/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   <module>
   s,   	x.