Add some testing to verify which module was imported in ET tests.
This is useful when mucking with import_fresh_module to either force or block importing of the _elementtree accelerator. These tests in place provide an immediate indication whether the accelerator was actually imported and overrode the classes it should have.
This commit is contained in:
parent
3a36756ba1
commit
e26fa1bdcb
|
@ -10,6 +10,7 @@ import io
|
|||
import operator
|
||||
import pickle
|
||||
import sys
|
||||
import types
|
||||
import unittest
|
||||
import weakref
|
||||
|
||||
|
@ -2398,8 +2399,11 @@ class NoAcceleratorTest(unittest.TestCase):
|
|||
|
||||
# Test that the C accelerator was not imported for pyET
|
||||
def test_correct_import_pyET(self):
|
||||
self.assertEqual(pyET.Element.__module__, 'xml.etree.ElementTree')
|
||||
self.assertEqual(pyET.SubElement.__module__, 'xml.etree.ElementTree')
|
||||
# The type of methods defined in Python code is types.FunctionType,
|
||||
# while the type of methods defined inside _elementtree is
|
||||
# <class 'wrapper_descriptor'>
|
||||
self.assertIsInstance(pyET.Element.__init__, types.FunctionType)
|
||||
self.assertIsInstance(pyET.XMLParser.__init__, types.FunctionType)
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
import sys, struct
|
||||
from test import support
|
||||
from test.support import import_fresh_module
|
||||
import types
|
||||
import unittest
|
||||
|
||||
cET = import_fresh_module('xml.etree.ElementTree',
|
||||
|
@ -33,14 +34,22 @@ class TestAliasWorking(unittest.TestCase):
|
|||
|
||||
|
||||
@unittest.skipUnless(cET, 'requires _elementtree')
|
||||
@support.cpython_only
|
||||
class TestAcceleratorImported(unittest.TestCase):
|
||||
# Test that the C accelerator was imported, as expected
|
||||
def test_correct_import_cET(self):
|
||||
# SubElement is a function so it retains _elementtree as its module.
|
||||
self.assertEqual(cET.SubElement.__module__, '_elementtree')
|
||||
|
||||
def test_correct_import_cET_alias(self):
|
||||
self.assertEqual(cET_alias.SubElement.__module__, '_elementtree')
|
||||
|
||||
def test_parser_comes_from_C(self):
|
||||
# The type of methods defined in Python code is types.FunctionType,
|
||||
# while the type of methods defined inside _elementtree is
|
||||
# <class 'wrapper_descriptor'>
|
||||
self.assertNotIsInstance(cET.Element.__init__, types.FunctionType)
|
||||
|
||||
|
||||
@unittest.skipUnless(cET, 'requires _elementtree')
|
||||
@support.cpython_only
|
||||
|
|
Loading…
Reference in New Issue