def test_exec_in_match(self): 
     xml = ("""<html xmlns:py="http://genshi.edgewall.org/">
       <py:match path="body/p">
         <?python title="wakka wakka wakka" ?>
         ${title}
       </py:match>
       <body><p>moot text</p></body>
     </html>""")
     tmpl = MarkupTemplate(xml, filename='test.html', allow_exec=True)
     self.assertEqual("""<html>
       <body>
         wakka wakka wakka
       </body>
     </html>""", tmpl.generate().render(encoding=None))
Esempio n. 2
0
 def test_allow_exec_false(self):
     xml = ("""<?python
       title = "A Genshi Template"
       ?>
       <html xmlns:py="http://genshi.edgewall.org/">
         <head>
           <title py:content="title">This is replaced.</title>
         </head>
     </html>""")
     try:
         tmpl = MarkupTemplate(xml, filename='test.html', allow_exec=False)
         self.fail('Expected SyntaxError')
     except TemplateSyntaxError as e:
         pass
Esempio n. 3
0
 def test_with_in_match(self): 
     xml = ("""<html xmlns:py="http://genshi.edgewall.org/">
       <py:match path="body/p">
         <h1>${select('text()')}</h1>
         ${select('.')}
       </py:match>
       <body><p py:with="foo='bar'">${foo}</p></body>
     </html>""")
     tmpl = MarkupTemplate(xml, filename='test.html')
     self.assertEqual("""<html>
       <body>
         <h1>bar</h1>
         <p>bar</p>
       </body>
     </html>""", tmpl.generate().render(encoding=None))
    def test_relative_include_from_inmemory_template(self):
        file1 = open(os.path.join(self.dirname, 'tmpl1.html'), 'w')
        try:
            file1.write("""<div>Included</div>""")
        finally:
            file1.close()

        loader = TemplateLoader([self.dirname])
        tmpl2 = MarkupTemplate("""<html xmlns:xi="http://www.w3.org/2001/XInclude">
          <xi:include href="../tmpl1.html" />
        </html>""", filename='subdir/tmpl2.html', loader=loader)

        self.assertEqual("""<html>
          <div>Included</div>
        </html>""", tmpl2.generate().render(encoding=None))
Esempio n. 5
0
 def test_namespace_on_removed_elem(self):
     """
     Verify that a namespace declaration on an element that is removed from
     the generated stream does not get pushed up to the next non-stripped
     element (see ticket #107).
     """
     tmpl = MarkupTemplate("""<?xml version="1.0"?>
     <Test xmlns:py="http://genshi.edgewall.org/">
       <Size py:if="0" xmlns:t="test">Size</Size>
       <Item/>
     </Test>""")
     self.assertEqual("""<?xml version="1.0"?>\n<Test>
       
       <Item/>
     </Test>""", str(tmpl.generate()))
Esempio n. 6
0
 def test_match_without_select(self):
     # See <http://genshi.edgewall.org/ticket/243>
     xml = ("""<html xmlns:py="http://genshi.edgewall.org/">
       <py:match path="body" buffer="false">
         <body>
           This replaces the other text.
         </body>
       </py:match>
       <body>
         This gets replaced.
       </body>
     </html>""")
     tmpl = MarkupTemplate(xml, filename='test.html')
     self.assertEqual("""<html>
         <body>
           This replaces the other text.
         </body>
     </html>""", tmpl.generate().render(encoding=None))
Esempio n. 7
0
 def test_nested_matches_without_buffering(self):
     xml = ("""<html xmlns:py="http://genshi.edgewall.org/">
       <py:match path="body" once="true" buffer="false">
         <body>
           ${select('*|text')}
           And some other stuff...
         </body>
       </py:match>
       <body>
         <span py:match="span">Foo</span>
         <span>Bar</span>
       </body>
     </html>""")
     tmpl = MarkupTemplate(xml, filename='test.html')
     self.assertEqual("""<html>
         <body>
           <span>Foo</span>
           And some other stuff...
         </body>
     </html>""", tmpl.generate().render(encoding=None))
    def test_relative_include_without_loader_relative(self):
        file1 = open(os.path.join(self.dirname, 'tmpl1.html'), 'w')
        try:
            file1.write("""<div>Included</div>""")
        finally:
            file1.close()

        file2 = open(os.path.join(self.dirname, 'tmpl2.html'), 'w')
        try:
            file2.write("""<html xmlns:xi="http://www.w3.org/2001/XInclude">
              <xi:include href="tmpl1.html" />
            </html>""")
        finally:
            file2.close()

        tmpl = MarkupTemplate("""<html xmlns:xi="http://www.w3.org/2001/XInclude">
              <xi:include href="tmpl1.html" />
            </html>""", filename=os.path.join(self.dirname, 'tmpl2.html'))
        self.assertEqual("""<html>
              <div>Included</div>
            </html>""", tmpl.generate().render(encoding=None))
Esempio n. 9
0
    def test_match_tail_handling(self): 
        # See <http://genshi.edgewall.org/ticket/399> 
        xml = ("""<rhyme xmlns:py="http://genshi.edgewall.org/">
          <py:match path="*[@type]">
            ${select('.')}
          </py:match>

          <lines>
            <first type="one">fish</first>
            <second type="two">fish</second>
            <third type="red">fish</third>
            <fourth type="blue">fish</fourth>
          </lines>
        </rhyme>""") 
        tmpl = MarkupTemplate(xml, filename='test.html') 
        self.assertEqual("""<rhyme>
          <lines>
            <first type="one">fish</first>
            <second type="two">fish</second>
            <third type="red">fish</third>
            <fourth type="blue">fish</fourth>
          </lines>
        </rhyme>""", tmpl.generate().render(encoding=None)) 
Esempio n. 10
0
 def test_empty_attr(self):
     tmpl = MarkupTemplate('<root attr=""/>')
     self.assertEqual('<root attr=""/>', str(tmpl.generate()))
Esempio n. 11
0
 def test_interpolate_list_result(self):
     tmpl = MarkupTemplate('<root>$foo</root>')
     self.assertEqual('<root>buzz</root>', str(tmpl.generate(foo=('buzz',))))
Esempio n. 12
0
 def test_interpolate_non_string_attrs(self):
     tmpl = MarkupTemplate('<root attr="${1}"/>')
     self.assertEqual('<root attr="1"/>', str(tmpl.generate()))
Esempio n. 13
0
 def test_interpolate_leading_trailing_space(self):
     tmpl = MarkupTemplate('<root>${    foo    }</root>')
     self.assertEqual('<root>bar</root>', str(tmpl.generate(foo='bar')))
Esempio n. 14
0
 def test_interpolate_mixed3(self):
     tmpl = MarkupTemplate('<root> ${var} $var</root>')
     self.assertEqual('<root> 42 42</root>', str(tmpl.generate(var=42)))
Esempio n. 15
0
 def test_parse_stream(self):
     stream = XML('<root> ${var} $var</root>')
     tmpl = MarkupTemplate(stream)
     self.assertEqual('<root> 42 42</root>', str(tmpl.generate(var=42)))
Esempio n. 16
0
 def test_parse_fileobj(self):
     fileobj = StringIO('<root> ${var} $var</root>')
     tmpl = MarkupTemplate(fileobj)
     self.assertEqual('<root> 42 42</root>', str(tmpl.generate(var=42)))
Esempio n. 17
0
 def test_empty_attr_interpolated(self):
     tmpl = MarkupTemplate('<root attr="$attr"/>')
     self.assertEqual('<root attr=""/>', str(tmpl.generate(attr='')))
Esempio n. 18
0
 def test_interpolate_multiline(self):
     tmpl = MarkupTemplate("""<root>${dict(
       bar = 'baz'
     )[foo]}</root>""")
     self.assertEqual('<root>baz</root>', str(tmpl.generate(foo='bar')))