python-2.5.2/win32/Lib/test/test_capi.py
changeset 0 ae805ac0140d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/python-2.5.2/win32/Lib/test/test_capi.py	Fri Apr 03 17:19:34 2009 +0100
@@ -0,0 +1,55 @@
+# Run the _testcapi module tests (tests for the Python/C API):  by defn,
+# these are all functions _testcapi exports whose name begins with 'test_'.
+
+import sys
+from test import test_support
+import _testcapi
+
+def test_main():
+
+    for name in dir(_testcapi):
+        if name.startswith('test_'):
+            test = getattr(_testcapi, name)
+            if test_support.verbose:
+                print "internal", name
+            try:
+                test()
+            except _testcapi.error:
+                raise test_support.TestFailed, sys.exc_info()[1]
+
+    # some extra thread-state tests driven via _testcapi
+    def TestThreadState():
+        import thread
+        import time
+
+        if test_support.verbose:
+            print "auto-thread-state"
+
+        idents = []
+
+        def callback():
+            idents.append(thread.get_ident())
+
+        _testcapi._test_thread_state(callback)
+        a = b = callback
+        time.sleep(1)
+        # Check our main thread is in the list exactly 3 times.
+        if idents.count(thread.get_ident()) != 3:
+            raise test_support.TestFailed, \
+                  "Couldn't find main thread correctly in the list"
+
+    try:
+        _testcapi._test_thread_state
+        have_thread_state = True
+    except AttributeError:
+        have_thread_state = False
+
+    if have_thread_state:
+        TestThreadState()
+        import threading
+        t=threading.Thread(target=TestThreadState)
+        t.start()
+        t.join()
+
+if __name__ == "__main__":
+    test_main()