1from __future__ import absolute_import, division, unicode_literals 2 3from . import support # flake8: noqa 4 5import html5lib 6from html5lib.treeadapters import sax 7from html5lib.treewalkers import getTreeWalker 8 9 10def test_to_sax(): 11 handler = support.TracingSaxHandler() 12 tree = html5lib.parse("""<html xml:lang="en"> 13 <title>Directory Listing</title> 14 <a href="/"><b/></p> 15 """, treebuilder="etree") 16 walker = getTreeWalker("etree") 17 sax.to_sax(walker(tree), handler) 18 expected = [ 19 'startDocument', 20 ('startElementNS', ('http://www.w3.org/1999/xhtml', 'html'), 21 'html', {(None, 'xml:lang'): 'en'}), 22 ('startElementNS', ('http://www.w3.org/1999/xhtml', 'head'), 'head', {}), 23 ('startElementNS', ('http://www.w3.org/1999/xhtml', 'title'), 'title', {}), 24 ('characters', 'Directory Listing'), 25 ('endElementNS', ('http://www.w3.org/1999/xhtml', 'title'), 'title'), 26 ('characters', '\n '), 27 ('endElementNS', ('http://www.w3.org/1999/xhtml', 'head'), 'head'), 28 ('startElementNS', ('http://www.w3.org/1999/xhtml', 'body'), 'body', {}), 29 ('startElementNS', ('http://www.w3.org/1999/xhtml', 'a'), 'a', {(None, 'href'): '/'}), 30 ('startElementNS', ('http://www.w3.org/1999/xhtml', 'b'), 'b', {}), 31 ('startElementNS', ('http://www.w3.org/1999/xhtml', 'p'), 'p', {}), 32 ('endElementNS', ('http://www.w3.org/1999/xhtml', 'p'), 'p'), 33 ('characters', '\n '), 34 ('endElementNS', ('http://www.w3.org/1999/xhtml', 'b'), 'b'), 35 ('endElementNS', ('http://www.w3.org/1999/xhtml', 'a'), 'a'), 36 ('endElementNS', ('http://www.w3.org/1999/xhtml', 'body'), 'body'), 37 ('endElementNS', ('http://www.w3.org/1999/xhtml', 'html'), 'html'), 38 'endDocument', 39 ] 40 assert expected == handler.visited 41