@@ -2028,6 +2028,34 @@ def close(self):
20282028 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd' ))
20292029
20302030
2031+ class XMLParserTest (unittest .TestCase ):
2032+ sample1 = '<file><line>22</line></file>'
2033+
2034+ def _check_sample_element (self , e ):
2035+ self .assertEqual (e .tag , 'file' )
2036+ self .assertEqual (e [0 ].tag , 'line' )
2037+ self .assertEqual (e [0 ].text , '22' )
2038+
2039+ def test_constructor_args (self ):
2040+ # Positional args. The first (html) is not supported, but should be
2041+ # nevertheless correctly accepted.
2042+ parser = ET .XMLParser (None , ET .TreeBuilder (), 'utf-8' )
2043+ parser .feed (self .sample1 )
2044+ self ._check_sample_element (parser .close ())
2045+
2046+ # Now as keyword args.
2047+ parser2 = ET .XMLParser (encoding = 'utf-8' , html = [{}], target = ET .TreeBuilder ())
2048+ parser2 .feed (self .sample1 )
2049+ self ._check_sample_element (parser2 .close ())
2050+
2051+ def test_subclass (self ):
2052+ class MyParser (ET .XMLParser ):
2053+ pass
2054+ parser = MyParser ()
2055+ parser .feed (self .sample1 )
2056+ self ._check_sample_element (parser .close ())
2057+
2058+
20312059class NoAcceleratorTest (unittest .TestCase ):
20322060 # Test that the C accelerator was not imported for pyET
20332061 def test_correct_import_pyET (self ):
@@ -2245,6 +2273,7 @@ def test_main(module=pyET):
22452273 ElementTreeTest ,
22462274 NamespaceParseTest ,
22472275 TreeBuilderTest ,
2276+ XMLParserTest ,
22482277 KeywordArgsTest ]
22492278 if module is pyET :
22502279 # Run the tests specific to the Python implementation
0 commit comments