diff options
-rw-r--r-- | Lib/test/test_imp.py | 50 |
1 files changed, 30 insertions, 20 deletions
diff --git a/Lib/test/test_imp.py b/Lib/test/test_imp.py index 22e25ba..9b7e3b7 100644 --- a/Lib/test/test_imp.py +++ b/Lib/test/test_imp.py @@ -1,29 +1,39 @@ - import imp -import unittest -from test.test_support import TestFailed, run_unittest +from test.test_support import TestFailed -class ImpLock(unittest.TestCase): +def verify_lock_state(expected): + if imp.lock_held() != expected: + raise TestFailed("expected imp.lock_held() to be %r" % expected) - # XXX this test is woefully inadequate, please fix me - def testLock(self): - LOOPS = 50 - for i in range(LOOPS): - imp.acquire_lock() - for i in range(LOOPS): - imp.release_lock() +def testLock(): + 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() + verify_lock_state(lock_held_at_start) + + for i in range(LOOPS): + imp.acquire_lock() + verify_lock_state(True) - for i in range(LOOPS): - try: - imp.release_lock() - except RuntimeError: - pass - else: - raise TestFailed, \ - "release_lock() without lock should raise RuntimeError" + for i in range(LOOPS): + imp.release_lock() + + # The original state should be restored now. + verify_lock_state(lock_held_at_start) + + if not lock_held_at_start: + try: + imp.release_lock() + except RuntimeError: + pass + else: + raise TestFailed("release_lock() without lock should raise " + "RuntimeError") def test_main(): - run_unittest(ImpLock) + testLock() if __name__ == "__main__": test_main() |