| import imp |
| from test.test_support import TestFailed |
| |
| def verify_lock_state(expected): |
| if imp.lock_held() != expected: |
| raise TestFailed("expected imp.lock_held() to be %r" % expected) |
| |
| 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): |
| 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(): |
| testLock() |
| |
| if __name__ == "__main__": |
| test_main() |