summaryrefslogtreecommitdiff
path: root/sys/lib/python/test/test_capi.py
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
committercinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
commit458120dd40db6b4df55a4e96b650e16798ef06a0 (patch)
tree8f82685be24fef97e715c6f5ca4c68d34d5074ee /sys/lib/python/test/test_capi.py
parent3a742c699f6806c1145aea5149bf15de15a0afd7 (diff)
add hg and python
Diffstat (limited to 'sys/lib/python/test/test_capi.py')
-rw-r--r--sys/lib/python/test/test_capi.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/sys/lib/python/test/test_capi.py b/sys/lib/python/test/test_capi.py
new file mode 100644
index 000000000..cdd84bb22
--- /dev/null
+++ b/sys/lib/python/test/test_capi.py
@@ -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()