[Python-checkins] cpython (2.7): #17249: convert a test in test_capi to use unittest and reap threads.

ezio.melotti python-checkins at python.org
Sat Feb 23 04:59:52 CET 2013


http://hg.python.org/cpython/rev/c6ca87fbea39
changeset: 82325:c6ca87fbea39
branch: 2.7
parent: 82321:ad0712f4b3e0
user: Ezio Melotti <ezio.melotti at gmail.com>
date: Sat Feb 23 05:45:37 2013 +0200
summary:
 #17249: convert a test in test_capi to use unittest and reap threads.
files:
 Lib/test/test_capi.py | 55 +++++++++++++++---------------
 Misc/NEWS | 2 +
 2 files changed, 29 insertions(+), 28 deletions(-)
diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py
--- a/Lib/test/test_capi.py
+++ b/Lib/test/test_capi.py
@@ -4,6 +4,7 @@
 from __future__ import with_statement
 import sys
 import time
+import thread
 import random
 import unittest
 from test import test_support
@@ -96,8 +97,32 @@
 self.pendingcalls_wait(l, n)
 
 
+ at unittest.skipUnless(threading, 'Threading required for this test.')
+class TestThreadState(unittest.TestCase):
+
+ @test_support.reap_threads
+ def test_thread_state(self):
+ # some extra thread-state tests driven via _testcapi
+ def target():
+ 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.
+ self.assertEqual(idents.count(thread.get_ident()), 3,
+ "Couldn't find main thread correctly in the list")
+
+ target()
+ t = threading.Thread(target=target)
+ t.start()
+ t.join()
+
+
 def test_main():
-
 for name in dir(_testcapi):
 if name.startswith('test_'):
 test = getattr(_testcapi, name)
@@ -108,33 +133,7 @@
 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"
-
- if threading:
- import thread
- import time
- TestThreadState()
- t=threading.Thread(target=TestThreadState)
- t.start()
- t.join()
-
- test_support.run_unittest(TestPendingCalls)
+ test_support.run_unittest(TestPendingCalls, TestThreadState)
 
 if __name__ == "__main__":
 test_main()
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -798,6 +798,8 @@
 Tests
 -----
 
+- Issue #17249: convert a test in test_capi to use unittest and reap threads.
+
 - We now run both test_email.py and test_email_renamed.py when running the
 test_email regression test. test_email_renamed contains some tests that
 test_email does not.
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /