summaryrefslogtreecommitdiff
path: root/bs4/tests/test_htmlparser.py
diff options
context:
space:
mode:
authorLeonard Richardson <leonardr@segfault.org>2019-07-21 14:58:16 -0400
committerLeonard Richardson <leonardr@segfault.org>2019-07-21 14:58:16 -0400
commitb2294f4f05d9e8583613560986f8aa64b18866b9 (patch)
tree5af13a59eca15ea082cb46ea286bc9c5b91996da /bs4/tests/test_htmlparser.py
parent819fa4255063d6b8d16f62469afa6c6e504f284a (diff)
Adapt Chris Mayo's code to track line number and position when using html.parser.
Diffstat (limited to 'bs4/tests/test_htmlparser.py')
-rw-r--r--bs4/tests/test_htmlparser.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/bs4/tests/test_htmlparser.py b/bs4/tests/test_htmlparser.py
index 790489a..c6a6691 100644
--- a/bs4/tests/test_htmlparser.py
+++ b/bs4/tests/test_htmlparser.py
@@ -37,6 +37,17 @@ class HTMLParserTreeBuilderSmokeTest(SoupTest, HTMLTreeBuilderSmokeTest):
# finishes working is handled.
self.assertSoupEquals("foo &# bar", "foo &amp;# bar")
+ def test_tracking_line_numbers(self):
+ # Unlike other TreeBuilders, the html.parser TreeBuilder
+ # keeps track of line number and position of each element.
+ soup = self.soup(
+ "\n <p>\n\n<lineno>\n<b>text</b></lineno><offset></p>",
+ store_line_numbers=True
+ )
+ self.assertEqual(2, soup.p.lineno)
+ self.assertEqual(3, soup.p.offset)
+ self.assertEqual("lineno", soup.p.find('lineno').name)
+
class TestHTMLParserSubclass(SoupTest):
def test_error(self):