Issue 5354: Provide a standardised testing mechanism for doing fresh imports of modules, including the ability to block extension modules in order to test the pure Python fallbacks
diff --git a/Lib/test/test_warnings.py b/Lib/test/test_warnings.py
index bb2fb5f..4c3b43a 100644
--- a/Lib/test/test_warnings.py
+++ b/Lib/test/test_warnings.py
@@ -10,18 +10,8 @@
import warnings as original_warnings
-sys.modules['_warnings'] = 0
-del sys.modules['warnings']
-
-import warnings as py_warnings
-
-del sys.modules['_warnings']
-del sys.modules['warnings']
-
-import warnings as c_warnings
-
-sys.modules['warnings'] = original_warnings
-
+py_warnings = test_support.import_fresh_module('warnings', ['_warnings'])
+c_warnings = test_support.import_fresh_module('warnings')
@contextmanager
def warnings_state(module):
@@ -341,9 +331,21 @@
class CWarnTests(BaseTest, WarnTests):
module = c_warnings
+ # As an early adopter, we sanity check the
+ # test_support.import_fresh_module utility function
+ def test_accelerated(self):
+ self.assertFalse(original_warnings is self.module)
+ self.assertFalse(hasattr(self.module.warn, 'func_code'))
+
class PyWarnTests(BaseTest, WarnTests):
module = py_warnings
+ # As an early adopter, we sanity check the
+ # test_support.import_fresh_module utility function
+ def test_pure_python(self):
+ self.assertFalse(original_warnings is self.module)
+ self.assertTrue(hasattr(self.module.warn, 'func_code'))
+
class WCmdLineTests(unittest.TestCase):