| 
									
										
										
										
											2001-10-04 20:05:10 +00:00
										 |  |  | import formatter | 
					
						
							|  |  |  | import unittest | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-07-23 19:04:11 +00:00
										 |  |  | from test import test_support | 
					
						
							| 
									
										
										
										
											2008-06-01 21:19:14 +00:00
										 |  |  | htmllib = test_support.import_module('htmllib', deprecated=True) | 
					
						
							| 
									
										
										
										
											2001-10-04 20:05:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AnchorCollector(htmllib.HTMLParser): | 
					
						
							|  |  |  |     def __init__(self, *args, **kw): | 
					
						
							|  |  |  |         self.__anchors = [] | 
					
						
							|  |  |  |         htmllib.HTMLParser.__init__(self, *args, **kw) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def get_anchor_info(self): | 
					
						
							|  |  |  |         return self.__anchors | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def anchor_bgn(self, *args): | 
					
						
							|  |  |  |         self.__anchors.append(args) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-03-30 14:25:40 +00:00
										 |  |  | class DeclCollector(htmllib.HTMLParser): | 
					
						
							|  |  |  |     def __init__(self, *args, **kw): | 
					
						
							|  |  |  |         self.__decls = [] | 
					
						
							|  |  |  |         htmllib.HTMLParser.__init__(self, *args, **kw) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def get_decl_info(self): | 
					
						
							|  |  |  |         return self.__decls | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def unknown_decl(self, data): | 
					
						
							|  |  |  |         self.__decls.append(data) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-10-04 20:05:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class HTMLParserTestCase(unittest.TestCase): | 
					
						
							|  |  |  |     def test_anchor_collection(self): | 
					
						
							|  |  |  |         # See SF bug #467059. | 
					
						
							|  |  |  |         parser = AnchorCollector(formatter.NullFormatter(), verbose=1) | 
					
						
							|  |  |  |         parser.feed( | 
					
						
							|  |  |  |             """<a href='http://foo.org/' name='splat'> </a>
 | 
					
						
							|  |  |  |             <a href='http://www.python.org/'> </a> | 
					
						
							|  |  |  |             <a name='frob'> </a> | 
					
						
							|  |  |  |             """)
 | 
					
						
							|  |  |  |         parser.close() | 
					
						
							|  |  |  |         self.assertEquals(parser.get_anchor_info(), | 
					
						
							|  |  |  |                           [('http://foo.org/', 'splat', ''), | 
					
						
							|  |  |  |                            ('http://www.python.org/', '', ''), | 
					
						
							|  |  |  |                            ('', 'frob', ''), | 
					
						
							|  |  |  |                            ]) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-03-30 14:25:40 +00:00
										 |  |  |     def test_decl_collection(self): | 
					
						
							|  |  |  |         # See SF patch #545300 | 
					
						
							|  |  |  |         parser = DeclCollector(formatter.NullFormatter(), verbose=1) | 
					
						
							|  |  |  |         parser.feed( | 
					
						
							|  |  |  |             """<html>
 | 
					
						
							|  |  |  |             <body> | 
					
						
							|  |  |  |             hallo | 
					
						
							|  |  |  |             <![if !supportEmptyParas]> <![endif]> | 
					
						
							|  |  |  |             </body> | 
					
						
							|  |  |  |             </html> | 
					
						
							|  |  |  |             """)
 | 
					
						
							|  |  |  |         parser.close() | 
					
						
							|  |  |  |         self.assertEquals(parser.get_decl_info(), | 
					
						
							|  |  |  |                           ["if !supportEmptyParas", | 
					
						
							|  |  |  |                            "endif" | 
					
						
							|  |  |  |                            ]) | 
					
						
							| 
									
										
										
										
											2001-10-04 20:05:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def test_main(): | 
					
						
							|  |  |  |     test_support.run_unittest(HTMLParserTestCase) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     test_main() |