Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | import formatter |
2 | import htmllib | |
3 | import unittest | |
4 | ||
5 | from test import test_support | |
6 | ||
7 | ||
8 | class AnchorCollector(htmllib.HTMLParser): | |
9 | def __init__(self, *args, **kw): | |
10 | self.__anchors = [] | |
11 | htmllib.HTMLParser.__init__(self, *args, **kw) | |
12 | ||
13 | def get_anchor_info(self): | |
14 | return self.__anchors | |
15 | ||
16 | def anchor_bgn(self, *args): | |
17 | self.__anchors.append(args) | |
18 | ||
19 | class DeclCollector(htmllib.HTMLParser): | |
20 | def __init__(self, *args, **kw): | |
21 | self.__decls = [] | |
22 | htmllib.HTMLParser.__init__(self, *args, **kw) | |
23 | ||
24 | def get_decl_info(self): | |
25 | return self.__decls | |
26 | ||
27 | def unknown_decl(self, data): | |
28 | self.__decls.append(data) | |
29 | ||
30 | ||
31 | class HTMLParserTestCase(unittest.TestCase): | |
32 | def test_anchor_collection(self): | |
33 | # See SF bug #467059. | |
34 | parser = AnchorCollector(formatter.NullFormatter(), verbose=1) | |
35 | parser.feed( | |
36 | """<a href='http://foo.org/' name='splat'> </a> | |
37 | <a href='http://www.python.org/'> </a> | |
38 | <a name='frob'> </a> | |
39 | """) | |
40 | parser.close() | |
41 | self.assertEquals(parser.get_anchor_info(), | |
42 | [('http://foo.org/', 'splat', ''), | |
43 | ('http://www.python.org/', '', ''), | |
44 | ('', 'frob', ''), | |
45 | ]) | |
46 | ||
47 | def test_decl_collection(self): | |
48 | # See SF patch #545300 | |
49 | parser = DeclCollector(formatter.NullFormatter(), verbose=1) | |
50 | parser.feed( | |
51 | """<html> | |
52 | <body> | |
53 | hallo | |
54 | <![if !supportEmptyParas]> <![endif]> | |
55 | </body> | |
56 | </html> | |
57 | """) | |
58 | parser.close() | |
59 | self.assertEquals(parser.get_decl_info(), | |
60 | ["if !supportEmptyParas", | |
61 | "endif" | |
62 | ]) | |
63 | ||
64 | def test_main(): | |
65 | test_support.run_unittest(HTMLParserTestCase) | |
66 | ||
67 | ||
68 | if __name__ == "__main__": | |
69 | test_main() |