diff options
Diffstat (limited to 'lib/python2.7/test/test_imp.py')
-rw-r--r-- | lib/python2.7/test/test_imp.py | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/lib/python2.7/test/test_imp.py b/lib/python2.7/test/test_imp.py new file mode 100644 index 0000000..77e44be --- /dev/null +++ b/lib/python2.7/test/test_imp.py @@ -0,0 +1,81 @@ +import imp +import unittest +from test import test_support + + +class LockTests(unittest.TestCase): + + """Very basic test of import lock functions.""" + + def verify_lock_state(self, expected): + self.assertEqual(imp.lock_held(), expected, + "expected imp.lock_held() to be %r" % expected) + def testLock(self): + LOOPS = 50 + + # The import lock may already be held, e.g. if the test suite is run + # via "import test.autotest". + lock_held_at_start = imp.lock_held() + self.verify_lock_state(lock_held_at_start) + + for i in range(LOOPS): + imp.acquire_lock() + self.verify_lock_state(True) + + for i in range(LOOPS): + imp.release_lock() + + # The original state should be restored now. + self.verify_lock_state(lock_held_at_start) + + if not lock_held_at_start: + try: + imp.release_lock() + except RuntimeError: + pass + else: + self.fail("release_lock() without lock should raise " + "RuntimeError") + +class ReloadTests(unittest.TestCase): + + """Very basic tests to make sure that imp.reload() operates just like + reload().""" + + def test_source(self): + # XXX (ncoghlan): It would be nice to use test_support.CleanImport + # here, but that breaks because the os module registers some + # handlers in copy_reg on import. Since CleanImport doesn't + # revert that registration, the module is left in a broken + # state after reversion. Reinitialising the module contents + # and just reverting os.environ to its previous state is an OK + # workaround + with test_support.EnvironmentVarGuard(): + import os + imp.reload(os) + + def test_extension(self): + with test_support.CleanImport('time'): + import time + imp.reload(time) + + def test_builtin(self): + with test_support.CleanImport('marshal'): + import marshal + imp.reload(marshal) + + +def test_main(): + tests = [ + ReloadTests, + ] + try: + import thread + except ImportError: + pass + else: + tests.append(LockTests) + test_support.run_unittest(*tests) + +if __name__ == "__main__": + test_main() |