ó
 `¾Tc           @   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.
iÿÿÿÿN(   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 ƒ } | j ƒ  d k s' t ‚ d  S(   NR   sD   |block 1 from layout|block 2 from layout|nested block 4 from layout|(   t   envt   get_templatet   rendert   AssertionError(   t   selft   tmpl(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_layoutR   s    c         C   s+   t  j d ƒ } | j ƒ  d k s' t ‚ d  S(   NR   sD   |block 1 from level1|block 2 from layout|nested block 4 from layout|(   R   R   R   R   (   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_level1W   s    c         C   s+   t  j d ƒ } | j ƒ  d k s' t ‚ d  S(   NR   sK   |block 1 from level1|nested block 5 from level2|nested block 4 from layout|(   R   R   R   R   (   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_level2\   s    c         C   s+   t  j d ƒ } | j ƒ  d k s' t ‚ d  S(   NR   s=   |block 1 from level1|block 5 from level3|block 4 from level3|(   R   R   R   R   (   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_level3a   s    c         C   s+   t  j d ƒ } | j ƒ  d k s' t ‚ d  S(   NR	   s=   |block 1 from level1|block 5 from level3|block 3 from level4|(   R   R   R   R   (   t   selR   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_level4f   s    c         C   sU   t  d t i d d 6d d 6d d 6ƒ ƒ } | j d ƒ } | j ƒ  d k sQ t ‚ 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   cs    --INTRO--|BEFORE|[(INNER)]|AFTER(   R   R   R   R   R   (   R   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/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   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_workingx   s    c         C   s+   t  j d ƒ } | j ƒ  d k s' t ‚ d  S(   NsA   {{ self.foo() }}|{% block foo %}42{% endblock %}|{{ self.foo() }}s   42|42|42(   R   t   from_stringR   R   (   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_reuse_blocks{   s    c         C   sN   t  d t i d d 6d d 6ƒ ƒ } | j d ƒ } | j ƒ  d k sJ t ‚ d  S(   NR   sC   {% if false %}{% block x %}A{% endblock %}{% endif %}{{ self.x() }}R   s:   {% extends "a" %}{% block x %}B{{ super() }}{% endblock %}R   t   BA(   R   R   R   R   R   (   R   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_preserve_blocks€   s
    c         C   s}   t  d t i d d 6d d 6d d 6ƒ ƒ } | j d ƒ } x= t d d	 ƒ D], } | j d
 d | ƒ d | k sI t ‚ 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   t   masters   master%ds   MASTER%dCHILD(   R   R   R   t   rangeR   R   (   R   R   R   t   m(    (    sb   /var/www/send.findwatt.com/datamanager/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 ƒ } | j d d ƒ d	 k sW t ‚ | j d d ƒ d
 k su t ‚ | j ƒ  d
 k s t ‚ 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&   t   MASTER2CHILDt   MASTER1CHILD(   R   R   R   R   R   (   R   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_multi_inheritance’   s    c         C   sY   t  d t i d d 6ƒ ƒ } | j d ƒ } | j d t t d ƒ ƒ ƒ d k sU t ‚ d  S(   NR   sH   {% for item in seq %}[{% block item scoped %}{% endblock %}]{% endfor %}s   master.htmlsC   {% extends "master.html" %}{% block item %}{{ item }}{% endblock %}t   seqi   s   [0][1][2][3][4](   R   R   R   R   t   listR'   R   (   R   R   t   t(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_scoped_blockž   s    c         C   sY   t  d t i d d 6ƒ ƒ } | j d ƒ } | j d t t d ƒ ƒ ƒ d k sU t ‚ 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-   i   s   [0|0][1|2][2|4][3|6][4|8](   R   R   R   R   R.   R'   R   (   R   R   R/   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_super_in_scoped_block§   s    c         C   sj   t  d t i d d 6d d 6d d 6ƒ ƒ } | j d ƒ j d d	 ƒ j ƒ  } | d
 d d g k sf t ‚ 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*   t   43t   44t   45(   R   R   R   R   t   splitR   (   R   R   t   rv(    (    sb   /var/www/send.findwatt.com/datamanager/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,   R0   R1   R8   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyR   P   s   										
					t   BugFixTestCasec           B   s   e  Z d  „  Z d „  Z RS(   c         C   sU   t  d t i d d 6d d 6d d 6ƒ ƒ j d ƒ j ƒ  j ƒ  d d	 g k sQ t ‚ d  S(
   NR   sÌ           {% extends 'details.html' %}

        {% macro my_macro() %}
        my_macro
        {% endmacro %}

        {% block inner_box %}
            {{ my_macro() }}
        {% endblock %}
            s	   test.htmlsd          {% extends 'standard.html' %}

        {% macro my_macro() %}
        my_macro
        {% endmacro %}

        {% block content %}
            {% block outer_box %}
                outer_box
                {% block inner_box %}
                    inner_box
                {% endblock %}
            {% endblock %}
        {% endblock %}
        s   details.htmls9   
        {% block content %}&nbsp;{% endblock %}
        s   standard.htmlu	   outer_boxu   my_macro(   R   R   R   R   R6   R   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_fixed_macro_scoping_bugÊ   s
    c         C   sB   y t  j d ƒ } Wn( t k
 r= } t | t ƒ s> t ‚ n Xd S(   sm   Ensures that a template with more than 1 {% extends ... %} usage
        raises a ``TemplateError``.
        R   N(   R   R   t	   Exceptiont
   isinstanceR   R   (   R   R   t   e(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   test_double_extendsì   s    (   R9   R:   R<   R@   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyR;   È   s   	"c          C   s<   t  j ƒ  }  |  j t  j t ƒ ƒ |  j t  j t ƒ ƒ |  S(   N(   t   unittestt	   TestSuitet   addTestt	   makeSuiteR   R;   (   t   suite(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyRE   ö   s    (   t   __doc__RA   t   jinja2.testsuiteR    t   jinja2R   R   R   t   LAYOUTTEMPLATEt   LEVEL1TEMPLATEt   LEVEL2TEMPLATEt   LEVEL3TEMPLATEt   LEVEL4TEMPLATEt   WORKINGTEMPLATEt   DOUBLEEXTENDSt   TrueR   R   R;   RE   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/jinja2/testsuite/inheritance.pyt   <module>
   s,   	x.