summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_imp.py50
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()