def test_void_elements(self): # http://www.w3.org/TR/html5/syntax.html#elements-0 void_elements = set( [ "area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr", ] ) # FIXME: These don't get serialized as void elements. void_elements.difference_update(["area", "embed", "keygen", "source", "track", "wbr"]) for tag in sorted(void_elements): with etree.htmlfile(self._file) as xf: xf.write(etree.Element(tag)) self.assertXml("<%s>" % tag) self._file = BytesIO()
def test_void_elements(self): for tag in ("area", "base", "br", "col", "hr", "img", "input", "link", "meta", "param"): with etree.htmlfile(self._file) as xf: xf.write(etree.Element(tag)) self.assertXml('<%s>' % tag) self._file = BytesIO()
def test_write_declaration(self): try: with etree.htmlfile(self._file) as xf: xf.write_declaration() except etree.LxmlSyntaxError: self.assertTrue(True) else: self.assertTrue(False)
def test_xml_mode_element_inside_html(self): # The htmlfile already outputs in xml mode for .element calls. This # test actually illustrates a bug with etree.htmlfile(self._file) as xf: with xf.element("root"): with xf.element('foo', attrib={'selected': 'bar'}): pass self.assertXml( '<root>' # '<foo selected></foo>' # FIXME: this is the correct output # in html mode '<foo selected="bar"></foo>' '</root>') self._file = BytesIO()
def test_void_elements(self): # http://www.w3.org/TR/html5/syntax.html#elements-0 void_elements = set([ "area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr" ]) # FIXME: These don't get serialized as void elements. void_elements.difference_update( ['area', 'embed', 'keygen', 'source', 'track', 'wbr']) for tag in sorted(void_elements): with etree.htmlfile(self._file) as xf: xf.write(etree.Element(tag)) self.assertXml('<%s>' % tag) self._file = BytesIO()
def test_xml_mode_write_inside_html(self): elt = etree.Element("foo", attrib={'selected': 'bar'}) with etree.htmlfile(self._file) as xf: with xf.element("root"): xf.write(elt) # 1 assert elt.text is None xf.write(elt, method='xml') # 2 elt.text = "" xf.write(elt, method='xml') # 3 self.assertXml('<root>' '<foo selected></foo>' # 1 '<foo selected="bar"/>' # 2 '<foo selected="bar"></foo>' # 3 '</root>') self._file = BytesIO()
def test_xml_mode_write_inside_html(self): elt = etree.Element("foo", attrib={'selected': 'bar'}) with etree.htmlfile(self._file) as xf: with xf.element("root"): xf.write(elt) # 1 assert elt.text is None xf.write(elt, method='xml') # 2 elt.text = "" xf.write(elt, method='xml') # 3 self.assertXml( '<root>' '<foo selected></foo>' # 1 '<foo selected="bar"/>' # 2 '<foo selected="bar"></foo>' # 3 '</root>') self._file = BytesIO()
def test_open_namespaced_element(self): with etree.htmlfile(self._file) as xf: with xf.element("{some_ns}some_tag"): pass self.assertXml('<ns0:some_tag xmlns:ns0="some_ns"></ns0:some_tag>')
def test_write_namespaced_element(self): with etree.htmlfile(self._file) as xf: xf.write(etree.Element('{some_ns}some_tag')) self.assertXml('<ns0:some_tag xmlns:ns0="some_ns"></ns0:some_tag>')
def test_unescaped_script_incremental(self): with etree.htmlfile(self._file) as xf: with xf.element('script'): xf.write("if (a < b);") self.assertXml('<script>if (a < b);</script>')
def test_unescaped_script(self): with etree.htmlfile(self._file) as xf: elt = etree.Element('script') elt.text = "if (a < b);" xf.write(elt) self.assertXml('<script>if (a < b);</script>')