symbian-qemu-0.9.1-12/python-2.6.1/Lib/test/test_capi.py
author Simon Howkins <simonh@symbian.org>
Tue, 07 Sep 2010 14:16:12 +0100
branchRCL_1
changeset 104 d04535f1640a
parent 1 2fb8b9db1c86
permissions -rw-r--r--
Create RCL_1 branch to isolate Symbian^2 builds from changes that only work on Symbian^3. Branch point is the latest that seems to work out of the box.

# 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():
        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:
        import thread
        import time
        TestThreadState()
        import threading
        t=threading.Thread(target=TestThreadState)
        t.start()
        t.join()

if __name__ == "__main__":
    test_main()