diff options
author | Eli Bendersky <eliben@gmail.com> | 2012-06-16 03:47:44 (GMT) |
---|---|---|
committer | Eli Bendersky <eliben@gmail.com> | 2012-06-16 03:47:44 (GMT) |
commit | 6319e0fa2037a70435dfba8c3be2c0db3ae8b7ec (patch) | |
tree | c8e0a53635720ebcf03efbb78d642fa11ad45b5a | |
parent | 07621338fb29444a7b2038da44f3cb57a328a7ce (diff) | |
download | cpython-6319e0fa2037a70435dfba8c3be2c0db3ae8b7ec.zip cpython-6319e0fa2037a70435dfba8c3be2c0db3ae8b7ec.tar.gz cpython-6319e0fa2037a70435dfba8c3be2c0db3ae8b7ec.tar.bz2 |
Make the test more resilient to test-run order (closes #15075)
-rw-r--r-- | Lib/test/test_xml_etree.py | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py index 24ecae5..c1fc955 100644 --- a/Lib/test/test_xml_etree.py +++ b/Lib/test/test_xml_etree.py @@ -1279,8 +1279,7 @@ def xinclude_loader(href, parse="xml", encoding=None): except KeyError: raise OSError("resource not found") if parse == "xml": - from xml.etree.ElementTree import XML - return XML(data) + data = ET.XML(data) return data def xinclude(): @@ -2011,12 +2010,20 @@ class TreeBuilderTest(unittest.TestCase): 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd')) -@unittest.skip('Unstable due to module monkeypatching') class XincludeTest(unittest.TestCase): + def _my_loader(self, href, parse): + # Used to avoid a test-dependency problem where the default loader + # of ElementInclude uses the pyET parser for cET tests. + if parse == 'xml': + with open(href, 'rb') as f: + return ET.parse(f).getroot() + else: + return None + def test_xinclude_default(self): from xml.etree import ElementInclude doc = xinclude_loader('default.xml') - ElementInclude.include(doc) + ElementInclude.include(doc, self._my_loader) s = serialize(doc) self.assertEqual(s.strip(), '''<document> <p>Example.</p> @@ -2308,11 +2315,16 @@ def test_main(module=None): NoAcceleratorTest, ]) - support.run_unittest(*test_classes) + try: + support.run_unittest(*test_classes) + + # XXX the C module should give the same warnings as the Python module + with CleanContext(quiet=(module is not pyET)): + support.run_doctest(sys.modules[__name__], verbosity=True) + finally: + # don't interfere with subsequent tests + ET = pyET = None - # XXX the C module should give the same warnings as the Python module - with CleanContext(quiet=(module is not pyET)): - support.run_doctest(sys.modules[__name__], verbosity=True) if __name__ == '__main__': test_main() |