blob: 893ba24617119f313df78e8299cb41f45ba12297 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
import imp
from test.test_support import TestFailed, TestSkipped
try:
import thread
except ImportError:
raise TestSkipped("test only valid when thread support is available")
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()
|