2001-02-03 23:09:53 -04:00
|
|
|
# Run the _testcapi module tests (tests for the Python/C API): by defn,
|
2001-04-13 14:03:04 -03:00
|
|
|
# these are all functions _testcapi exports whose name begins with 'test_'.
|
2001-02-02 01:57:15 -04:00
|
|
|
|
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68547 | kristjan.jonsson | 2009-01-12 12:09:27 -0600 (Mon, 12 Jan 2009) | 1 line
Add tests for invalid format specifiers in strftime, and for handling of invalid file descriptors in the os module.
........
r68607 | kristjan.jonsson | 2009-01-14 04:50:57 -0600 (Wed, 14 Jan 2009) | 2 lines
Re-enable all tests for windows platforms.
Also, explicitly connect to the IPV4 address. On windows platforms supporting AF_INET6, the SocketProxy would connect using socket.create_connection('localhost', port) which would cycle through all address families and try to connect. It would try connecting using AF_INET6 first and this would cause a delay of up to a second.
........
r68610 | kristjan.jonsson | 2009-01-15 03:09:13 -0600 (Thu, 15 Jan 2009) | 3 lines
Fix recently introduced test cases.
For datetime, gentoo didn't seem to mind the %e format for strftime. So, we just excercise those instead making sure that we don't crash.
For test_os, two cases were incorrect.
........
r68618 | kristjan.jonsson | 2009-01-15 11:20:21 -0600 (Thu, 15 Jan 2009) | 1 line
Issue 4929: Handle socket errors when receiving
........
r68621 | kristjan.jonsson | 2009-01-15 16:40:03 -0600 (Thu, 15 Jan 2009) | 1 line
Fix two test cases in test_os. ftruncate raises IOError unlike all the others which raise OSError. And close() on some platforms doesn't complain when given an invalid file descriptor.
........
r68622 | kristjan.jonsson | 2009-01-15 16:46:26 -0600 (Thu, 15 Jan 2009) | 1 line
Make all the invalid fd tests for os subject to the function being available.
........
r68649 | benjamin.peterson | 2009-01-16 22:39:05 -0600 (Fri, 16 Jan 2009) | 1 line
trying to find some fpathconf() settings that all unixs support...
........
r68722 | kristjan.jonsson | 2009-01-18 04:58:44 -0600 (Sun, 18 Jan 2009) | 1 line
issue 4293: make test_capi.py more robutst, it times out on some platforms, presumably waiting for threads. Lower the thread count to 16.
........
2009-01-18 17:02:37 -04:00
|
|
|
from __future__ import with_statement
|
2011-04-25 16:21:07 -03:00
|
|
|
import os
|
2012-01-17 19:21:11 -04:00
|
|
|
import pickle
|
2010-05-13 15:31:05 -03:00
|
|
|
import random
|
|
|
|
import subprocess
|
2005-03-03 08:26:35 -04:00
|
|
|
import sys
|
2009-01-12 22:11:23 -04:00
|
|
|
import time
|
2008-10-16 20:56:29 -03:00
|
|
|
import unittest
|
2008-05-20 18:35:26 -03:00
|
|
|
from test import support
|
2012-08-20 06:04:24 -03:00
|
|
|
try:
|
|
|
|
import _posixsubprocess
|
|
|
|
except ImportError:
|
|
|
|
_posixsubprocess = None
|
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r80552 | victor.stinner | 2010-04-27 23:46:03 +0200 (mar., 27 avril 2010) | 3 lines
Issue #7449, part 1: fix test_support.py for Python compiled without thread
........
r80553 | victor.stinner | 2010-04-27 23:47:01 +0200 (mar., 27 avril 2010) | 1 line
Issue #7449, part 2: regrtest.py -j option requires thread support
........
r80554 | victor.stinner | 2010-04-27 23:51:26 +0200 (mar., 27 avril 2010) | 9 lines
Issue #7449 part 3, test_doctest: import trace module in test_coverage()
Import trace module fail if the threading module is missing. test_coverage() is
only used if test_doctest.py is used with the -c option. This commit allows to
execute the test suite without thread support.
Move "import trace" in test_coverage() and use
test_support.import_module('trace').
........
r80555 | victor.stinner | 2010-04-27 23:56:26 +0200 (mar., 27 avril 2010) | 6 lines
Issue #7449, part 4: skip test_multiprocessing if thread support is disabled
import threading after _multiprocessing to raise a more revelant error message:
"No module named _multiprocessing". _multiprocessing is not compiled without
thread support.
........
r80556 | victor.stinner | 2010-04-28 00:01:24 +0200 (mer., 28 avril 2010) | 8 lines
Issue #7449, part 5: split Test.test_open() of ctypes/test/test_errno.py
* Split Test.test_open() in 2 functions: test_open() and test_thread_open()
* Skip test_open() and test_thread_open() if we are unable to find the C
library
* Skip test_thread_open() if thread support is disabled
* Use unittest.skipUnless(os.name == "nt", ...) on test_GetLastError()
........
r80564 | victor.stinner | 2010-04-28 00:59:35 +0200 (mer., 28 avril 2010) | 4 lines
Issue #7449, part 6: fix test_hashlib for missing threading module
Move @test_support.reap_thread decorator from test_main() to test_threaded_hashing().
........
r80565 | victor.stinner | 2010-04-28 01:01:29 +0200 (mer., 28 avril 2010) | 6 lines
Issue #7449, part 7: simplify threading detection in test_capi
* Skip TestPendingCalls if threading module is missing
* Test if threading module is present or not, instead of test the presence of
_testcapi._test_thread_state
........
r80566 | victor.stinner | 2010-04-28 01:03:16 +0200 (mer., 28 avril 2010) | 4 lines
Issue #7449, part 8: don't skip the whole test_asynchat if threading is missing
TestFifo can be executed without the threading module
........
r80568 | victor.stinner | 2010-04-28 01:14:58 +0200 (mer., 28 avril 2010) | 6 lines
Issue #7449, part 9: fix test_xmlrpclib for missing threading module
* Skip testcases using threads if threading module is missing
* Use "http://" instead of URL in ServerProxyTestCase if threading is missing
because URL is not set in this case
........
r80569 | victor.stinner | 2010-04-28 01:33:58 +0200 (mer., 28 avril 2010) | 6 lines
Partial revert of r80556 (Issue #7449, part 5, fix ctypes test)
Rewrite r80556: the thread test have to be executed just after the test on
libc_open() and so the test cannot be splitted in two functions (without
duplicating code, and I don't want to duplicate code).
........
r80570 | victor.stinner | 2010-04-28 01:51:16 +0200 (mer., 28 avril 2010) | 8 lines
Issue #7449, part 10: test_cmd imports trace module using test_support.import_module()
Use test_support.import_module() instead of import to raise a SkipTest
exception if the import fail. Import trace fails if the threading module is
missing.
See also part 3: test_doctest: import trace module in test_coverage().
........
r80571 | victor.stinner | 2010-04-28 01:55:59 +0200 (mer., 28 avril 2010) | 6 lines
Issue #7449, last part (11): fix many tests if thread support is disabled
* Use try/except ImportError or test_support.import_module() to import thread
and threading modules
* Add @unittest.skipUnless(threading, ...) to testcases using threads
........
2010-04-28 19:31:17 -03:00
|
|
|
try:
|
|
|
|
import threading
|
|
|
|
except ImportError:
|
|
|
|
threading = None
|
2001-02-03 23:09:53 -04:00
|
|
|
import _testcapi
|
2001-02-02 01:57:15 -04:00
|
|
|
|
2009-01-12 22:11:23 -04:00
|
|
|
|
2008-10-16 20:56:29 -03:00
|
|
|
def testfunction(self):
|
|
|
|
"""some doc"""
|
|
|
|
return self
|
|
|
|
|
|
|
|
class InstanceMethod:
|
|
|
|
id = _testcapi.instancemethod(id)
|
|
|
|
testfunction = _testcapi.instancemethod(testfunction)
|
|
|
|
|
|
|
|
class CAPITest(unittest.TestCase):
|
|
|
|
|
|
|
|
def test_instancemethod(self):
|
|
|
|
inst = InstanceMethod()
|
|
|
|
self.assertEqual(id(inst), inst.id())
|
2009-06-30 20:06:06 -03:00
|
|
|
self.assertTrue(inst.testfunction() is inst)
|
2008-10-16 20:56:29 -03:00
|
|
|
self.assertEqual(inst.testfunction.__doc__, testfunction.__doc__)
|
|
|
|
self.assertEqual(InstanceMethod.testfunction.__doc__, testfunction.__doc__)
|
|
|
|
|
|
|
|
InstanceMethod.testfunction.attribute = "test"
|
|
|
|
self.assertEqual(testfunction.attribute, "test")
|
|
|
|
self.assertRaises(AttributeError, setattr, inst.testfunction, "attribute", "test")
|
|
|
|
|
2010-06-09 05:56:28 -03:00
|
|
|
@unittest.skipUnless(threading, 'Threading required for this test.')
|
2010-05-13 15:31:05 -03:00
|
|
|
def test_no_FatalError_infinite_loop(self):
|
|
|
|
p = subprocess.Popen([sys.executable, "-c",
|
|
|
|
'import _testcapi;'
|
|
|
|
'_testcapi.crash_no_current_thread()'],
|
|
|
|
stdout=subprocess.PIPE,
|
|
|
|
stderr=subprocess.PIPE)
|
|
|
|
(out, err) = p.communicate()
|
|
|
|
self.assertEqual(out, b'')
|
|
|
|
# This used to cause an infinite loop.
|
2012-05-06 07:34:50 -03:00
|
|
|
self.assertTrue(err.rstrip().startswith(
|
2010-05-13 15:31:05 -03:00
|
|
|
b'Fatal Python error:'
|
2012-05-06 07:34:50 -03:00
|
|
|
b' PyThreadState_Get: no current thread'))
|
2010-05-13 15:31:05 -03:00
|
|
|
|
2011-02-24 16:53:48 -04:00
|
|
|
def test_memoryview_from_NULL_pointer(self):
|
|
|
|
self.assertRaises(ValueError, _testcapi.make_memoryview_from_NULL_pointer)
|
2008-10-16 20:56:29 -03:00
|
|
|
|
2012-04-19 09:33:43 -03:00
|
|
|
def test_exc_info(self):
|
|
|
|
raised_exception = ValueError("5")
|
|
|
|
new_exc = TypeError("TEST")
|
|
|
|
try:
|
|
|
|
raise raised_exception
|
|
|
|
except ValueError as e:
|
|
|
|
tb = e.__traceback__
|
|
|
|
orig_sys_exc_info = sys.exc_info()
|
|
|
|
orig_exc_info = _testcapi.set_exc_info(new_exc.__class__, new_exc, None)
|
|
|
|
new_sys_exc_info = sys.exc_info()
|
|
|
|
new_exc_info = _testcapi.set_exc_info(*orig_exc_info)
|
|
|
|
reset_sys_exc_info = sys.exc_info()
|
|
|
|
|
|
|
|
self.assertEqual(orig_exc_info[1], e)
|
|
|
|
|
|
|
|
self.assertSequenceEqual(orig_exc_info, (raised_exception.__class__, raised_exception, tb))
|
|
|
|
self.assertSequenceEqual(orig_sys_exc_info, orig_exc_info)
|
|
|
|
self.assertSequenceEqual(reset_sys_exc_info, orig_exc_info)
|
|
|
|
self.assertSequenceEqual(new_exc_info, (new_exc.__class__, new_exc, None))
|
|
|
|
self.assertSequenceEqual(new_sys_exc_info, new_exc_info)
|
|
|
|
else:
|
|
|
|
self.assertTrue(False)
|
|
|
|
|
2012-08-20 06:04:24 -03:00
|
|
|
@unittest.skipUnless(_posixsubprocess, '_posixsubprocess required for this test.')
|
|
|
|
def test_seq_bytes_to_charp_array(self):
|
|
|
|
# Issue #15732: crash in _PySequence_BytesToCharpArray()
|
|
|
|
class Z(object):
|
|
|
|
def __len__(self):
|
|
|
|
return 1
|
|
|
|
self.assertRaises(TypeError, _posixsubprocess.fork_exec,
|
|
|
|
1,Z(),3,[1, 2],5,6,7,8,9,10,11,12,13,14,15,16,17)
|
2012-08-21 03:16:09 -03:00
|
|
|
# Issue #15736: overflow in _PySequence_BytesToCharpArray()
|
|
|
|
class Z(object):
|
|
|
|
def __len__(self):
|
|
|
|
return sys.maxsize
|
|
|
|
def __getitem__(self, i):
|
|
|
|
return b'x'
|
|
|
|
self.assertRaises(MemoryError, _posixsubprocess.fork_exec,
|
|
|
|
1,Z(),3,[1, 2],5,6,7,8,9,10,11,12,13,14,15,16,17)
|
2012-08-20 06:04:24 -03:00
|
|
|
|
2012-08-20 09:36:47 -03:00
|
|
|
@unittest.skipUnless(_posixsubprocess, '_posixsubprocess required for this test.')
|
|
|
|
def test_subprocess_fork_exec(self):
|
|
|
|
class Z(object):
|
|
|
|
def __len__(self):
|
|
|
|
return 1
|
|
|
|
|
|
|
|
# Issue #15738: crash in subprocess_fork_exec()
|
|
|
|
self.assertRaises(TypeError, _posixsubprocess.fork_exec,
|
|
|
|
Z(),[b'1'],3,[1, 2],5,6,7,8,9,10,11,12,13,14,15,16,17)
|
2012-08-20 06:04:24 -03:00
|
|
|
|
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r80552 | victor.stinner | 2010-04-27 23:46:03 +0200 (mar., 27 avril 2010) | 3 lines
Issue #7449, part 1: fix test_support.py for Python compiled without thread
........
r80553 | victor.stinner | 2010-04-27 23:47:01 +0200 (mar., 27 avril 2010) | 1 line
Issue #7449, part 2: regrtest.py -j option requires thread support
........
r80554 | victor.stinner | 2010-04-27 23:51:26 +0200 (mar., 27 avril 2010) | 9 lines
Issue #7449 part 3, test_doctest: import trace module in test_coverage()
Import trace module fail if the threading module is missing. test_coverage() is
only used if test_doctest.py is used with the -c option. This commit allows to
execute the test suite without thread support.
Move "import trace" in test_coverage() and use
test_support.import_module('trace').
........
r80555 | victor.stinner | 2010-04-27 23:56:26 +0200 (mar., 27 avril 2010) | 6 lines
Issue #7449, part 4: skip test_multiprocessing if thread support is disabled
import threading after _multiprocessing to raise a more revelant error message:
"No module named _multiprocessing". _multiprocessing is not compiled without
thread support.
........
r80556 | victor.stinner | 2010-04-28 00:01:24 +0200 (mer., 28 avril 2010) | 8 lines
Issue #7449, part 5: split Test.test_open() of ctypes/test/test_errno.py
* Split Test.test_open() in 2 functions: test_open() and test_thread_open()
* Skip test_open() and test_thread_open() if we are unable to find the C
library
* Skip test_thread_open() if thread support is disabled
* Use unittest.skipUnless(os.name == "nt", ...) on test_GetLastError()
........
r80564 | victor.stinner | 2010-04-28 00:59:35 +0200 (mer., 28 avril 2010) | 4 lines
Issue #7449, part 6: fix test_hashlib for missing threading module
Move @test_support.reap_thread decorator from test_main() to test_threaded_hashing().
........
r80565 | victor.stinner | 2010-04-28 01:01:29 +0200 (mer., 28 avril 2010) | 6 lines
Issue #7449, part 7: simplify threading detection in test_capi
* Skip TestPendingCalls if threading module is missing
* Test if threading module is present or not, instead of test the presence of
_testcapi._test_thread_state
........
r80566 | victor.stinner | 2010-04-28 01:03:16 +0200 (mer., 28 avril 2010) | 4 lines
Issue #7449, part 8: don't skip the whole test_asynchat if threading is missing
TestFifo can be executed without the threading module
........
r80568 | victor.stinner | 2010-04-28 01:14:58 +0200 (mer., 28 avril 2010) | 6 lines
Issue #7449, part 9: fix test_xmlrpclib for missing threading module
* Skip testcases using threads if threading module is missing
* Use "http://" instead of URL in ServerProxyTestCase if threading is missing
because URL is not set in this case
........
r80569 | victor.stinner | 2010-04-28 01:33:58 +0200 (mer., 28 avril 2010) | 6 lines
Partial revert of r80556 (Issue #7449, part 5, fix ctypes test)
Rewrite r80556: the thread test have to be executed just after the test on
libc_open() and so the test cannot be splitted in two functions (without
duplicating code, and I don't want to duplicate code).
........
r80570 | victor.stinner | 2010-04-28 01:51:16 +0200 (mer., 28 avril 2010) | 8 lines
Issue #7449, part 10: test_cmd imports trace module using test_support.import_module()
Use test_support.import_module() instead of import to raise a SkipTest
exception if the import fail. Import trace fails if the threading module is
missing.
See also part 3: test_doctest: import trace module in test_coverage().
........
r80571 | victor.stinner | 2010-04-28 01:55:59 +0200 (mer., 28 avril 2010) | 6 lines
Issue #7449, last part (11): fix many tests if thread support is disabled
* Use try/except ImportError or test_support.import_module() to import thread
and threading modules
* Add @unittest.skipUnless(threading, ...) to testcases using threads
........
2010-04-28 19:31:17 -03:00
|
|
|
@unittest.skipUnless(threading, 'Threading required for this test.')
|
2009-01-12 22:11:23 -04:00
|
|
|
class TestPendingCalls(unittest.TestCase):
|
|
|
|
|
|
|
|
def pendingcalls_submit(self, l, n):
|
|
|
|
def callback():
|
|
|
|
#this function can be interrupted by thread switching so let's
|
|
|
|
#use an atomic operation
|
|
|
|
l.append(None)
|
|
|
|
|
|
|
|
for i in range(n):
|
|
|
|
time.sleep(random.random()*0.02) #0.01 secs on average
|
|
|
|
#try submitting callback until successful.
|
|
|
|
#rely on regular interrupt to flush queue if we are
|
|
|
|
#unsuccessful.
|
|
|
|
while True:
|
|
|
|
if _testcapi._pending_threadfunc(callback):
|
|
|
|
break;
|
|
|
|
|
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68547 | kristjan.jonsson | 2009-01-12 12:09:27 -0600 (Mon, 12 Jan 2009) | 1 line
Add tests for invalid format specifiers in strftime, and for handling of invalid file descriptors in the os module.
........
r68607 | kristjan.jonsson | 2009-01-14 04:50:57 -0600 (Wed, 14 Jan 2009) | 2 lines
Re-enable all tests for windows platforms.
Also, explicitly connect to the IPV4 address. On windows platforms supporting AF_INET6, the SocketProxy would connect using socket.create_connection('localhost', port) which would cycle through all address families and try to connect. It would try connecting using AF_INET6 first and this would cause a delay of up to a second.
........
r68610 | kristjan.jonsson | 2009-01-15 03:09:13 -0600 (Thu, 15 Jan 2009) | 3 lines
Fix recently introduced test cases.
For datetime, gentoo didn't seem to mind the %e format for strftime. So, we just excercise those instead making sure that we don't crash.
For test_os, two cases were incorrect.
........
r68618 | kristjan.jonsson | 2009-01-15 11:20:21 -0600 (Thu, 15 Jan 2009) | 1 line
Issue 4929: Handle socket errors when receiving
........
r68621 | kristjan.jonsson | 2009-01-15 16:40:03 -0600 (Thu, 15 Jan 2009) | 1 line
Fix two test cases in test_os. ftruncate raises IOError unlike all the others which raise OSError. And close() on some platforms doesn't complain when given an invalid file descriptor.
........
r68622 | kristjan.jonsson | 2009-01-15 16:46:26 -0600 (Thu, 15 Jan 2009) | 1 line
Make all the invalid fd tests for os subject to the function being available.
........
r68649 | benjamin.peterson | 2009-01-16 22:39:05 -0600 (Fri, 16 Jan 2009) | 1 line
trying to find some fpathconf() settings that all unixs support...
........
r68722 | kristjan.jonsson | 2009-01-18 04:58:44 -0600 (Sun, 18 Jan 2009) | 1 line
issue 4293: make test_capi.py more robutst, it times out on some platforms, presumably waiting for threads. Lower the thread count to 16.
........
2009-01-18 17:02:37 -04:00
|
|
|
def pendingcalls_wait(self, l, n, context = None):
|
2009-01-12 22:11:23 -04:00
|
|
|
#now, stick around until l[0] has grown to 10
|
|
|
|
count = 0;
|
|
|
|
while len(l) != n:
|
|
|
|
#this busy loop is where we expect to be interrupted to
|
|
|
|
#run our callbacks. Note that callbacks are only run on the
|
|
|
|
#main thread
|
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68547 | kristjan.jonsson | 2009-01-12 12:09:27 -0600 (Mon, 12 Jan 2009) | 1 line
Add tests for invalid format specifiers in strftime, and for handling of invalid file descriptors in the os module.
........
r68607 | kristjan.jonsson | 2009-01-14 04:50:57 -0600 (Wed, 14 Jan 2009) | 2 lines
Re-enable all tests for windows platforms.
Also, explicitly connect to the IPV4 address. On windows platforms supporting AF_INET6, the SocketProxy would connect using socket.create_connection('localhost', port) which would cycle through all address families and try to connect. It would try connecting using AF_INET6 first and this would cause a delay of up to a second.
........
r68610 | kristjan.jonsson | 2009-01-15 03:09:13 -0600 (Thu, 15 Jan 2009) | 3 lines
Fix recently introduced test cases.
For datetime, gentoo didn't seem to mind the %e format for strftime. So, we just excercise those instead making sure that we don't crash.
For test_os, two cases were incorrect.
........
r68618 | kristjan.jonsson | 2009-01-15 11:20:21 -0600 (Thu, 15 Jan 2009) | 1 line
Issue 4929: Handle socket errors when receiving
........
r68621 | kristjan.jonsson | 2009-01-15 16:40:03 -0600 (Thu, 15 Jan 2009) | 1 line
Fix two test cases in test_os. ftruncate raises IOError unlike all the others which raise OSError. And close() on some platforms doesn't complain when given an invalid file descriptor.
........
r68622 | kristjan.jonsson | 2009-01-15 16:46:26 -0600 (Thu, 15 Jan 2009) | 1 line
Make all the invalid fd tests for os subject to the function being available.
........
r68649 | benjamin.peterson | 2009-01-16 22:39:05 -0600 (Fri, 16 Jan 2009) | 1 line
trying to find some fpathconf() settings that all unixs support...
........
r68722 | kristjan.jonsson | 2009-01-18 04:58:44 -0600 (Sun, 18 Jan 2009) | 1 line
issue 4293: make test_capi.py more robutst, it times out on some platforms, presumably waiting for threads. Lower the thread count to 16.
........
2009-01-18 17:02:37 -04:00
|
|
|
if False and support.verbose:
|
2009-01-12 22:11:23 -04:00
|
|
|
print("(%i)"%(len(l),),)
|
|
|
|
for i in range(1000):
|
|
|
|
a = i*i
|
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68547 | kristjan.jonsson | 2009-01-12 12:09:27 -0600 (Mon, 12 Jan 2009) | 1 line
Add tests for invalid format specifiers in strftime, and for handling of invalid file descriptors in the os module.
........
r68607 | kristjan.jonsson | 2009-01-14 04:50:57 -0600 (Wed, 14 Jan 2009) | 2 lines
Re-enable all tests for windows platforms.
Also, explicitly connect to the IPV4 address. On windows platforms supporting AF_INET6, the SocketProxy would connect using socket.create_connection('localhost', port) which would cycle through all address families and try to connect. It would try connecting using AF_INET6 first and this would cause a delay of up to a second.
........
r68610 | kristjan.jonsson | 2009-01-15 03:09:13 -0600 (Thu, 15 Jan 2009) | 3 lines
Fix recently introduced test cases.
For datetime, gentoo didn't seem to mind the %e format for strftime. So, we just excercise those instead making sure that we don't crash.
For test_os, two cases were incorrect.
........
r68618 | kristjan.jonsson | 2009-01-15 11:20:21 -0600 (Thu, 15 Jan 2009) | 1 line
Issue 4929: Handle socket errors when receiving
........
r68621 | kristjan.jonsson | 2009-01-15 16:40:03 -0600 (Thu, 15 Jan 2009) | 1 line
Fix two test cases in test_os. ftruncate raises IOError unlike all the others which raise OSError. And close() on some platforms doesn't complain when given an invalid file descriptor.
........
r68622 | kristjan.jonsson | 2009-01-15 16:46:26 -0600 (Thu, 15 Jan 2009) | 1 line
Make all the invalid fd tests for os subject to the function being available.
........
r68649 | benjamin.peterson | 2009-01-16 22:39:05 -0600 (Fri, 16 Jan 2009) | 1 line
trying to find some fpathconf() settings that all unixs support...
........
r68722 | kristjan.jonsson | 2009-01-18 04:58:44 -0600 (Sun, 18 Jan 2009) | 1 line
issue 4293: make test_capi.py more robutst, it times out on some platforms, presumably waiting for threads. Lower the thread count to 16.
........
2009-01-18 17:02:37 -04:00
|
|
|
if context and not context.event.is_set():
|
|
|
|
continue
|
2009-01-12 22:11:23 -04:00
|
|
|
count += 1
|
2009-06-30 20:06:06 -03:00
|
|
|
self.assertTrue(count < 10000,
|
2009-01-12 22:11:23 -04:00
|
|
|
"timeout waiting for %i callbacks, got %i"%(n, len(l)))
|
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68547 | kristjan.jonsson | 2009-01-12 12:09:27 -0600 (Mon, 12 Jan 2009) | 1 line
Add tests for invalid format specifiers in strftime, and for handling of invalid file descriptors in the os module.
........
r68607 | kristjan.jonsson | 2009-01-14 04:50:57 -0600 (Wed, 14 Jan 2009) | 2 lines
Re-enable all tests for windows platforms.
Also, explicitly connect to the IPV4 address. On windows platforms supporting AF_INET6, the SocketProxy would connect using socket.create_connection('localhost', port) which would cycle through all address families and try to connect. It would try connecting using AF_INET6 first and this would cause a delay of up to a second.
........
r68610 | kristjan.jonsson | 2009-01-15 03:09:13 -0600 (Thu, 15 Jan 2009) | 3 lines
Fix recently introduced test cases.
For datetime, gentoo didn't seem to mind the %e format for strftime. So, we just excercise those instead making sure that we don't crash.
For test_os, two cases were incorrect.
........
r68618 | kristjan.jonsson | 2009-01-15 11:20:21 -0600 (Thu, 15 Jan 2009) | 1 line
Issue 4929: Handle socket errors when receiving
........
r68621 | kristjan.jonsson | 2009-01-15 16:40:03 -0600 (Thu, 15 Jan 2009) | 1 line
Fix two test cases in test_os. ftruncate raises IOError unlike all the others which raise OSError. And close() on some platforms doesn't complain when given an invalid file descriptor.
........
r68622 | kristjan.jonsson | 2009-01-15 16:46:26 -0600 (Thu, 15 Jan 2009) | 1 line
Make all the invalid fd tests for os subject to the function being available.
........
r68649 | benjamin.peterson | 2009-01-16 22:39:05 -0600 (Fri, 16 Jan 2009) | 1 line
trying to find some fpathconf() settings that all unixs support...
........
r68722 | kristjan.jonsson | 2009-01-18 04:58:44 -0600 (Sun, 18 Jan 2009) | 1 line
issue 4293: make test_capi.py more robutst, it times out on some platforms, presumably waiting for threads. Lower the thread count to 16.
........
2009-01-18 17:02:37 -04:00
|
|
|
if False and support.verbose:
|
2009-01-12 22:11:23 -04:00
|
|
|
print("(%i)"%(len(l),))
|
|
|
|
|
|
|
|
def test_pendingcalls_threaded(self):
|
|
|
|
|
|
|
|
#do every callback on a separate thread
|
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68547 | kristjan.jonsson | 2009-01-12 12:09:27 -0600 (Mon, 12 Jan 2009) | 1 line
Add tests for invalid format specifiers in strftime, and for handling of invalid file descriptors in the os module.
........
r68607 | kristjan.jonsson | 2009-01-14 04:50:57 -0600 (Wed, 14 Jan 2009) | 2 lines
Re-enable all tests for windows platforms.
Also, explicitly connect to the IPV4 address. On windows platforms supporting AF_INET6, the SocketProxy would connect using socket.create_connection('localhost', port) which would cycle through all address families and try to connect. It would try connecting using AF_INET6 first and this would cause a delay of up to a second.
........
r68610 | kristjan.jonsson | 2009-01-15 03:09:13 -0600 (Thu, 15 Jan 2009) | 3 lines
Fix recently introduced test cases.
For datetime, gentoo didn't seem to mind the %e format for strftime. So, we just excercise those instead making sure that we don't crash.
For test_os, two cases were incorrect.
........
r68618 | kristjan.jonsson | 2009-01-15 11:20:21 -0600 (Thu, 15 Jan 2009) | 1 line
Issue 4929: Handle socket errors when receiving
........
r68621 | kristjan.jonsson | 2009-01-15 16:40:03 -0600 (Thu, 15 Jan 2009) | 1 line
Fix two test cases in test_os. ftruncate raises IOError unlike all the others which raise OSError. And close() on some platforms doesn't complain when given an invalid file descriptor.
........
r68622 | kristjan.jonsson | 2009-01-15 16:46:26 -0600 (Thu, 15 Jan 2009) | 1 line
Make all the invalid fd tests for os subject to the function being available.
........
r68649 | benjamin.peterson | 2009-01-16 22:39:05 -0600 (Fri, 16 Jan 2009) | 1 line
trying to find some fpathconf() settings that all unixs support...
........
r68722 | kristjan.jonsson | 2009-01-18 04:58:44 -0600 (Sun, 18 Jan 2009) | 1 line
issue 4293: make test_capi.py more robutst, it times out on some platforms, presumably waiting for threads. Lower the thread count to 16.
........
2009-01-18 17:02:37 -04:00
|
|
|
n = 32 #total callbacks
|
2009-01-12 22:11:23 -04:00
|
|
|
threads = []
|
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68547 | kristjan.jonsson | 2009-01-12 12:09:27 -0600 (Mon, 12 Jan 2009) | 1 line
Add tests for invalid format specifiers in strftime, and for handling of invalid file descriptors in the os module.
........
r68607 | kristjan.jonsson | 2009-01-14 04:50:57 -0600 (Wed, 14 Jan 2009) | 2 lines
Re-enable all tests for windows platforms.
Also, explicitly connect to the IPV4 address. On windows platforms supporting AF_INET6, the SocketProxy would connect using socket.create_connection('localhost', port) which would cycle through all address families and try to connect. It would try connecting using AF_INET6 first and this would cause a delay of up to a second.
........
r68610 | kristjan.jonsson | 2009-01-15 03:09:13 -0600 (Thu, 15 Jan 2009) | 3 lines
Fix recently introduced test cases.
For datetime, gentoo didn't seem to mind the %e format for strftime. So, we just excercise those instead making sure that we don't crash.
For test_os, two cases were incorrect.
........
r68618 | kristjan.jonsson | 2009-01-15 11:20:21 -0600 (Thu, 15 Jan 2009) | 1 line
Issue 4929: Handle socket errors when receiving
........
r68621 | kristjan.jonsson | 2009-01-15 16:40:03 -0600 (Thu, 15 Jan 2009) | 1 line
Fix two test cases in test_os. ftruncate raises IOError unlike all the others which raise OSError. And close() on some platforms doesn't complain when given an invalid file descriptor.
........
r68622 | kristjan.jonsson | 2009-01-15 16:46:26 -0600 (Thu, 15 Jan 2009) | 1 line
Make all the invalid fd tests for os subject to the function being available.
........
r68649 | benjamin.peterson | 2009-01-16 22:39:05 -0600 (Fri, 16 Jan 2009) | 1 line
trying to find some fpathconf() settings that all unixs support...
........
r68722 | kristjan.jonsson | 2009-01-18 04:58:44 -0600 (Sun, 18 Jan 2009) | 1 line
issue 4293: make test_capi.py more robutst, it times out on some platforms, presumably waiting for threads. Lower the thread count to 16.
........
2009-01-18 17:02:37 -04:00
|
|
|
class foo(object):pass
|
|
|
|
context = foo()
|
|
|
|
context.l = []
|
|
|
|
context.n = 2 #submits per thread
|
|
|
|
context.nThreads = n // context.n
|
|
|
|
context.nFinished = 0
|
|
|
|
context.lock = threading.Lock()
|
|
|
|
context.event = threading.Event()
|
|
|
|
|
|
|
|
for i in range(context.nThreads):
|
|
|
|
t = threading.Thread(target=self.pendingcalls_thread, args = (context,))
|
2009-01-12 22:11:23 -04:00
|
|
|
t.start()
|
|
|
|
threads.append(t)
|
|
|
|
|
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68547 | kristjan.jonsson | 2009-01-12 12:09:27 -0600 (Mon, 12 Jan 2009) | 1 line
Add tests for invalid format specifiers in strftime, and for handling of invalid file descriptors in the os module.
........
r68607 | kristjan.jonsson | 2009-01-14 04:50:57 -0600 (Wed, 14 Jan 2009) | 2 lines
Re-enable all tests for windows platforms.
Also, explicitly connect to the IPV4 address. On windows platforms supporting AF_INET6, the SocketProxy would connect using socket.create_connection('localhost', port) which would cycle through all address families and try to connect. It would try connecting using AF_INET6 first and this would cause a delay of up to a second.
........
r68610 | kristjan.jonsson | 2009-01-15 03:09:13 -0600 (Thu, 15 Jan 2009) | 3 lines
Fix recently introduced test cases.
For datetime, gentoo didn't seem to mind the %e format for strftime. So, we just excercise those instead making sure that we don't crash.
For test_os, two cases were incorrect.
........
r68618 | kristjan.jonsson | 2009-01-15 11:20:21 -0600 (Thu, 15 Jan 2009) | 1 line
Issue 4929: Handle socket errors when receiving
........
r68621 | kristjan.jonsson | 2009-01-15 16:40:03 -0600 (Thu, 15 Jan 2009) | 1 line
Fix two test cases in test_os. ftruncate raises IOError unlike all the others which raise OSError. And close() on some platforms doesn't complain when given an invalid file descriptor.
........
r68622 | kristjan.jonsson | 2009-01-15 16:46:26 -0600 (Thu, 15 Jan 2009) | 1 line
Make all the invalid fd tests for os subject to the function being available.
........
r68649 | benjamin.peterson | 2009-01-16 22:39:05 -0600 (Fri, 16 Jan 2009) | 1 line
trying to find some fpathconf() settings that all unixs support...
........
r68722 | kristjan.jonsson | 2009-01-18 04:58:44 -0600 (Sun, 18 Jan 2009) | 1 line
issue 4293: make test_capi.py more robutst, it times out on some platforms, presumably waiting for threads. Lower the thread count to 16.
........
2009-01-18 17:02:37 -04:00
|
|
|
self.pendingcalls_wait(context.l, n, context)
|
2009-01-12 22:11:23 -04:00
|
|
|
|
|
|
|
for t in threads:
|
|
|
|
t.join()
|
|
|
|
|
Merged revisions 68547,68607,68610,68618,68621-68622,68649,68722 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68547 | kristjan.jonsson | 2009-01-12 12:09:27 -0600 (Mon, 12 Jan 2009) | 1 line
Add tests for invalid format specifiers in strftime, and for handling of invalid file descriptors in the os module.
........
r68607 | kristjan.jonsson | 2009-01-14 04:50:57 -0600 (Wed, 14 Jan 2009) | 2 lines
Re-enable all tests for windows platforms.
Also, explicitly connect to the IPV4 address. On windows platforms supporting AF_INET6, the SocketProxy would connect using socket.create_connection('localhost', port) which would cycle through all address families and try to connect. It would try connecting using AF_INET6 first and this would cause a delay of up to a second.
........
r68610 | kristjan.jonsson | 2009-01-15 03:09:13 -0600 (Thu, 15 Jan 2009) | 3 lines
Fix recently introduced test cases.
For datetime, gentoo didn't seem to mind the %e format for strftime. So, we just excercise those instead making sure that we don't crash.
For test_os, two cases were incorrect.
........
r68618 | kristjan.jonsson | 2009-01-15 11:20:21 -0600 (Thu, 15 Jan 2009) | 1 line
Issue 4929: Handle socket errors when receiving
........
r68621 | kristjan.jonsson | 2009-01-15 16:40:03 -0600 (Thu, 15 Jan 2009) | 1 line
Fix two test cases in test_os. ftruncate raises IOError unlike all the others which raise OSError. And close() on some platforms doesn't complain when given an invalid file descriptor.
........
r68622 | kristjan.jonsson | 2009-01-15 16:46:26 -0600 (Thu, 15 Jan 2009) | 1 line
Make all the invalid fd tests for os subject to the function being available.
........
r68649 | benjamin.peterson | 2009-01-16 22:39:05 -0600 (Fri, 16 Jan 2009) | 1 line
trying to find some fpathconf() settings that all unixs support...
........
r68722 | kristjan.jonsson | 2009-01-18 04:58:44 -0600 (Sun, 18 Jan 2009) | 1 line
issue 4293: make test_capi.py more robutst, it times out on some platforms, presumably waiting for threads. Lower the thread count to 16.
........
2009-01-18 17:02:37 -04:00
|
|
|
def pendingcalls_thread(self, context):
|
|
|
|
try:
|
|
|
|
self.pendingcalls_submit(context.l, context.n)
|
|
|
|
finally:
|
|
|
|
with context.lock:
|
|
|
|
context.nFinished += 1
|
|
|
|
nFinished = context.nFinished
|
|
|
|
if False and support.verbose:
|
|
|
|
print("finished threads: ", nFinished)
|
|
|
|
if nFinished == context.nThreads:
|
|
|
|
context.event.set()
|
|
|
|
|
2009-01-12 22:11:23 -04:00
|
|
|
def test_pendingcalls_non_threaded(self):
|
2011-03-16 06:05:33 -03:00
|
|
|
#again, just using the main thread, likely they will all be dispatched at
|
2009-01-12 22:11:23 -04:00
|
|
|
#once. It is ok to ask for too many, because we loop until we find a slot.
|
|
|
|
#the loop can be interrupted to dispatch.
|
|
|
|
#there are only 32 dispatch slots, so we go for twice that!
|
|
|
|
l = []
|
|
|
|
n = 64
|
|
|
|
self.pendingcalls_submit(l, n)
|
|
|
|
self.pendingcalls_wait(l, n)
|
|
|
|
|
2012-01-17 19:21:11 -04:00
|
|
|
def test_subinterps(self):
|
|
|
|
# XXX this test leaks in refleak runs
|
|
|
|
import builtins
|
|
|
|
r, w = os.pipe()
|
|
|
|
code = """if 1:
|
|
|
|
import sys, builtins, pickle
|
|
|
|
with open({:d}, "wb") as f:
|
|
|
|
pickle.dump(id(sys.modules), f)
|
|
|
|
pickle.dump(id(builtins), f)
|
|
|
|
""".format(w)
|
|
|
|
with open(r, "rb") as f:
|
|
|
|
ret = _testcapi.run_in_subinterp(code)
|
|
|
|
self.assertEqual(ret, 0)
|
|
|
|
self.assertNotEqual(pickle.load(f), id(sys.modules))
|
|
|
|
self.assertNotEqual(pickle.load(f), id(builtins))
|
|
|
|
|
2009-05-29 11:47:46 -03:00
|
|
|
# Bug #6012
|
|
|
|
class Test6012(unittest.TestCase):
|
|
|
|
def test(self):
|
|
|
|
self.assertEqual(_testcapi.argparsing("Hello", "World"), 1)
|
2009-01-12 22:11:23 -04:00
|
|
|
|
2011-04-25 16:21:07 -03:00
|
|
|
|
|
|
|
class EmbeddingTest(unittest.TestCase):
|
|
|
|
|
2011-06-30 15:02:54 -03:00
|
|
|
@unittest.skipIf(
|
|
|
|
sys.platform.startswith('win'),
|
|
|
|
"test doesn't work under Windows")
|
2011-04-25 16:21:07 -03:00
|
|
|
def test_subinterps(self):
|
|
|
|
# XXX only tested under Unix checkouts
|
|
|
|
basepath = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
|
|
|
|
oldcwd = os.getcwd()
|
|
|
|
# This is needed otherwise we get a fatal error:
|
|
|
|
# "Py_Initialize: Unable to get the locale encoding
|
|
|
|
# LookupError: no codec search functions registered: can't find encoding"
|
|
|
|
os.chdir(basepath)
|
|
|
|
try:
|
|
|
|
exe = os.path.join(basepath, "Modules", "_testembed")
|
|
|
|
if not os.path.exists(exe):
|
|
|
|
self.skipTest("%r doesn't exist" % exe)
|
|
|
|
p = subprocess.Popen([exe],
|
|
|
|
stdout=subprocess.PIPE,
|
|
|
|
stderr=subprocess.PIPE)
|
|
|
|
(out, err) = p.communicate()
|
|
|
|
self.assertEqual(p.returncode, 0,
|
|
|
|
"bad returncode %d, stderr is %r" %
|
|
|
|
(p.returncode, err))
|
|
|
|
if support.verbose:
|
|
|
|
print()
|
|
|
|
print(out.decode('latin1'))
|
|
|
|
print(err.decode('latin1'))
|
|
|
|
finally:
|
|
|
|
os.chdir(oldcwd)
|
|
|
|
|
2012-06-22 07:56:29 -03:00
|
|
|
class SkipitemTest(unittest.TestCase):
|
|
|
|
|
|
|
|
def test_skipitem(self):
|
|
|
|
"""
|
|
|
|
If this test failed, you probably added a new "format unit"
|
|
|
|
in Python/getargs.c, but neglected to update our poor friend
|
|
|
|
skipitem() in the same file. (If so, shame on you!)
|
|
|
|
|
2012-06-22 16:58:36 -03:00
|
|
|
With a few exceptions**, this function brute-force tests all
|
|
|
|
printable ASCII*** characters (32 to 126 inclusive) as format units,
|
|
|
|
checking to see that PyArg_ParseTupleAndKeywords() return consistent
|
|
|
|
errors both when the unit is attempted to be used and when it is
|
|
|
|
skipped. If the format unit doesn't exist, we'll get one of two
|
|
|
|
specific error messages (one for used, one for skipped); if it does
|
|
|
|
exist we *won't* get that error--we'll get either no error or some
|
|
|
|
other error. If we get the specific "does not exist" error for one
|
|
|
|
test and not for the other, there's a mismatch, and the test fails.
|
|
|
|
|
|
|
|
** Some format units have special funny semantics and it would
|
|
|
|
be difficult to accomodate them here. Since these are all
|
|
|
|
well-established and properly skipped in skipitem() we can
|
|
|
|
get away with not testing them--this test is really intended
|
|
|
|
to catch *new* format units.
|
|
|
|
|
|
|
|
*** Python C source files must be ASCII. Therefore it's impossible
|
|
|
|
to have non-ASCII format units.
|
|
|
|
|
2012-06-22 07:56:29 -03:00
|
|
|
"""
|
|
|
|
empty_tuple = ()
|
|
|
|
tuple_1 = (0,)
|
|
|
|
dict_b = {'b':1}
|
|
|
|
keywords = ["a", "b"]
|
|
|
|
|
2012-06-22 16:58:36 -03:00
|
|
|
for i in range(32, 127):
|
2012-06-22 07:56:29 -03:00
|
|
|
c = chr(i)
|
|
|
|
|
|
|
|
# skip parentheses, the error reporting is inconsistent about them
|
|
|
|
# skip 'e', it's always a two-character code
|
|
|
|
# skip '|' and '$', they don't represent arguments anyway
|
2012-06-22 16:58:36 -03:00
|
|
|
if c in '()e|$':
|
2012-06-22 07:56:29 -03:00
|
|
|
continue
|
|
|
|
|
|
|
|
# test the format unit when not skipped
|
|
|
|
format = c + "i"
|
|
|
|
try:
|
|
|
|
# (note: the format string must be bytes!)
|
|
|
|
_testcapi.parse_tuple_and_keywords(tuple_1, dict_b,
|
|
|
|
format.encode("ascii"), keywords)
|
|
|
|
when_not_skipped = False
|
|
|
|
except TypeError as e:
|
|
|
|
s = "argument 1 must be impossible<bad format char>, not int"
|
|
|
|
when_not_skipped = (str(e) == s)
|
|
|
|
except RuntimeError as e:
|
|
|
|
when_not_skipped = False
|
|
|
|
|
|
|
|
# test the format unit when skipped
|
|
|
|
optional_format = "|" + format
|
|
|
|
try:
|
|
|
|
_testcapi.parse_tuple_and_keywords(empty_tuple, dict_b,
|
|
|
|
optional_format.encode("ascii"), keywords)
|
|
|
|
when_skipped = False
|
|
|
|
except RuntimeError as e:
|
|
|
|
s = "impossible<bad format char>: '{}'".format(format)
|
|
|
|
when_skipped = (str(e) == s)
|
|
|
|
|
|
|
|
message = ("test_skipitem_parity: "
|
|
|
|
"detected mismatch between convertsimple and skipitem "
|
|
|
|
"for format unit '{}' ({}), not skipped {}, skipped {}".format(
|
|
|
|
c, i, when_skipped, when_not_skipped))
|
|
|
|
self.assertIs(when_skipped, when_not_skipped, message)
|
2011-04-25 16:21:07 -03:00
|
|
|
|
2006-04-21 07:40:58 -03:00
|
|
|
def test_main():
|
2012-06-22 07:56:29 -03:00
|
|
|
support.run_unittest(CAPITest, TestPendingCalls,
|
|
|
|
Test6012, EmbeddingTest, SkipitemTest)
|
2006-04-21 07:40:58 -03:00
|
|
|
|
|
|
|
for name in dir(_testcapi):
|
|
|
|
if name.startswith('test_'):
|
|
|
|
test = getattr(_testcapi, name)
|
2008-05-20 18:35:26 -03:00
|
|
|
if support.verbose:
|
2007-02-09 01:37:30 -04:00
|
|
|
print("internal", name)
|
2007-08-29 20:37:32 -03:00
|
|
|
test()
|
2006-04-21 07:40:58 -03:00
|
|
|
|
|
|
|
# some extra thread-state tests driven via _testcapi
|
|
|
|
def TestThreadState():
|
2008-05-20 18:35:26 -03:00
|
|
|
if support.verbose:
|
2007-02-09 01:37:30 -04:00
|
|
|
print("auto-thread-state")
|
2006-04-21 07:40:58 -03:00
|
|
|
|
|
|
|
idents = []
|
|
|
|
|
|
|
|
def callback():
|
2011-05-30 18:02:52 -03:00
|
|
|
idents.append(threading.get_ident())
|
2006-04-21 07:40:58 -03:00
|
|
|
|
|
|
|
_testcapi._test_thread_state(callback)
|
|
|
|
a = b = callback
|
|
|
|
time.sleep(1)
|
|
|
|
# Check our main thread is in the list exactly 3 times.
|
2011-05-30 18:02:52 -03:00
|
|
|
if idents.count(threading.get_ident()) != 3:
|
2008-05-20 18:35:26 -03:00
|
|
|
raise support.TestFailed(
|
2007-08-29 20:37:32 -03:00
|
|
|
"Couldn't find main thread correctly in the list")
|
2006-04-21 07:40:58 -03:00
|
|
|
|
Merged revisions 80552-80556,80564-80566,80568-80571 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r80552 | victor.stinner | 2010-04-27 23:46:03 +0200 (mar., 27 avril 2010) | 3 lines
Issue #7449, part 1: fix test_support.py for Python compiled without thread
........
r80553 | victor.stinner | 2010-04-27 23:47:01 +0200 (mar., 27 avril 2010) | 1 line
Issue #7449, part 2: regrtest.py -j option requires thread support
........
r80554 | victor.stinner | 2010-04-27 23:51:26 +0200 (mar., 27 avril 2010) | 9 lines
Issue #7449 part 3, test_doctest: import trace module in test_coverage()
Import trace module fail if the threading module is missing. test_coverage() is
only used if test_doctest.py is used with the -c option. This commit allows to
execute the test suite without thread support.
Move "import trace" in test_coverage() and use
test_support.import_module('trace').
........
r80555 | victor.stinner | 2010-04-27 23:56:26 +0200 (mar., 27 avril 2010) | 6 lines
Issue #7449, part 4: skip test_multiprocessing if thread support is disabled
import threading after _multiprocessing to raise a more revelant error message:
"No module named _multiprocessing". _multiprocessing is not compiled without
thread support.
........
r80556 | victor.stinner | 2010-04-28 00:01:24 +0200 (mer., 28 avril 2010) | 8 lines
Issue #7449, part 5: split Test.test_open() of ctypes/test/test_errno.py
* Split Test.test_open() in 2 functions: test_open() and test_thread_open()
* Skip test_open() and test_thread_open() if we are unable to find the C
library
* Skip test_thread_open() if thread support is disabled
* Use unittest.skipUnless(os.name == "nt", ...) on test_GetLastError()
........
r80564 | victor.stinner | 2010-04-28 00:59:35 +0200 (mer., 28 avril 2010) | 4 lines
Issue #7449, part 6: fix test_hashlib for missing threading module
Move @test_support.reap_thread decorator from test_main() to test_threaded_hashing().
........
r80565 | victor.stinner | 2010-04-28 01:01:29 +0200 (mer., 28 avril 2010) | 6 lines
Issue #7449, part 7: simplify threading detection in test_capi
* Skip TestPendingCalls if threading module is missing
* Test if threading module is present or not, instead of test the presence of
_testcapi._test_thread_state
........
r80566 | victor.stinner | 2010-04-28 01:03:16 +0200 (mer., 28 avril 2010) | 4 lines
Issue #7449, part 8: don't skip the whole test_asynchat if threading is missing
TestFifo can be executed without the threading module
........
r80568 | victor.stinner | 2010-04-28 01:14:58 +0200 (mer., 28 avril 2010) | 6 lines
Issue #7449, part 9: fix test_xmlrpclib for missing threading module
* Skip testcases using threads if threading module is missing
* Use "http://" instead of URL in ServerProxyTestCase if threading is missing
because URL is not set in this case
........
r80569 | victor.stinner | 2010-04-28 01:33:58 +0200 (mer., 28 avril 2010) | 6 lines
Partial revert of r80556 (Issue #7449, part 5, fix ctypes test)
Rewrite r80556: the thread test have to be executed just after the test on
libc_open() and so the test cannot be splitted in two functions (without
duplicating code, and I don't want to duplicate code).
........
r80570 | victor.stinner | 2010-04-28 01:51:16 +0200 (mer., 28 avril 2010) | 8 lines
Issue #7449, part 10: test_cmd imports trace module using test_support.import_module()
Use test_support.import_module() instead of import to raise a SkipTest
exception if the import fail. Import trace fails if the threading module is
missing.
See also part 3: test_doctest: import trace module in test_coverage().
........
r80571 | victor.stinner | 2010-04-28 01:55:59 +0200 (mer., 28 avril 2010) | 6 lines
Issue #7449, last part (11): fix many tests if thread support is disabled
* Use try/except ImportError or test_support.import_module() to import thread
and threading modules
* Add @unittest.skipUnless(threading, ...) to testcases using threads
........
2010-04-28 19:31:17 -03:00
|
|
|
if threading:
|
Merged revisions 62194,62197-62198,62204-62205,62214,62219-62221,62227,62229-62231,62233-62235,62237-62239 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r62194 | jeffrey.yasskin | 2008-04-07 01:04:28 +0200 (Mon, 07 Apr 2008) | 7 lines
Add enough debugging information to diagnose failures where the
HandlerBException is ignored, and fix one such problem, where it was thrown
during the __del__ method of the previous Popen object.
We may want to find a better way of printing verbose information so it's not
spammy when the test passes.
........
r62197 | mark.hammond | 2008-04-07 03:53:39 +0200 (Mon, 07 Apr 2008) | 2 lines
Issue #2513: enable 64bit cross compilation on windows.
........
r62198 | mark.hammond | 2008-04-07 03:59:40 +0200 (Mon, 07 Apr 2008) | 2 lines
correct heading underline for new "Cross-compiling on Windows" section
........
r62204 | gregory.p.smith | 2008-04-07 08:33:21 +0200 (Mon, 07 Apr 2008) | 4 lines
Use the new PyFile_IncUseCount & PyFile_DecUseCount calls appropriatly
within the standard library. These modules use PyFile_AsFile and later
release the GIL while operating on the previously returned FILE*.
........
r62205 | mark.summerfield | 2008-04-07 09:39:23 +0200 (Mon, 07 Apr 2008) | 4 lines
changed "2500 components" to "several thousand" since the number keeps
growning:-)
........
r62214 | georg.brandl | 2008-04-07 20:51:59 +0200 (Mon, 07 Apr 2008) | 2 lines
#2525: update timezone info examples in the docs.
........
r62219 | andrew.kuchling | 2008-04-08 01:57:07 +0200 (Tue, 08 Apr 2008) | 1 line
Write PEP 3127 section; add items
........
r62220 | andrew.kuchling | 2008-04-08 01:57:21 +0200 (Tue, 08 Apr 2008) | 1 line
Typo fix
........
r62221 | andrew.kuchling | 2008-04-08 03:33:10 +0200 (Tue, 08 Apr 2008) | 1 line
Typographical fix: 32bit -> 32-bit, 64bit -> 64-bit
........
r62227 | andrew.kuchling | 2008-04-08 23:22:53 +0200 (Tue, 08 Apr 2008) | 1 line
Add items
........
r62229 | amaury.forgeotdarc | 2008-04-08 23:27:42 +0200 (Tue, 08 Apr 2008) | 7 lines
Issue2564: Prevent a hang in "import test.autotest", which runs the entire test
suite as a side-effect of importing the module.
- in test_capi, a thread tried to import other modules
- re.compile() imported sre_parse again on every call.
........
r62230 | amaury.forgeotdarc | 2008-04-08 23:51:57 +0200 (Tue, 08 Apr 2008) | 2 lines
Prevent an error when inspect.isabstract() is called with something else than a new-style class.
........
r62231 | amaury.forgeotdarc | 2008-04-09 00:07:05 +0200 (Wed, 09 Apr 2008) | 8 lines
Issue 2408: remove the _types module
It was only used as a helper in types.py to access types (GetSetDescriptorType and MemberDescriptorType),
when they can easily be obtained with python code.
These expressions even work with Jython.
I don't know what the future of the types module is; (cf. discussion in http://bugs.python.org/issue1605 )
at least this change makes it simpler.
........
r62233 | amaury.forgeotdarc | 2008-04-09 01:10:07 +0200 (Wed, 09 Apr 2008) | 2 lines
Add a NEWS entry for previous checkin
........
r62234 | trent.nelson | 2008-04-09 01:47:30 +0200 (Wed, 09 Apr 2008) | 37 lines
- Issue #2550: The approach used by client/server code for obtaining ports
to listen on in network-oriented tests has been refined in an effort to
facilitate running multiple instances of the entire regression test suite
in parallel without issue. test_support.bind_port() has been fixed such
that it will always return a unique port -- which wasn't always the case
with the previous implementation, especially if socket options had been
set that affected address reuse (i.e. SO_REUSEADDR, SO_REUSEPORT). The
new implementation of bind_port() will actually raise an exception if it
is passed an AF_INET/SOCK_STREAM socket with either the SO_REUSEADDR or
SO_REUSEPORT socket option set. Furthermore, if available, bind_port()
will set the SO_EXCLUSIVEADDRUSE option on the socket it's been passed.
This currently only applies to Windows. This option prevents any other
sockets from binding to the host/port we've bound to, thus removing the
possibility of the 'non-deterministic' behaviour, as Microsoft puts it,
that occurs when a second SOCK_STREAM socket binds and accepts to a
host/port that's already been bound by another socket. The optional
preferred port parameter to bind_port() has been removed. Under no
circumstances should tests be hard coding ports!
test_support.find_unused_port() has also been introduced, which will pass
a temporary socket object to bind_port() in order to obtain an unused port.
The temporary socket object is then closed and deleted, and the port is
returned. This method should only be used for obtaining an unused port
in order to pass to an external program (i.e. the -accept [port] argument
to openssl's s_server mode) or as a parameter to a server-oriented class
that doesn't give you direct access to the underlying socket used.
Finally, test_support.HOST has been introduced, which should be used for
the host argument of any relevant socket calls (i.e. bind and connect).
The following tests were updated to following the new conventions:
test_socket, test_smtplib, test_asyncore, test_ssl, test_httplib,
test_poplib, test_ftplib, test_telnetlib, test_socketserver,
test_asynchat and test_socket_ssl.
It is now possible for multiple instances of the regression test suite to
run in parallel without issue.
........
r62235 | gregory.p.smith | 2008-04-09 02:25:17 +0200 (Wed, 09 Apr 2008) | 3 lines
Fix zlib crash from zlib.decompressobj().flush(val) when val was not positive.
It tried to allocate negative or zero memory. That fails.
........
r62237 | trent.nelson | 2008-04-09 02:34:53 +0200 (Wed, 09 Apr 2008) | 1 line
Fix typo with regards to self.PORT shadowing class variables with the same name.
........
r62238 | andrew.kuchling | 2008-04-09 03:08:32 +0200 (Wed, 09 Apr 2008) | 1 line
Add items
........
r62239 | jerry.seutter | 2008-04-09 07:07:58 +0200 (Wed, 09 Apr 2008) | 1 line
Changed test so it no longer runs as a side effect of importing.
........
2008-04-09 05:37:03 -03:00
|
|
|
import time
|
2006-04-21 07:40:58 -03:00
|
|
|
TestThreadState()
|
2008-05-25 10:05:15 -03:00
|
|
|
t = threading.Thread(target=TestThreadState)
|
2006-04-21 07:40:58 -03:00
|
|
|
t.start()
|
|
|
|
t.join()
|
|
|
|
|
2008-10-16 20:56:29 -03:00
|
|
|
|
2006-04-21 07:40:58 -03:00
|
|
|
if __name__ == "__main__":
|
|
|
|
test_main()
|