python-2.5.2/win32/Lib/test/test_imp.py
changeset 0 ae805ac0140d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/python-2.5.2/win32/Lib/test/test_imp.py	Fri Apr 03 17:19:34 2009 +0100
@@ -0,0 +1,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()