2021-04-21 14:20:44 -03:00
|
|
|
import enum
|
2019-01-08 05:58:25 -04:00
|
|
|
import errno
|
2023-12-23 21:07:52 -04:00
|
|
|
import functools
|
2021-12-13 05:21:55 -04:00
|
|
|
import inspect
|
2017-03-27 11:05:26 -03:00
|
|
|
import os
|
2017-06-28 18:29:29 -03:00
|
|
|
import random
|
1995-03-16 11:07:38 -04:00
|
|
|
import signal
|
2014-07-29 18:31:34 -03:00
|
|
|
import socket
|
2017-06-29 11:40:14 -03:00
|
|
|
import statistics
|
Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61687 | jeffrey.yasskin | 2008-03-21 06:02:44 +0100 (Fri, 21 Mar 2008) | 2 lines
Speed up test_signal from ~24s to 4s by avoiding nearly all of the sleep calls.
........
r61688 | jeffrey.yasskin | 2008-03-21 06:51:37 +0100 (Fri, 21 Mar 2008) | 5 lines
Try to fix test_signal breakages on Linux due to r61687. It appears that at
least two of the linux build bots aren't leaving zombie processes around for
os.waitpid to wait for, causing ECHILD errors. This would be a symptom of a bug
somewhere, but probably not in signal itself.
........
r61696 | georg.brandl | 2008-03-21 15:32:33 +0100 (Fri, 21 Mar 2008) | 2 lines
Mark the descitems in the tutorial as "noindex" so that :meth: cross-refs don't link to them.
........
r61700 | georg.brandl | 2008-03-21 18:19:29 +0100 (Fri, 21 Mar 2008) | 2 lines
Fix markup.
........
r61704 | jeffrey.yasskin | 2008-03-21 19:25:06 +0100 (Fri, 21 Mar 2008) | 3 lines
Try to fix test_signal on FreeBSD. I'm assuming that os.kill is failing to
raise a signal, but switching to subprocess makes the code cleaner anyway.
........
r61705 | jeffrey.yasskin | 2008-03-21 19:48:04 +0100 (Fri, 21 Mar 2008) | 7 lines
Speed test_threading up from 14s to .5s, and avoid a deadlock on certain
failures. The test for enumerate-after-join is now a little less rigorous, but
the bug it references says the error happened in the first couple iterations,
so 100 iterations should still be enough.
cProfile was useful for identifying the slow tests here.
........
r61707 | georg.brandl | 2008-03-21 20:14:38 +0100 (Fri, 21 Mar 2008) | 2 lines
Fix a code block in __future__ docs.
........
r61708 | georg.brandl | 2008-03-21 20:20:21 +0100 (Fri, 21 Mar 2008) | 2 lines
Add docs for __func__ and __self__ on methods.
........
r61709 | georg.brandl | 2008-03-21 20:37:57 +0100 (Fri, 21 Mar 2008) | 2 lines
Add docs for print_function and future_builtins. Fixes #2442.
........
r61711 | georg.brandl | 2008-03-21 20:54:00 +0100 (Fri, 21 Mar 2008) | 2 lines
#2136: allow single quotes in realm spec.
........
r61712 | georg.brandl | 2008-03-21 21:01:51 +0100 (Fri, 21 Mar 2008) | 3 lines
Issue #2432: give DictReader the dialect and line_num attributes
advertised in the docs.
........
r61714 | georg.brandl | 2008-03-21 21:11:46 +0100 (Fri, 21 Mar 2008) | 2 lines
#2358: add py3k warning to sys.exc_clear().
........
r61715 | georg.brandl | 2008-03-21 21:21:46 +0100 (Fri, 21 Mar 2008) | 2 lines
#2346/#2347: add py3k warning for __methods__ and __members__. Patch by Jack Diederich.
........
r61716 | georg.brandl | 2008-03-21 21:38:24 +0100 (Fri, 21 Mar 2008) | 2 lines
#2348: add py3k warning for file.softspace.
........
r61718 | georg.brandl | 2008-03-21 21:55:20 +0100 (Fri, 21 Mar 2008) | 2 lines
#2160: document PyImport_GetImporter.
........
r61719 | georg.brandl | 2008-03-21 21:55:51 +0100 (Fri, 21 Mar 2008) | 2 lines
Update doc ACKS.
........
r61720 | steven.bethard | 2008-03-21 22:01:18 +0100 (Fri, 21 Mar 2008) | 1 line
Replace hack in regrtest.py with use of sys.py3kwarning.
........
r61721 | georg.brandl | 2008-03-21 22:05:03 +0100 (Fri, 21 Mar 2008) | 2 lines
Add missing versionadded tag.
........
r61722 | christian.heimes | 2008-03-22 00:49:44 +0100 (Sat, 22 Mar 2008) | 3 lines
Applied patch #1657 epoll and kqueue wrappers for the select module
The patch adds wrappers for the Linux epoll syscalls and the BSD kqueue syscalls. Thanks to Thomas Herve and the Twisted people for their support and help.
TODO: Finish documentation documentation
........
2008-03-21 21:47:35 -03:00
|
|
|
import subprocess
|
2017-03-27 11:05:26 -03:00
|
|
|
import sys
|
2021-03-05 05:32:50 -04:00
|
|
|
import threading
|
2017-03-27 11:05:26 -03:00
|
|
|
import time
|
|
|
|
import unittest
|
|
|
|
from test import support
|
2024-02-04 20:04:57 -04:00
|
|
|
from test.support import (
|
|
|
|
is_apple, is_apple_mobile, os_helper, threading_helper
|
|
|
|
)
|
2015-05-06 00:33:17 -03:00
|
|
|
from test.support.script_helper import assert_python_ok, spawn_python
|
2014-07-21 07:30:22 -03:00
|
|
|
try:
|
|
|
|
import _testcapi
|
|
|
|
except ImportError:
|
|
|
|
_testcapi = None
|
Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61097,61103-61104,61110-61113 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61113 | christian.heimes | 2008-02-28 22:00:45 +0100 (Thu, 28 Feb 2008) | 2 lines
Windows fix for signal test - skip it earlier
........
2008-02-28 17:17:00 -04:00
|
|
|
|
1997-04-15 21:29:15 -03:00
|
|
|
|
2014-04-04 10:34:17 -03:00
|
|
|
class GenericTests(unittest.TestCase):
|
|
|
|
|
|
|
|
def test_enums(self):
|
|
|
|
for name in dir(signal):
|
|
|
|
sig = getattr(signal, name)
|
|
|
|
if name in {'SIG_DFL', 'SIG_IGN'}:
|
|
|
|
self.assertIsInstance(sig, signal.Handlers)
|
|
|
|
elif name in {'SIG_BLOCK', 'SIG_UNBLOCK', 'SIG_SETMASK'}:
|
|
|
|
self.assertIsInstance(sig, signal.Sigmasks)
|
|
|
|
elif name.startswith('SIG') and not name.startswith('SIG_'):
|
|
|
|
self.assertIsInstance(sig, signal.Signals)
|
|
|
|
elif name.startswith('CTRL_'):
|
|
|
|
self.assertIsInstance(sig, signal.Signals)
|
|
|
|
self.assertEqual(sys.platform, "win32")
|
|
|
|
|
2021-04-21 14:20:44 -03:00
|
|
|
CheckedSignals = enum._old_convert_(
|
|
|
|
enum.IntEnum, 'Signals', 'signal',
|
|
|
|
lambda name:
|
|
|
|
name.isupper()
|
|
|
|
and (name.startswith('SIG') and not name.startswith('SIG_'))
|
|
|
|
or name.startswith('CTRL_'),
|
|
|
|
source=signal,
|
|
|
|
)
|
|
|
|
enum._test_simple_enum(CheckedSignals, signal.Signals)
|
|
|
|
|
|
|
|
CheckedHandlers = enum._old_convert_(
|
|
|
|
enum.IntEnum, 'Handlers', 'signal',
|
|
|
|
lambda name: name in ('SIG_DFL', 'SIG_IGN'),
|
|
|
|
source=signal,
|
|
|
|
)
|
|
|
|
enum._test_simple_enum(CheckedHandlers, signal.Handlers)
|
|
|
|
|
|
|
|
Sigmasks = getattr(signal, 'Sigmasks', None)
|
|
|
|
if Sigmasks is not None:
|
|
|
|
CheckedSigmasks = enum._old_convert_(
|
|
|
|
enum.IntEnum, 'Sigmasks', 'signal',
|
|
|
|
lambda name: name in ('SIG_BLOCK', 'SIG_UNBLOCK', 'SIG_SETMASK'),
|
|
|
|
source=signal,
|
|
|
|
)
|
|
|
|
enum._test_simple_enum(CheckedSigmasks, Sigmasks)
|
|
|
|
|
2021-12-13 05:21:55 -04:00
|
|
|
def test_functions_module_attr(self):
|
|
|
|
# Issue #27718: If __all__ is not defined all non-builtin functions
|
|
|
|
# should have correct __module__ to be displayed by pydoc.
|
|
|
|
for name in dir(signal):
|
|
|
|
value = getattr(signal, name)
|
|
|
|
if inspect.isroutine(value) and not inspect.isbuiltin(value):
|
|
|
|
self.assertEqual(value.__module__, 'signal')
|
|
|
|
|
2014-04-04 10:34:17 -03:00
|
|
|
|
2010-08-06 16:34:52 -03:00
|
|
|
@unittest.skipIf(sys.platform == "win32", "Not valid on Windows")
|
2011-05-07 20:46:11 -03:00
|
|
|
class PosixTests(unittest.TestCase):
|
Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61687 | jeffrey.yasskin | 2008-03-21 06:02:44 +0100 (Fri, 21 Mar 2008) | 2 lines
Speed up test_signal from ~24s to 4s by avoiding nearly all of the sleep calls.
........
r61688 | jeffrey.yasskin | 2008-03-21 06:51:37 +0100 (Fri, 21 Mar 2008) | 5 lines
Try to fix test_signal breakages on Linux due to r61687. It appears that at
least two of the linux build bots aren't leaving zombie processes around for
os.waitpid to wait for, causing ECHILD errors. This would be a symptom of a bug
somewhere, but probably not in signal itself.
........
r61696 | georg.brandl | 2008-03-21 15:32:33 +0100 (Fri, 21 Mar 2008) | 2 lines
Mark the descitems in the tutorial as "noindex" so that :meth: cross-refs don't link to them.
........
r61700 | georg.brandl | 2008-03-21 18:19:29 +0100 (Fri, 21 Mar 2008) | 2 lines
Fix markup.
........
r61704 | jeffrey.yasskin | 2008-03-21 19:25:06 +0100 (Fri, 21 Mar 2008) | 3 lines
Try to fix test_signal on FreeBSD. I'm assuming that os.kill is failing to
raise a signal, but switching to subprocess makes the code cleaner anyway.
........
r61705 | jeffrey.yasskin | 2008-03-21 19:48:04 +0100 (Fri, 21 Mar 2008) | 7 lines
Speed test_threading up from 14s to .5s, and avoid a deadlock on certain
failures. The test for enumerate-after-join is now a little less rigorous, but
the bug it references says the error happened in the first couple iterations,
so 100 iterations should still be enough.
cProfile was useful for identifying the slow tests here.
........
r61707 | georg.brandl | 2008-03-21 20:14:38 +0100 (Fri, 21 Mar 2008) | 2 lines
Fix a code block in __future__ docs.
........
r61708 | georg.brandl | 2008-03-21 20:20:21 +0100 (Fri, 21 Mar 2008) | 2 lines
Add docs for __func__ and __self__ on methods.
........
r61709 | georg.brandl | 2008-03-21 20:37:57 +0100 (Fri, 21 Mar 2008) | 2 lines
Add docs for print_function and future_builtins. Fixes #2442.
........
r61711 | georg.brandl | 2008-03-21 20:54:00 +0100 (Fri, 21 Mar 2008) | 2 lines
#2136: allow single quotes in realm spec.
........
r61712 | georg.brandl | 2008-03-21 21:01:51 +0100 (Fri, 21 Mar 2008) | 3 lines
Issue #2432: give DictReader the dialect and line_num attributes
advertised in the docs.
........
r61714 | georg.brandl | 2008-03-21 21:11:46 +0100 (Fri, 21 Mar 2008) | 2 lines
#2358: add py3k warning to sys.exc_clear().
........
r61715 | georg.brandl | 2008-03-21 21:21:46 +0100 (Fri, 21 Mar 2008) | 2 lines
#2346/#2347: add py3k warning for __methods__ and __members__. Patch by Jack Diederich.
........
r61716 | georg.brandl | 2008-03-21 21:38:24 +0100 (Fri, 21 Mar 2008) | 2 lines
#2348: add py3k warning for file.softspace.
........
r61718 | georg.brandl | 2008-03-21 21:55:20 +0100 (Fri, 21 Mar 2008) | 2 lines
#2160: document PyImport_GetImporter.
........
r61719 | georg.brandl | 2008-03-21 21:55:51 +0100 (Fri, 21 Mar 2008) | 2 lines
Update doc ACKS.
........
r61720 | steven.bethard | 2008-03-21 22:01:18 +0100 (Fri, 21 Mar 2008) | 1 line
Replace hack in regrtest.py with use of sys.py3kwarning.
........
r61721 | georg.brandl | 2008-03-21 22:05:03 +0100 (Fri, 21 Mar 2008) | 2 lines
Add missing versionadded tag.
........
r61722 | christian.heimes | 2008-03-22 00:49:44 +0100 (Sat, 22 Mar 2008) | 3 lines
Applied patch #1657 epoll and kqueue wrappers for the select module
The patch adds wrappers for the Linux epoll syscalls and the BSD kqueue syscalls. Thanks to Thomas Herve and the Twisted people for their support and help.
TODO: Finish documentation documentation
........
2008-03-21 21:47:35 -03:00
|
|
|
def trivial_signal_handler(self, *args):
|
|
|
|
pass
|
|
|
|
|
2023-12-23 21:07:52 -04:00
|
|
|
def create_handler_with_partial(self, argument):
|
|
|
|
return functools.partial(self.trivial_signal_handler, argument)
|
|
|
|
|
Merge the trunk changes in. Breaks socket.ssl for now.
Merged revisions 57392-57619 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r57395 | georg.brandl | 2007-08-24 19:23:23 +0200 (Fri, 24 Aug 2007) | 2 lines
Bug #1011: fix rfc822.Message.getheader docs.
........
r57397 | georg.brandl | 2007-08-24 19:38:49 +0200 (Fri, 24 Aug 2007) | 2 lines
Patch #1006: port test_winreg to unittest.
........
r57398 | georg.brandl | 2007-08-24 19:46:54 +0200 (Fri, 24 Aug 2007) | 2 lines
Fix #1012: wrong URL to :mod:`site` in install/index.rst.
........
r57399 | georg.brandl | 2007-08-24 20:07:52 +0200 (Fri, 24 Aug 2007) | 2 lines
Patch #1008: port test_signal to unittest.
........
r57400 | georg.brandl | 2007-08-24 20:22:54 +0200 (Fri, 24 Aug 2007) | 2 lines
Port test_frozen to unittest.
........
r57401 | georg.brandl | 2007-08-24 20:27:43 +0200 (Fri, 24 Aug 2007) | 2 lines
Document new utility functions in test_support.
........
r57402 | georg.brandl | 2007-08-24 20:30:06 +0200 (Fri, 24 Aug 2007) | 2 lines
Remove test_rgbimg output file, there is no test_rgbimg.py.
........
r57403 | georg.brandl | 2007-08-24 20:35:27 +0200 (Fri, 24 Aug 2007) | 2 lines
Remove output file for test_ossaudiodev, also properly close the dsp object.
........
r57404 | georg.brandl | 2007-08-24 20:46:27 +0200 (Fri, 24 Aug 2007) | 2 lines
Convert test_linuxaudiodev to unittest. Fix a wrong finally clause in test_ossaudiodev.
........
r57406 | collin.winter | 2007-08-24 21:13:58 +0200 (Fri, 24 Aug 2007) | 1 line
Convert test_pkg to use unittest.
........
r57408 | georg.brandl | 2007-08-24 21:22:34 +0200 (Fri, 24 Aug 2007) | 2 lines
Catch the correct errors.
........
r57409 | georg.brandl | 2007-08-24 21:33:53 +0200 (Fri, 24 Aug 2007) | 2 lines
Port test_class to unittest. Patch #1671298.
........
r57415 | collin.winter | 2007-08-24 23:09:42 +0200 (Fri, 24 Aug 2007) | 1 line
Make test_structmembers pass when run with regrtests's -R flag.
........
r57455 | nick.coghlan | 2007-08-25 06:32:07 +0200 (Sat, 25 Aug 2007) | 1 line
Revert misguided attempt at fixing incompatibility between -m and -i switches (better fix coming soon)
........
r57456 | nick.coghlan | 2007-08-25 06:35:54 +0200 (Sat, 25 Aug 2007) | 1 line
Revert compile.c changes that shouldn't have been included in previous checkin
........
r57461 | nick.coghlan | 2007-08-25 12:50:41 +0200 (Sat, 25 Aug 2007) | 1 line
Fix bug 1764407 - the -i switch now does the right thing when using the -m switch
........
r57464 | guido.van.rossum | 2007-08-25 17:08:43 +0200 (Sat, 25 Aug 2007) | 4 lines
Server-side SSL and certificate validation, by Bill Janssen.
While cleaning up Bill's C style, I may have cleaned up some code
he didn't touch as well (in _ssl.c).
........
r57465 | neal.norwitz | 2007-08-25 18:41:36 +0200 (Sat, 25 Aug 2007) | 3 lines
Try to get this to build with Visual Studio by moving all the variable
declarations to the beginning of a scope.
........
r57466 | neal.norwitz | 2007-08-25 18:54:38 +0200 (Sat, 25 Aug 2007) | 1 line
Fix test so it is skipped properly if there is no SSL support.
........
r57467 | neal.norwitz | 2007-08-25 18:58:09 +0200 (Sat, 25 Aug 2007) | 2 lines
Fix a few more variables to try to get this to compile with Visual Studio.
........
r57473 | neal.norwitz | 2007-08-25 19:25:17 +0200 (Sat, 25 Aug 2007) | 1 line
Try to get this test to pass for systems that do not have SO_REUSEPORT
........
r57482 | gregory.p.smith | 2007-08-26 02:26:00 +0200 (Sun, 26 Aug 2007) | 7 lines
keep setup.py from listing unneeded hash modules (_md5, _sha*) as
missing when they were not built because _hashlib with openssl provided
their functionality instead.
don't build bsddb185 if bsddb was built.
........
r57483 | neal.norwitz | 2007-08-26 03:08:16 +0200 (Sun, 26 Aug 2007) | 1 line
Fix typo in docstring (missing c in reacquire)
........
r57484 | neal.norwitz | 2007-08-26 03:42:03 +0200 (Sun, 26 Aug 2007) | 2 lines
Spell check (also americanify behaviour, it's almost 3 times as common)
........
r57503 | neal.norwitz | 2007-08-26 08:29:57 +0200 (Sun, 26 Aug 2007) | 4 lines
Reap children before the test starts so hopefully SocketServer
won't find any old children left around which causes an exception
in collect_children() and the test to fail.
........
r57510 | neal.norwitz | 2007-08-26 20:50:39 +0200 (Sun, 26 Aug 2007) | 1 line
Fail gracefully if the cert files cannot be created
........
r57513 | guido.van.rossum | 2007-08-26 21:35:09 +0200 (Sun, 26 Aug 2007) | 4 lines
Bill Janssen wrote:
Here's a patch which makes test_ssl a better player in the buildbots
environment. I deep-ended on "try-except-else" clauses.
........
r57518 | neal.norwitz | 2007-08-26 23:40:16 +0200 (Sun, 26 Aug 2007) | 1 line
Get the test passing by commenting out some writes (should they be removed?)
........
r57522 | neal.norwitz | 2007-08-27 00:16:23 +0200 (Mon, 27 Aug 2007) | 3 lines
Catch IOError for when the device file doesn't exist or the user doesn't have
permission to write to the device.
........
r57524 | neal.norwitz | 2007-08-27 00:20:03 +0200 (Mon, 27 Aug 2007) | 5 lines
Another patch from Bill Janssen that:
1) Fixes the bug that two class names are initial-lower-case.
2) Replaces the poll waiting for the server to become ready with
a threading.Event signal.
........
r57536 | neal.norwitz | 2007-08-27 02:58:33 +0200 (Mon, 27 Aug 2007) | 1 line
Stop using string.join (from the module) to ease upgrade to py3k
........
r57537 | neal.norwitz | 2007-08-27 03:03:18 +0200 (Mon, 27 Aug 2007) | 1 line
Make a utility function for handling (printing) an error
........
r57538 | neal.norwitz | 2007-08-27 03:15:33 +0200 (Mon, 27 Aug 2007) | 4 lines
If we can't create a certificate, print a warning, but don't fail the test.
Modified patch from what Bill Janssen sent on python-3000.
........
r57539 | facundo.batista | 2007-08-27 03:15:34 +0200 (Mon, 27 Aug 2007) | 7 lines
Ignore test failures caused by 'resource temporarily unavailable'
exceptions raised in the test server thread, since SimpleXMLRPCServer
does not gracefully handle them. Changed number of requests handled
by tests server thread to one (was 2) because no tests require more
than one request. [GSoC - Alan McIntyre]
........
r57561 | guido.van.rossum | 2007-08-27 19:19:42 +0200 (Mon, 27 Aug 2007) | 8 lines
> Regardless, building a fixed test certificate and checking it in sounds like
> the better option. Then the openssl command in the test code can be turned
> into a comment describing how the test data was pregenerated.
Here's a patch that does that.
Bill
........
r57568 | guido.van.rossum | 2007-08-27 20:42:23 +0200 (Mon, 27 Aug 2007) | 26 lines
> Some of the code sets the error string in this directly before
> returning NULL, and other pieces of the code call PySSL_SetError,
> which creates the error string. I think some of the places which set
> the string directly probably shouldn't; instead, they should call
> PySSL_SetError to cons up the error name directly from the err code.
> However, PySSL_SetError only works after the construction of an ssl
> object, which means it can't be used there... I'll take a longer look
> at it and see if there's a reasonable fix.
Here's a patch which addresses this. It also fixes the indentation in
PySSL_SetError, bringing it into line with PEP 7, fixes a compile warning
about one of the OpenSSL macros, and makes the namespace a bit more
consistent. I've tested it on FC 7 and OS X 10.4.
% ./python ./Lib/test/regrtest.py -R :1: -u all test_ssl
test_ssl
beginning 6 repetitions
123456
......
1 test OK.
[29244 refs]
%
[GvR: slightly edited to enforce 79-char line length, even if it required
violating the style guide.]
........
r57570 | guido.van.rossum | 2007-08-27 21:11:11 +0200 (Mon, 27 Aug 2007) | 2 lines
Patch 10124 by Bill Janssen, docs for the new ssl code.
........
r57574 | guido.van.rossum | 2007-08-27 22:51:00 +0200 (Mon, 27 Aug 2007) | 3 lines
Patch # 1739906 by Christian Heimes -- add reduce to functools (importing
it from __builtin__).
........
r57575 | guido.van.rossum | 2007-08-27 22:52:10 +0200 (Mon, 27 Aug 2007) | 2 lines
News about functools.reduce.
........
r57611 | georg.brandl | 2007-08-28 10:29:08 +0200 (Tue, 28 Aug 2007) | 2 lines
Document rev. 57574.
........
r57612 | sean.reifschneider | 2007-08-28 11:07:54 +0200 (Tue, 28 Aug 2007) | 2 lines
Adding basic imputil documentation.
........
r57614 | georg.brandl | 2007-08-28 12:48:18 +0200 (Tue, 28 Aug 2007) | 2 lines
Fix some glitches.
........
r57616 | lars.gustaebel | 2007-08-28 14:31:09 +0200 (Tue, 28 Aug 2007) | 5 lines
TarFile.__init__() no longer fails if no name argument is passed and
the fileobj argument has no usable name attribute (e.g. StringIO).
(will backport to 2.5)
........
r57619 | thomas.wouters | 2007-08-28 17:28:19 +0200 (Tue, 28 Aug 2007) | 22 lines
Improve extended slicing support in builtin types and classes. Specifically:
- Specialcase extended slices that amount to a shallow copy the same way as
is done for simple slices, in the tuple, string and unicode case.
- Specialcase step-1 extended slices to optimize the common case for all
involved types.
- For lists, allow extended slice assignment of differing lengths as long
as the step is 1. (Previously, 'l[:2:1] = []' failed even though
'l[:2] = []' and 'l[:2:None] = []' do not.)
- Implement extended slicing for buffer, array, structseq, mmap and
UserString.UserString.
- Implement slice-object support (but not non-step-1 slice assignment) for
UserString.MutableString.
- Add tests for all new functionality.
........
2007-08-28 18:37:11 -03:00
|
|
|
def test_out_of_range_signal_number_raises_error(self):
|
|
|
|
self.assertRaises(ValueError, signal.getsignal, 4242)
|
|
|
|
|
|
|
|
self.assertRaises(ValueError, signal.signal, 4242,
|
Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61687 | jeffrey.yasskin | 2008-03-21 06:02:44 +0100 (Fri, 21 Mar 2008) | 2 lines
Speed up test_signal from ~24s to 4s by avoiding nearly all of the sleep calls.
........
r61688 | jeffrey.yasskin | 2008-03-21 06:51:37 +0100 (Fri, 21 Mar 2008) | 5 lines
Try to fix test_signal breakages on Linux due to r61687. It appears that at
least two of the linux build bots aren't leaving zombie processes around for
os.waitpid to wait for, causing ECHILD errors. This would be a symptom of a bug
somewhere, but probably not in signal itself.
........
r61696 | georg.brandl | 2008-03-21 15:32:33 +0100 (Fri, 21 Mar 2008) | 2 lines
Mark the descitems in the tutorial as "noindex" so that :meth: cross-refs don't link to them.
........
r61700 | georg.brandl | 2008-03-21 18:19:29 +0100 (Fri, 21 Mar 2008) | 2 lines
Fix markup.
........
r61704 | jeffrey.yasskin | 2008-03-21 19:25:06 +0100 (Fri, 21 Mar 2008) | 3 lines
Try to fix test_signal on FreeBSD. I'm assuming that os.kill is failing to
raise a signal, but switching to subprocess makes the code cleaner anyway.
........
r61705 | jeffrey.yasskin | 2008-03-21 19:48:04 +0100 (Fri, 21 Mar 2008) | 7 lines
Speed test_threading up from 14s to .5s, and avoid a deadlock on certain
failures. The test for enumerate-after-join is now a little less rigorous, but
the bug it references says the error happened in the first couple iterations,
so 100 iterations should still be enough.
cProfile was useful for identifying the slow tests here.
........
r61707 | georg.brandl | 2008-03-21 20:14:38 +0100 (Fri, 21 Mar 2008) | 2 lines
Fix a code block in __future__ docs.
........
r61708 | georg.brandl | 2008-03-21 20:20:21 +0100 (Fri, 21 Mar 2008) | 2 lines
Add docs for __func__ and __self__ on methods.
........
r61709 | georg.brandl | 2008-03-21 20:37:57 +0100 (Fri, 21 Mar 2008) | 2 lines
Add docs for print_function and future_builtins. Fixes #2442.
........
r61711 | georg.brandl | 2008-03-21 20:54:00 +0100 (Fri, 21 Mar 2008) | 2 lines
#2136: allow single quotes in realm spec.
........
r61712 | georg.brandl | 2008-03-21 21:01:51 +0100 (Fri, 21 Mar 2008) | 3 lines
Issue #2432: give DictReader the dialect and line_num attributes
advertised in the docs.
........
r61714 | georg.brandl | 2008-03-21 21:11:46 +0100 (Fri, 21 Mar 2008) | 2 lines
#2358: add py3k warning to sys.exc_clear().
........
r61715 | georg.brandl | 2008-03-21 21:21:46 +0100 (Fri, 21 Mar 2008) | 2 lines
#2346/#2347: add py3k warning for __methods__ and __members__. Patch by Jack Diederich.
........
r61716 | georg.brandl | 2008-03-21 21:38:24 +0100 (Fri, 21 Mar 2008) | 2 lines
#2348: add py3k warning for file.softspace.
........
r61718 | georg.brandl | 2008-03-21 21:55:20 +0100 (Fri, 21 Mar 2008) | 2 lines
#2160: document PyImport_GetImporter.
........
r61719 | georg.brandl | 2008-03-21 21:55:51 +0100 (Fri, 21 Mar 2008) | 2 lines
Update doc ACKS.
........
r61720 | steven.bethard | 2008-03-21 22:01:18 +0100 (Fri, 21 Mar 2008) | 1 line
Replace hack in regrtest.py with use of sys.py3kwarning.
........
r61721 | georg.brandl | 2008-03-21 22:05:03 +0100 (Fri, 21 Mar 2008) | 2 lines
Add missing versionadded tag.
........
r61722 | christian.heimes | 2008-03-22 00:49:44 +0100 (Sat, 22 Mar 2008) | 3 lines
Applied patch #1657 epoll and kqueue wrappers for the select module
The patch adds wrappers for the Linux epoll syscalls and the BSD kqueue syscalls. Thanks to Thomas Herve and the Twisted people for their support and help.
TODO: Finish documentation documentation
........
2008-03-21 21:47:35 -03:00
|
|
|
self.trivial_signal_handler)
|
Merge the trunk changes in. Breaks socket.ssl for now.
Merged revisions 57392-57619 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r57395 | georg.brandl | 2007-08-24 19:23:23 +0200 (Fri, 24 Aug 2007) | 2 lines
Bug #1011: fix rfc822.Message.getheader docs.
........
r57397 | georg.brandl | 2007-08-24 19:38:49 +0200 (Fri, 24 Aug 2007) | 2 lines
Patch #1006: port test_winreg to unittest.
........
r57398 | georg.brandl | 2007-08-24 19:46:54 +0200 (Fri, 24 Aug 2007) | 2 lines
Fix #1012: wrong URL to :mod:`site` in install/index.rst.
........
r57399 | georg.brandl | 2007-08-24 20:07:52 +0200 (Fri, 24 Aug 2007) | 2 lines
Patch #1008: port test_signal to unittest.
........
r57400 | georg.brandl | 2007-08-24 20:22:54 +0200 (Fri, 24 Aug 2007) | 2 lines
Port test_frozen to unittest.
........
r57401 | georg.brandl | 2007-08-24 20:27:43 +0200 (Fri, 24 Aug 2007) | 2 lines
Document new utility functions in test_support.
........
r57402 | georg.brandl | 2007-08-24 20:30:06 +0200 (Fri, 24 Aug 2007) | 2 lines
Remove test_rgbimg output file, there is no test_rgbimg.py.
........
r57403 | georg.brandl | 2007-08-24 20:35:27 +0200 (Fri, 24 Aug 2007) | 2 lines
Remove output file for test_ossaudiodev, also properly close the dsp object.
........
r57404 | georg.brandl | 2007-08-24 20:46:27 +0200 (Fri, 24 Aug 2007) | 2 lines
Convert test_linuxaudiodev to unittest. Fix a wrong finally clause in test_ossaudiodev.
........
r57406 | collin.winter | 2007-08-24 21:13:58 +0200 (Fri, 24 Aug 2007) | 1 line
Convert test_pkg to use unittest.
........
r57408 | georg.brandl | 2007-08-24 21:22:34 +0200 (Fri, 24 Aug 2007) | 2 lines
Catch the correct errors.
........
r57409 | georg.brandl | 2007-08-24 21:33:53 +0200 (Fri, 24 Aug 2007) | 2 lines
Port test_class to unittest. Patch #1671298.
........
r57415 | collin.winter | 2007-08-24 23:09:42 +0200 (Fri, 24 Aug 2007) | 1 line
Make test_structmembers pass when run with regrtests's -R flag.
........
r57455 | nick.coghlan | 2007-08-25 06:32:07 +0200 (Sat, 25 Aug 2007) | 1 line
Revert misguided attempt at fixing incompatibility between -m and -i switches (better fix coming soon)
........
r57456 | nick.coghlan | 2007-08-25 06:35:54 +0200 (Sat, 25 Aug 2007) | 1 line
Revert compile.c changes that shouldn't have been included in previous checkin
........
r57461 | nick.coghlan | 2007-08-25 12:50:41 +0200 (Sat, 25 Aug 2007) | 1 line
Fix bug 1764407 - the -i switch now does the right thing when using the -m switch
........
r57464 | guido.van.rossum | 2007-08-25 17:08:43 +0200 (Sat, 25 Aug 2007) | 4 lines
Server-side SSL and certificate validation, by Bill Janssen.
While cleaning up Bill's C style, I may have cleaned up some code
he didn't touch as well (in _ssl.c).
........
r57465 | neal.norwitz | 2007-08-25 18:41:36 +0200 (Sat, 25 Aug 2007) | 3 lines
Try to get this to build with Visual Studio by moving all the variable
declarations to the beginning of a scope.
........
r57466 | neal.norwitz | 2007-08-25 18:54:38 +0200 (Sat, 25 Aug 2007) | 1 line
Fix test so it is skipped properly if there is no SSL support.
........
r57467 | neal.norwitz | 2007-08-25 18:58:09 +0200 (Sat, 25 Aug 2007) | 2 lines
Fix a few more variables to try to get this to compile with Visual Studio.
........
r57473 | neal.norwitz | 2007-08-25 19:25:17 +0200 (Sat, 25 Aug 2007) | 1 line
Try to get this test to pass for systems that do not have SO_REUSEPORT
........
r57482 | gregory.p.smith | 2007-08-26 02:26:00 +0200 (Sun, 26 Aug 2007) | 7 lines
keep setup.py from listing unneeded hash modules (_md5, _sha*) as
missing when they were not built because _hashlib with openssl provided
their functionality instead.
don't build bsddb185 if bsddb was built.
........
r57483 | neal.norwitz | 2007-08-26 03:08:16 +0200 (Sun, 26 Aug 2007) | 1 line
Fix typo in docstring (missing c in reacquire)
........
r57484 | neal.norwitz | 2007-08-26 03:42:03 +0200 (Sun, 26 Aug 2007) | 2 lines
Spell check (also americanify behaviour, it's almost 3 times as common)
........
r57503 | neal.norwitz | 2007-08-26 08:29:57 +0200 (Sun, 26 Aug 2007) | 4 lines
Reap children before the test starts so hopefully SocketServer
won't find any old children left around which causes an exception
in collect_children() and the test to fail.
........
r57510 | neal.norwitz | 2007-08-26 20:50:39 +0200 (Sun, 26 Aug 2007) | 1 line
Fail gracefully if the cert files cannot be created
........
r57513 | guido.van.rossum | 2007-08-26 21:35:09 +0200 (Sun, 26 Aug 2007) | 4 lines
Bill Janssen wrote:
Here's a patch which makes test_ssl a better player in the buildbots
environment. I deep-ended on "try-except-else" clauses.
........
r57518 | neal.norwitz | 2007-08-26 23:40:16 +0200 (Sun, 26 Aug 2007) | 1 line
Get the test passing by commenting out some writes (should they be removed?)
........
r57522 | neal.norwitz | 2007-08-27 00:16:23 +0200 (Mon, 27 Aug 2007) | 3 lines
Catch IOError for when the device file doesn't exist or the user doesn't have
permission to write to the device.
........
r57524 | neal.norwitz | 2007-08-27 00:20:03 +0200 (Mon, 27 Aug 2007) | 5 lines
Another patch from Bill Janssen that:
1) Fixes the bug that two class names are initial-lower-case.
2) Replaces the poll waiting for the server to become ready with
a threading.Event signal.
........
r57536 | neal.norwitz | 2007-08-27 02:58:33 +0200 (Mon, 27 Aug 2007) | 1 line
Stop using string.join (from the module) to ease upgrade to py3k
........
r57537 | neal.norwitz | 2007-08-27 03:03:18 +0200 (Mon, 27 Aug 2007) | 1 line
Make a utility function for handling (printing) an error
........
r57538 | neal.norwitz | 2007-08-27 03:15:33 +0200 (Mon, 27 Aug 2007) | 4 lines
If we can't create a certificate, print a warning, but don't fail the test.
Modified patch from what Bill Janssen sent on python-3000.
........
r57539 | facundo.batista | 2007-08-27 03:15:34 +0200 (Mon, 27 Aug 2007) | 7 lines
Ignore test failures caused by 'resource temporarily unavailable'
exceptions raised in the test server thread, since SimpleXMLRPCServer
does not gracefully handle them. Changed number of requests handled
by tests server thread to one (was 2) because no tests require more
than one request. [GSoC - Alan McIntyre]
........
r57561 | guido.van.rossum | 2007-08-27 19:19:42 +0200 (Mon, 27 Aug 2007) | 8 lines
> Regardless, building a fixed test certificate and checking it in sounds like
> the better option. Then the openssl command in the test code can be turned
> into a comment describing how the test data was pregenerated.
Here's a patch that does that.
Bill
........
r57568 | guido.van.rossum | 2007-08-27 20:42:23 +0200 (Mon, 27 Aug 2007) | 26 lines
> Some of the code sets the error string in this directly before
> returning NULL, and other pieces of the code call PySSL_SetError,
> which creates the error string. I think some of the places which set
> the string directly probably shouldn't; instead, they should call
> PySSL_SetError to cons up the error name directly from the err code.
> However, PySSL_SetError only works after the construction of an ssl
> object, which means it can't be used there... I'll take a longer look
> at it and see if there's a reasonable fix.
Here's a patch which addresses this. It also fixes the indentation in
PySSL_SetError, bringing it into line with PEP 7, fixes a compile warning
about one of the OpenSSL macros, and makes the namespace a bit more
consistent. I've tested it on FC 7 and OS X 10.4.
% ./python ./Lib/test/regrtest.py -R :1: -u all test_ssl
test_ssl
beginning 6 repetitions
123456
......
1 test OK.
[29244 refs]
%
[GvR: slightly edited to enforce 79-char line length, even if it required
violating the style guide.]
........
r57570 | guido.van.rossum | 2007-08-27 21:11:11 +0200 (Mon, 27 Aug 2007) | 2 lines
Patch 10124 by Bill Janssen, docs for the new ssl code.
........
r57574 | guido.van.rossum | 2007-08-27 22:51:00 +0200 (Mon, 27 Aug 2007) | 3 lines
Patch # 1739906 by Christian Heimes -- add reduce to functools (importing
it from __builtin__).
........
r57575 | guido.van.rossum | 2007-08-27 22:52:10 +0200 (Mon, 27 Aug 2007) | 2 lines
News about functools.reduce.
........
r57611 | georg.brandl | 2007-08-28 10:29:08 +0200 (Tue, 28 Aug 2007) | 2 lines
Document rev. 57574.
........
r57612 | sean.reifschneider | 2007-08-28 11:07:54 +0200 (Tue, 28 Aug 2007) | 2 lines
Adding basic imputil documentation.
........
r57614 | georg.brandl | 2007-08-28 12:48:18 +0200 (Tue, 28 Aug 2007) | 2 lines
Fix some glitches.
........
r57616 | lars.gustaebel | 2007-08-28 14:31:09 +0200 (Tue, 28 Aug 2007) | 5 lines
TarFile.__init__() no longer fails if no name argument is passed and
the fileobj argument has no usable name attribute (e.g. StringIO).
(will backport to 2.5)
........
r57619 | thomas.wouters | 2007-08-28 17:28:19 +0200 (Tue, 28 Aug 2007) | 22 lines
Improve extended slicing support in builtin types and classes. Specifically:
- Specialcase extended slices that amount to a shallow copy the same way as
is done for simple slices, in the tuple, string and unicode case.
- Specialcase step-1 extended slices to optimize the common case for all
involved types.
- For lists, allow extended slice assignment of differing lengths as long
as the step is 1. (Previously, 'l[:2:1] = []' failed even though
'l[:2] = []' and 'l[:2:None] = []' do not.)
- Implement extended slicing for buffer, array, structseq, mmap and
UserString.UserString.
- Implement slice-object support (but not non-step-1 slice assignment) for
UserString.MutableString.
- Add tests for all new functionality.
........
2007-08-28 18:37:11 -03:00
|
|
|
|
2018-03-12 10:42:34 -03:00
|
|
|
self.assertRaises(ValueError, signal.strsignal, 4242)
|
|
|
|
|
Merge the trunk changes in. Breaks socket.ssl for now.
Merged revisions 57392-57619 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r57395 | georg.brandl | 2007-08-24 19:23:23 +0200 (Fri, 24 Aug 2007) | 2 lines
Bug #1011: fix rfc822.Message.getheader docs.
........
r57397 | georg.brandl | 2007-08-24 19:38:49 +0200 (Fri, 24 Aug 2007) | 2 lines
Patch #1006: port test_winreg to unittest.
........
r57398 | georg.brandl | 2007-08-24 19:46:54 +0200 (Fri, 24 Aug 2007) | 2 lines
Fix #1012: wrong URL to :mod:`site` in install/index.rst.
........
r57399 | georg.brandl | 2007-08-24 20:07:52 +0200 (Fri, 24 Aug 2007) | 2 lines
Patch #1008: port test_signal to unittest.
........
r57400 | georg.brandl | 2007-08-24 20:22:54 +0200 (Fri, 24 Aug 2007) | 2 lines
Port test_frozen to unittest.
........
r57401 | georg.brandl | 2007-08-24 20:27:43 +0200 (Fri, 24 Aug 2007) | 2 lines
Document new utility functions in test_support.
........
r57402 | georg.brandl | 2007-08-24 20:30:06 +0200 (Fri, 24 Aug 2007) | 2 lines
Remove test_rgbimg output file, there is no test_rgbimg.py.
........
r57403 | georg.brandl | 2007-08-24 20:35:27 +0200 (Fri, 24 Aug 2007) | 2 lines
Remove output file for test_ossaudiodev, also properly close the dsp object.
........
r57404 | georg.brandl | 2007-08-24 20:46:27 +0200 (Fri, 24 Aug 2007) | 2 lines
Convert test_linuxaudiodev to unittest. Fix a wrong finally clause in test_ossaudiodev.
........
r57406 | collin.winter | 2007-08-24 21:13:58 +0200 (Fri, 24 Aug 2007) | 1 line
Convert test_pkg to use unittest.
........
r57408 | georg.brandl | 2007-08-24 21:22:34 +0200 (Fri, 24 Aug 2007) | 2 lines
Catch the correct errors.
........
r57409 | georg.brandl | 2007-08-24 21:33:53 +0200 (Fri, 24 Aug 2007) | 2 lines
Port test_class to unittest. Patch #1671298.
........
r57415 | collin.winter | 2007-08-24 23:09:42 +0200 (Fri, 24 Aug 2007) | 1 line
Make test_structmembers pass when run with regrtests's -R flag.
........
r57455 | nick.coghlan | 2007-08-25 06:32:07 +0200 (Sat, 25 Aug 2007) | 1 line
Revert misguided attempt at fixing incompatibility between -m and -i switches (better fix coming soon)
........
r57456 | nick.coghlan | 2007-08-25 06:35:54 +0200 (Sat, 25 Aug 2007) | 1 line
Revert compile.c changes that shouldn't have been included in previous checkin
........
r57461 | nick.coghlan | 2007-08-25 12:50:41 +0200 (Sat, 25 Aug 2007) | 1 line
Fix bug 1764407 - the -i switch now does the right thing when using the -m switch
........
r57464 | guido.van.rossum | 2007-08-25 17:08:43 +0200 (Sat, 25 Aug 2007) | 4 lines
Server-side SSL and certificate validation, by Bill Janssen.
While cleaning up Bill's C style, I may have cleaned up some code
he didn't touch as well (in _ssl.c).
........
r57465 | neal.norwitz | 2007-08-25 18:41:36 +0200 (Sat, 25 Aug 2007) | 3 lines
Try to get this to build with Visual Studio by moving all the variable
declarations to the beginning of a scope.
........
r57466 | neal.norwitz | 2007-08-25 18:54:38 +0200 (Sat, 25 Aug 2007) | 1 line
Fix test so it is skipped properly if there is no SSL support.
........
r57467 | neal.norwitz | 2007-08-25 18:58:09 +0200 (Sat, 25 Aug 2007) | 2 lines
Fix a few more variables to try to get this to compile with Visual Studio.
........
r57473 | neal.norwitz | 2007-08-25 19:25:17 +0200 (Sat, 25 Aug 2007) | 1 line
Try to get this test to pass for systems that do not have SO_REUSEPORT
........
r57482 | gregory.p.smith | 2007-08-26 02:26:00 +0200 (Sun, 26 Aug 2007) | 7 lines
keep setup.py from listing unneeded hash modules (_md5, _sha*) as
missing when they were not built because _hashlib with openssl provided
their functionality instead.
don't build bsddb185 if bsddb was built.
........
r57483 | neal.norwitz | 2007-08-26 03:08:16 +0200 (Sun, 26 Aug 2007) | 1 line
Fix typo in docstring (missing c in reacquire)
........
r57484 | neal.norwitz | 2007-08-26 03:42:03 +0200 (Sun, 26 Aug 2007) | 2 lines
Spell check (also americanify behaviour, it's almost 3 times as common)
........
r57503 | neal.norwitz | 2007-08-26 08:29:57 +0200 (Sun, 26 Aug 2007) | 4 lines
Reap children before the test starts so hopefully SocketServer
won't find any old children left around which causes an exception
in collect_children() and the test to fail.
........
r57510 | neal.norwitz | 2007-08-26 20:50:39 +0200 (Sun, 26 Aug 2007) | 1 line
Fail gracefully if the cert files cannot be created
........
r57513 | guido.van.rossum | 2007-08-26 21:35:09 +0200 (Sun, 26 Aug 2007) | 4 lines
Bill Janssen wrote:
Here's a patch which makes test_ssl a better player in the buildbots
environment. I deep-ended on "try-except-else" clauses.
........
r57518 | neal.norwitz | 2007-08-26 23:40:16 +0200 (Sun, 26 Aug 2007) | 1 line
Get the test passing by commenting out some writes (should they be removed?)
........
r57522 | neal.norwitz | 2007-08-27 00:16:23 +0200 (Mon, 27 Aug 2007) | 3 lines
Catch IOError for when the device file doesn't exist or the user doesn't have
permission to write to the device.
........
r57524 | neal.norwitz | 2007-08-27 00:20:03 +0200 (Mon, 27 Aug 2007) | 5 lines
Another patch from Bill Janssen that:
1) Fixes the bug that two class names are initial-lower-case.
2) Replaces the poll waiting for the server to become ready with
a threading.Event signal.
........
r57536 | neal.norwitz | 2007-08-27 02:58:33 +0200 (Mon, 27 Aug 2007) | 1 line
Stop using string.join (from the module) to ease upgrade to py3k
........
r57537 | neal.norwitz | 2007-08-27 03:03:18 +0200 (Mon, 27 Aug 2007) | 1 line
Make a utility function for handling (printing) an error
........
r57538 | neal.norwitz | 2007-08-27 03:15:33 +0200 (Mon, 27 Aug 2007) | 4 lines
If we can't create a certificate, print a warning, but don't fail the test.
Modified patch from what Bill Janssen sent on python-3000.
........
r57539 | facundo.batista | 2007-08-27 03:15:34 +0200 (Mon, 27 Aug 2007) | 7 lines
Ignore test failures caused by 'resource temporarily unavailable'
exceptions raised in the test server thread, since SimpleXMLRPCServer
does not gracefully handle them. Changed number of requests handled
by tests server thread to one (was 2) because no tests require more
than one request. [GSoC - Alan McIntyre]
........
r57561 | guido.van.rossum | 2007-08-27 19:19:42 +0200 (Mon, 27 Aug 2007) | 8 lines
> Regardless, building a fixed test certificate and checking it in sounds like
> the better option. Then the openssl command in the test code can be turned
> into a comment describing how the test data was pregenerated.
Here's a patch that does that.
Bill
........
r57568 | guido.van.rossum | 2007-08-27 20:42:23 +0200 (Mon, 27 Aug 2007) | 26 lines
> Some of the code sets the error string in this directly before
> returning NULL, and other pieces of the code call PySSL_SetError,
> which creates the error string. I think some of the places which set
> the string directly probably shouldn't; instead, they should call
> PySSL_SetError to cons up the error name directly from the err code.
> However, PySSL_SetError only works after the construction of an ssl
> object, which means it can't be used there... I'll take a longer look
> at it and see if there's a reasonable fix.
Here's a patch which addresses this. It also fixes the indentation in
PySSL_SetError, bringing it into line with PEP 7, fixes a compile warning
about one of the OpenSSL macros, and makes the namespace a bit more
consistent. I've tested it on FC 7 and OS X 10.4.
% ./python ./Lib/test/regrtest.py -R :1: -u all test_ssl
test_ssl
beginning 6 repetitions
123456
......
1 test OK.
[29244 refs]
%
[GvR: slightly edited to enforce 79-char line length, even if it required
violating the style guide.]
........
r57570 | guido.van.rossum | 2007-08-27 21:11:11 +0200 (Mon, 27 Aug 2007) | 2 lines
Patch 10124 by Bill Janssen, docs for the new ssl code.
........
r57574 | guido.van.rossum | 2007-08-27 22:51:00 +0200 (Mon, 27 Aug 2007) | 3 lines
Patch # 1739906 by Christian Heimes -- add reduce to functools (importing
it from __builtin__).
........
r57575 | guido.van.rossum | 2007-08-27 22:52:10 +0200 (Mon, 27 Aug 2007) | 2 lines
News about functools.reduce.
........
r57611 | georg.brandl | 2007-08-28 10:29:08 +0200 (Tue, 28 Aug 2007) | 2 lines
Document rev. 57574.
........
r57612 | sean.reifschneider | 2007-08-28 11:07:54 +0200 (Tue, 28 Aug 2007) | 2 lines
Adding basic imputil documentation.
........
r57614 | georg.brandl | 2007-08-28 12:48:18 +0200 (Tue, 28 Aug 2007) | 2 lines
Fix some glitches.
........
r57616 | lars.gustaebel | 2007-08-28 14:31:09 +0200 (Tue, 28 Aug 2007) | 5 lines
TarFile.__init__() no longer fails if no name argument is passed and
the fileobj argument has no usable name attribute (e.g. StringIO).
(will backport to 2.5)
........
r57619 | thomas.wouters | 2007-08-28 17:28:19 +0200 (Tue, 28 Aug 2007) | 22 lines
Improve extended slicing support in builtin types and classes. Specifically:
- Specialcase extended slices that amount to a shallow copy the same way as
is done for simple slices, in the tuple, string and unicode case.
- Specialcase step-1 extended slices to optimize the common case for all
involved types.
- For lists, allow extended slice assignment of differing lengths as long
as the step is 1. (Previously, 'l[:2:1] = []' failed even though
'l[:2] = []' and 'l[:2:None] = []' do not.)
- Implement extended slicing for buffer, array, structseq, mmap and
UserString.UserString.
- Implement slice-object support (but not non-step-1 slice assignment) for
UserString.MutableString.
- Add tests for all new functionality.
........
2007-08-28 18:37:11 -03:00
|
|
|
def test_setting_signal_handler_to_none_raises_error(self):
|
|
|
|
self.assertRaises(TypeError, signal.signal,
|
|
|
|
signal.SIGUSR1, None)
|
|
|
|
|
Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61687 | jeffrey.yasskin | 2008-03-21 06:02:44 +0100 (Fri, 21 Mar 2008) | 2 lines
Speed up test_signal from ~24s to 4s by avoiding nearly all of the sleep calls.
........
r61688 | jeffrey.yasskin | 2008-03-21 06:51:37 +0100 (Fri, 21 Mar 2008) | 5 lines
Try to fix test_signal breakages on Linux due to r61687. It appears that at
least two of the linux build bots aren't leaving zombie processes around for
os.waitpid to wait for, causing ECHILD errors. This would be a symptom of a bug
somewhere, but probably not in signal itself.
........
r61696 | georg.brandl | 2008-03-21 15:32:33 +0100 (Fri, 21 Mar 2008) | 2 lines
Mark the descitems in the tutorial as "noindex" so that :meth: cross-refs don't link to them.
........
r61700 | georg.brandl | 2008-03-21 18:19:29 +0100 (Fri, 21 Mar 2008) | 2 lines
Fix markup.
........
r61704 | jeffrey.yasskin | 2008-03-21 19:25:06 +0100 (Fri, 21 Mar 2008) | 3 lines
Try to fix test_signal on FreeBSD. I'm assuming that os.kill is failing to
raise a signal, but switching to subprocess makes the code cleaner anyway.
........
r61705 | jeffrey.yasskin | 2008-03-21 19:48:04 +0100 (Fri, 21 Mar 2008) | 7 lines
Speed test_threading up from 14s to .5s, and avoid a deadlock on certain
failures. The test for enumerate-after-join is now a little less rigorous, but
the bug it references says the error happened in the first couple iterations,
so 100 iterations should still be enough.
cProfile was useful for identifying the slow tests here.
........
r61707 | georg.brandl | 2008-03-21 20:14:38 +0100 (Fri, 21 Mar 2008) | 2 lines
Fix a code block in __future__ docs.
........
r61708 | georg.brandl | 2008-03-21 20:20:21 +0100 (Fri, 21 Mar 2008) | 2 lines
Add docs for __func__ and __self__ on methods.
........
r61709 | georg.brandl | 2008-03-21 20:37:57 +0100 (Fri, 21 Mar 2008) | 2 lines
Add docs for print_function and future_builtins. Fixes #2442.
........
r61711 | georg.brandl | 2008-03-21 20:54:00 +0100 (Fri, 21 Mar 2008) | 2 lines
#2136: allow single quotes in realm spec.
........
r61712 | georg.brandl | 2008-03-21 21:01:51 +0100 (Fri, 21 Mar 2008) | 3 lines
Issue #2432: give DictReader the dialect and line_num attributes
advertised in the docs.
........
r61714 | georg.brandl | 2008-03-21 21:11:46 +0100 (Fri, 21 Mar 2008) | 2 lines
#2358: add py3k warning to sys.exc_clear().
........
r61715 | georg.brandl | 2008-03-21 21:21:46 +0100 (Fri, 21 Mar 2008) | 2 lines
#2346/#2347: add py3k warning for __methods__ and __members__. Patch by Jack Diederich.
........
r61716 | georg.brandl | 2008-03-21 21:38:24 +0100 (Fri, 21 Mar 2008) | 2 lines
#2348: add py3k warning for file.softspace.
........
r61718 | georg.brandl | 2008-03-21 21:55:20 +0100 (Fri, 21 Mar 2008) | 2 lines
#2160: document PyImport_GetImporter.
........
r61719 | georg.brandl | 2008-03-21 21:55:51 +0100 (Fri, 21 Mar 2008) | 2 lines
Update doc ACKS.
........
r61720 | steven.bethard | 2008-03-21 22:01:18 +0100 (Fri, 21 Mar 2008) | 1 line
Replace hack in regrtest.py with use of sys.py3kwarning.
........
r61721 | georg.brandl | 2008-03-21 22:05:03 +0100 (Fri, 21 Mar 2008) | 2 lines
Add missing versionadded tag.
........
r61722 | christian.heimes | 2008-03-22 00:49:44 +0100 (Sat, 22 Mar 2008) | 3 lines
Applied patch #1657 epoll and kqueue wrappers for the select module
The patch adds wrappers for the Linux epoll syscalls and the BSD kqueue syscalls. Thanks to Thomas Herve and the Twisted people for their support and help.
TODO: Finish documentation documentation
........
2008-03-21 21:47:35 -03:00
|
|
|
def test_getsignal(self):
|
|
|
|
hup = signal.signal(signal.SIGHUP, self.trivial_signal_handler)
|
2014-04-04 10:34:17 -03:00
|
|
|
self.assertIsInstance(hup, signal.Handlers)
|
2010-11-20 21:30:29 -04:00
|
|
|
self.assertEqual(signal.getsignal(signal.SIGHUP),
|
|
|
|
self.trivial_signal_handler)
|
Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61687 | jeffrey.yasskin | 2008-03-21 06:02:44 +0100 (Fri, 21 Mar 2008) | 2 lines
Speed up test_signal from ~24s to 4s by avoiding nearly all of the sleep calls.
........
r61688 | jeffrey.yasskin | 2008-03-21 06:51:37 +0100 (Fri, 21 Mar 2008) | 5 lines
Try to fix test_signal breakages on Linux due to r61687. It appears that at
least two of the linux build bots aren't leaving zombie processes around for
os.waitpid to wait for, causing ECHILD errors. This would be a symptom of a bug
somewhere, but probably not in signal itself.
........
r61696 | georg.brandl | 2008-03-21 15:32:33 +0100 (Fri, 21 Mar 2008) | 2 lines
Mark the descitems in the tutorial as "noindex" so that :meth: cross-refs don't link to them.
........
r61700 | georg.brandl | 2008-03-21 18:19:29 +0100 (Fri, 21 Mar 2008) | 2 lines
Fix markup.
........
r61704 | jeffrey.yasskin | 2008-03-21 19:25:06 +0100 (Fri, 21 Mar 2008) | 3 lines
Try to fix test_signal on FreeBSD. I'm assuming that os.kill is failing to
raise a signal, but switching to subprocess makes the code cleaner anyway.
........
r61705 | jeffrey.yasskin | 2008-03-21 19:48:04 +0100 (Fri, 21 Mar 2008) | 7 lines
Speed test_threading up from 14s to .5s, and avoid a deadlock on certain
failures. The test for enumerate-after-join is now a little less rigorous, but
the bug it references says the error happened in the first couple iterations,
so 100 iterations should still be enough.
cProfile was useful for identifying the slow tests here.
........
r61707 | georg.brandl | 2008-03-21 20:14:38 +0100 (Fri, 21 Mar 2008) | 2 lines
Fix a code block in __future__ docs.
........
r61708 | georg.brandl | 2008-03-21 20:20:21 +0100 (Fri, 21 Mar 2008) | 2 lines
Add docs for __func__ and __self__ on methods.
........
r61709 | georg.brandl | 2008-03-21 20:37:57 +0100 (Fri, 21 Mar 2008) | 2 lines
Add docs for print_function and future_builtins. Fixes #2442.
........
r61711 | georg.brandl | 2008-03-21 20:54:00 +0100 (Fri, 21 Mar 2008) | 2 lines
#2136: allow single quotes in realm spec.
........
r61712 | georg.brandl | 2008-03-21 21:01:51 +0100 (Fri, 21 Mar 2008) | 3 lines
Issue #2432: give DictReader the dialect and line_num attributes
advertised in the docs.
........
r61714 | georg.brandl | 2008-03-21 21:11:46 +0100 (Fri, 21 Mar 2008) | 2 lines
#2358: add py3k warning to sys.exc_clear().
........
r61715 | georg.brandl | 2008-03-21 21:21:46 +0100 (Fri, 21 Mar 2008) | 2 lines
#2346/#2347: add py3k warning for __methods__ and __members__. Patch by Jack Diederich.
........
r61716 | georg.brandl | 2008-03-21 21:38:24 +0100 (Fri, 21 Mar 2008) | 2 lines
#2348: add py3k warning for file.softspace.
........
r61718 | georg.brandl | 2008-03-21 21:55:20 +0100 (Fri, 21 Mar 2008) | 2 lines
#2160: document PyImport_GetImporter.
........
r61719 | georg.brandl | 2008-03-21 21:55:51 +0100 (Fri, 21 Mar 2008) | 2 lines
Update doc ACKS.
........
r61720 | steven.bethard | 2008-03-21 22:01:18 +0100 (Fri, 21 Mar 2008) | 1 line
Replace hack in regrtest.py with use of sys.py3kwarning.
........
r61721 | georg.brandl | 2008-03-21 22:05:03 +0100 (Fri, 21 Mar 2008) | 2 lines
Add missing versionadded tag.
........
r61722 | christian.heimes | 2008-03-22 00:49:44 +0100 (Sat, 22 Mar 2008) | 3 lines
Applied patch #1657 epoll and kqueue wrappers for the select module
The patch adds wrappers for the Linux epoll syscalls and the BSD kqueue syscalls. Thanks to Thomas Herve and the Twisted people for their support and help.
TODO: Finish documentation documentation
........
2008-03-21 21:47:35 -03:00
|
|
|
signal.signal(signal.SIGHUP, hup)
|
2010-11-20 21:30:29 -04:00
|
|
|
self.assertEqual(signal.getsignal(signal.SIGHUP), hup)
|
Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61687 | jeffrey.yasskin | 2008-03-21 06:02:44 +0100 (Fri, 21 Mar 2008) | 2 lines
Speed up test_signal from ~24s to 4s by avoiding nearly all of the sleep calls.
........
r61688 | jeffrey.yasskin | 2008-03-21 06:51:37 +0100 (Fri, 21 Mar 2008) | 5 lines
Try to fix test_signal breakages on Linux due to r61687. It appears that at
least two of the linux build bots aren't leaving zombie processes around for
os.waitpid to wait for, causing ECHILD errors. This would be a symptom of a bug
somewhere, but probably not in signal itself.
........
r61696 | georg.brandl | 2008-03-21 15:32:33 +0100 (Fri, 21 Mar 2008) | 2 lines
Mark the descitems in the tutorial as "noindex" so that :meth: cross-refs don't link to them.
........
r61700 | georg.brandl | 2008-03-21 18:19:29 +0100 (Fri, 21 Mar 2008) | 2 lines
Fix markup.
........
r61704 | jeffrey.yasskin | 2008-03-21 19:25:06 +0100 (Fri, 21 Mar 2008) | 3 lines
Try to fix test_signal on FreeBSD. I'm assuming that os.kill is failing to
raise a signal, but switching to subprocess makes the code cleaner anyway.
........
r61705 | jeffrey.yasskin | 2008-03-21 19:48:04 +0100 (Fri, 21 Mar 2008) | 7 lines
Speed test_threading up from 14s to .5s, and avoid a deadlock on certain
failures. The test for enumerate-after-join is now a little less rigorous, but
the bug it references says the error happened in the first couple iterations,
so 100 iterations should still be enough.
cProfile was useful for identifying the slow tests here.
........
r61707 | georg.brandl | 2008-03-21 20:14:38 +0100 (Fri, 21 Mar 2008) | 2 lines
Fix a code block in __future__ docs.
........
r61708 | georg.brandl | 2008-03-21 20:20:21 +0100 (Fri, 21 Mar 2008) | 2 lines
Add docs for __func__ and __self__ on methods.
........
r61709 | georg.brandl | 2008-03-21 20:37:57 +0100 (Fri, 21 Mar 2008) | 2 lines
Add docs for print_function and future_builtins. Fixes #2442.
........
r61711 | georg.brandl | 2008-03-21 20:54:00 +0100 (Fri, 21 Mar 2008) | 2 lines
#2136: allow single quotes in realm spec.
........
r61712 | georg.brandl | 2008-03-21 21:01:51 +0100 (Fri, 21 Mar 2008) | 3 lines
Issue #2432: give DictReader the dialect and line_num attributes
advertised in the docs.
........
r61714 | georg.brandl | 2008-03-21 21:11:46 +0100 (Fri, 21 Mar 2008) | 2 lines
#2358: add py3k warning to sys.exc_clear().
........
r61715 | georg.brandl | 2008-03-21 21:21:46 +0100 (Fri, 21 Mar 2008) | 2 lines
#2346/#2347: add py3k warning for __methods__ and __members__. Patch by Jack Diederich.
........
r61716 | georg.brandl | 2008-03-21 21:38:24 +0100 (Fri, 21 Mar 2008) | 2 lines
#2348: add py3k warning for file.softspace.
........
r61718 | georg.brandl | 2008-03-21 21:55:20 +0100 (Fri, 21 Mar 2008) | 2 lines
#2160: document PyImport_GetImporter.
........
r61719 | georg.brandl | 2008-03-21 21:55:51 +0100 (Fri, 21 Mar 2008) | 2 lines
Update doc ACKS.
........
r61720 | steven.bethard | 2008-03-21 22:01:18 +0100 (Fri, 21 Mar 2008) | 1 line
Replace hack in regrtest.py with use of sys.py3kwarning.
........
r61721 | georg.brandl | 2008-03-21 22:05:03 +0100 (Fri, 21 Mar 2008) | 2 lines
Add missing versionadded tag.
........
r61722 | christian.heimes | 2008-03-22 00:49:44 +0100 (Sat, 22 Mar 2008) | 3 lines
Applied patch #1657 epoll and kqueue wrappers for the select module
The patch adds wrappers for the Linux epoll syscalls and the BSD kqueue syscalls. Thanks to Thomas Herve and the Twisted people for their support and help.
TODO: Finish documentation documentation
........
2008-03-21 21:47:35 -03:00
|
|
|
|
2023-12-23 21:07:52 -04:00
|
|
|
def test_no_repr_is_called_on_signal_handler(self):
|
|
|
|
# See https://github.com/python/cpython/issues/112559.
|
|
|
|
|
|
|
|
class MyArgument:
|
|
|
|
def __init__(self):
|
|
|
|
self.repr_count = 0
|
|
|
|
|
|
|
|
def __repr__(self):
|
|
|
|
self.repr_count += 1
|
|
|
|
return super().__repr__()
|
|
|
|
|
|
|
|
argument = MyArgument()
|
|
|
|
self.assertEqual(0, argument.repr_count)
|
|
|
|
|
|
|
|
handler = self.create_handler_with_partial(argument)
|
|
|
|
hup = signal.signal(signal.SIGHUP, handler)
|
|
|
|
self.assertIsInstance(hup, signal.Handlers)
|
|
|
|
self.assertEqual(signal.getsignal(signal.SIGHUP), handler)
|
|
|
|
signal.signal(signal.SIGHUP, hup)
|
|
|
|
self.assertEqual(signal.getsignal(signal.SIGHUP), hup)
|
|
|
|
self.assertEqual(0, argument.repr_count)
|
|
|
|
|
2018-03-12 10:42:34 -03:00
|
|
|
def test_strsignal(self):
|
2018-03-12 16:03:14 -03:00
|
|
|
self.assertIn("Interrupt", signal.strsignal(signal.SIGINT))
|
|
|
|
self.assertIn("Terminated", signal.strsignal(signal.SIGTERM))
|
2018-08-23 10:27:19 -03:00
|
|
|
self.assertIn("Hangup", signal.strsignal(signal.SIGHUP))
|
2018-03-12 10:42:34 -03:00
|
|
|
|
2016-03-15 07:12:35 -03:00
|
|
|
# Issue 3864, unknown if this affects earlier versions of freebsd also
|
|
|
|
def test_interprocess_signal(self):
|
|
|
|
dirname = os.path.dirname(__file__)
|
|
|
|
script = os.path.join(dirname, 'signalinterproctester.py')
|
|
|
|
assert_python_ok(script)
|
|
|
|
|
2022-05-19 07:43:16 -03:00
|
|
|
@unittest.skipUnless(
|
|
|
|
hasattr(signal, "valid_signals"),
|
|
|
|
"requires signal.valid_signals"
|
|
|
|
)
|
2018-05-04 08:00:50 -03:00
|
|
|
def test_valid_signals(self):
|
|
|
|
s = signal.valid_signals()
|
|
|
|
self.assertIsInstance(s, set)
|
|
|
|
self.assertIn(signal.Signals.SIGINT, s)
|
|
|
|
self.assertIn(signal.Signals.SIGALRM, s)
|
|
|
|
self.assertNotIn(0, s)
|
|
|
|
self.assertNotIn(signal.NSIG, s)
|
|
|
|
self.assertLess(len(s), signal.NSIG)
|
|
|
|
|
2022-04-25 19:13:31 -03:00
|
|
|
# gh-91145: Make sure that all SIGxxx constants exposed by the Python
|
|
|
|
# signal module have a number in the [0; signal.NSIG-1] range.
|
|
|
|
for name in dir(signal):
|
|
|
|
if not name.startswith("SIG"):
|
|
|
|
continue
|
2022-05-05 19:07:53 -03:00
|
|
|
if name in {"SIG_IGN", "SIG_DFL"}:
|
|
|
|
# SIG_IGN and SIG_DFL are pointers
|
|
|
|
continue
|
2022-04-25 19:13:31 -03:00
|
|
|
with self.subTest(name=name):
|
|
|
|
signum = getattr(signal, name)
|
|
|
|
self.assertGreaterEqual(signum, 0)
|
|
|
|
self.assertLess(signum, signal.NSIG)
|
|
|
|
|
2019-02-16 16:57:40 -04:00
|
|
|
@unittest.skipUnless(sys.executable, "sys.executable required.")
|
2022-01-25 03:09:06 -04:00
|
|
|
@support.requires_subprocess()
|
2019-02-16 16:57:40 -04:00
|
|
|
def test_keyboard_interrupt_exit_code(self):
|
|
|
|
"""KeyboardInterrupt triggers exit via SIGINT."""
|
|
|
|
process = subprocess.run(
|
|
|
|
[sys.executable, "-c",
|
2019-02-16 21:22:39 -04:00
|
|
|
"import os, signal, time\n"
|
|
|
|
"os.kill(os.getpid(), signal.SIGINT)\n"
|
|
|
|
"for _ in range(999): time.sleep(0.01)"],
|
2019-02-16 16:57:40 -04:00
|
|
|
stderr=subprocess.PIPE)
|
|
|
|
self.assertIn(b"KeyboardInterrupt", process.stderr)
|
|
|
|
self.assertEqual(process.returncode, -signal.SIGINT)
|
2019-02-16 21:22:39 -04:00
|
|
|
# Caveat: The exit code is insufficient to guarantee we actually died
|
|
|
|
# via a signal. POSIX shells do more than look at the 8 bit value.
|
|
|
|
# Writing an automation friendly test of an interactive shell
|
|
|
|
# to confirm that our process died via a SIGINT proved too complex.
|
2019-02-16 16:57:40 -04:00
|
|
|
|
Merged revisions 61687-61688,61696,61700,61704-61705,61707-61709,61711-61712,61714-61716,61718-61722 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61687 | jeffrey.yasskin | 2008-03-21 06:02:44 +0100 (Fri, 21 Mar 2008) | 2 lines
Speed up test_signal from ~24s to 4s by avoiding nearly all of the sleep calls.
........
r61688 | jeffrey.yasskin | 2008-03-21 06:51:37 +0100 (Fri, 21 Mar 2008) | 5 lines
Try to fix test_signal breakages on Linux due to r61687. It appears that at
least two of the linux build bots aren't leaving zombie processes around for
os.waitpid to wait for, causing ECHILD errors. This would be a symptom of a bug
somewhere, but probably not in signal itself.
........
r61696 | georg.brandl | 2008-03-21 15:32:33 +0100 (Fri, 21 Mar 2008) | 2 lines
Mark the descitems in the tutorial as "noindex" so that :meth: cross-refs don't link to them.
........
r61700 | georg.brandl | 2008-03-21 18:19:29 +0100 (Fri, 21 Mar 2008) | 2 lines
Fix markup.
........
r61704 | jeffrey.yasskin | 2008-03-21 19:25:06 +0100 (Fri, 21 Mar 2008) | 3 lines
Try to fix test_signal on FreeBSD. I'm assuming that os.kill is failing to
raise a signal, but switching to subprocess makes the code cleaner anyway.
........
r61705 | jeffrey.yasskin | 2008-03-21 19:48:04 +0100 (Fri, 21 Mar 2008) | 7 lines
Speed test_threading up from 14s to .5s, and avoid a deadlock on certain
failures. The test for enumerate-after-join is now a little less rigorous, but
the bug it references says the error happened in the first couple iterations,
so 100 iterations should still be enough.
cProfile was useful for identifying the slow tests here.
........
r61707 | georg.brandl | 2008-03-21 20:14:38 +0100 (Fri, 21 Mar 2008) | 2 lines
Fix a code block in __future__ docs.
........
r61708 | georg.brandl | 2008-03-21 20:20:21 +0100 (Fri, 21 Mar 2008) | 2 lines
Add docs for __func__ and __self__ on methods.
........
r61709 | georg.brandl | 2008-03-21 20:37:57 +0100 (Fri, 21 Mar 2008) | 2 lines
Add docs for print_function and future_builtins. Fixes #2442.
........
r61711 | georg.brandl | 2008-03-21 20:54:00 +0100 (Fri, 21 Mar 2008) | 2 lines
#2136: allow single quotes in realm spec.
........
r61712 | georg.brandl | 2008-03-21 21:01:51 +0100 (Fri, 21 Mar 2008) | 3 lines
Issue #2432: give DictReader the dialect and line_num attributes
advertised in the docs.
........
r61714 | georg.brandl | 2008-03-21 21:11:46 +0100 (Fri, 21 Mar 2008) | 2 lines
#2358: add py3k warning to sys.exc_clear().
........
r61715 | georg.brandl | 2008-03-21 21:21:46 +0100 (Fri, 21 Mar 2008) | 2 lines
#2346/#2347: add py3k warning for __methods__ and __members__. Patch by Jack Diederich.
........
r61716 | georg.brandl | 2008-03-21 21:38:24 +0100 (Fri, 21 Mar 2008) | 2 lines
#2348: add py3k warning for file.softspace.
........
r61718 | georg.brandl | 2008-03-21 21:55:20 +0100 (Fri, 21 Mar 2008) | 2 lines
#2160: document PyImport_GetImporter.
........
r61719 | georg.brandl | 2008-03-21 21:55:51 +0100 (Fri, 21 Mar 2008) | 2 lines
Update doc ACKS.
........
r61720 | steven.bethard | 2008-03-21 22:01:18 +0100 (Fri, 21 Mar 2008) | 1 line
Replace hack in regrtest.py with use of sys.py3kwarning.
........
r61721 | georg.brandl | 2008-03-21 22:05:03 +0100 (Fri, 21 Mar 2008) | 2 lines
Add missing versionadded tag.
........
r61722 | christian.heimes | 2008-03-22 00:49:44 +0100 (Sat, 22 Mar 2008) | 3 lines
Applied patch #1657 epoll and kqueue wrappers for the select module
The patch adds wrappers for the Linux epoll syscalls and the BSD kqueue syscalls. Thanks to Thomas Herve and the Twisted people for their support and help.
TODO: Finish documentation documentation
........
2008-03-21 21:47:35 -03:00
|
|
|
|
2010-08-06 16:34:52 -03:00
|
|
|
@unittest.skipUnless(sys.platform == "win32", "Windows specific")
|
|
|
|
class WindowsSignalTests(unittest.TestCase):
|
2018-05-04 08:00:50 -03:00
|
|
|
|
|
|
|
def test_valid_signals(self):
|
|
|
|
s = signal.valid_signals()
|
|
|
|
self.assertIsInstance(s, set)
|
|
|
|
self.assertGreaterEqual(len(s), 6)
|
|
|
|
self.assertIn(signal.Signals.SIGINT, s)
|
|
|
|
self.assertNotIn(0, s)
|
|
|
|
self.assertNotIn(signal.NSIG, s)
|
|
|
|
self.assertLess(len(s), signal.NSIG)
|
|
|
|
|
2010-08-06 16:34:52 -03:00
|
|
|
def test_issue9324(self):
|
2010-10-01 12:09:53 -03:00
|
|
|
# Updated for issue #10003, adding SIGBREAK
|
2010-08-06 16:34:52 -03:00
|
|
|
handler = lambda x, y: None
|
2013-08-03 09:56:30 -03:00
|
|
|
checked = set()
|
2010-10-01 12:09:53 -03:00
|
|
|
for sig in (signal.SIGABRT, signal.SIGBREAK, signal.SIGFPE,
|
|
|
|
signal.SIGILL, signal.SIGINT, signal.SIGSEGV,
|
|
|
|
signal.SIGTERM):
|
2013-08-03 09:56:30 -03:00
|
|
|
# Set and then reset a handler for signals that work on windows.
|
|
|
|
# Issue #18396, only for signals without a C-level handler.
|
|
|
|
if signal.getsignal(sig) is not None:
|
|
|
|
signal.signal(sig, signal.signal(sig, handler))
|
|
|
|
checked.add(sig)
|
|
|
|
# Issue #18396: Ensure the above loop at least tested *something*
|
|
|
|
self.assertTrue(checked)
|
2010-08-06 16:34:52 -03:00
|
|
|
|
|
|
|
with self.assertRaises(ValueError):
|
|
|
|
signal.signal(-1, handler)
|
2010-08-07 00:52:38 -03:00
|
|
|
|
|
|
|
with self.assertRaises(ValueError):
|
|
|
|
signal.signal(7, handler)
|
2010-08-06 16:34:52 -03:00
|
|
|
|
2019-02-16 16:57:40 -04:00
|
|
|
@unittest.skipUnless(sys.executable, "sys.executable required.")
|
2022-01-25 03:09:06 -04:00
|
|
|
@support.requires_subprocess()
|
2019-02-16 16:57:40 -04:00
|
|
|
def test_keyboard_interrupt_exit_code(self):
|
|
|
|
"""KeyboardInterrupt triggers an exit using STATUS_CONTROL_C_EXIT."""
|
|
|
|
# We don't test via os.kill(os.getpid(), signal.CTRL_C_EVENT) here
|
|
|
|
# as that requires setting up a console control handler in a child
|
|
|
|
# in its own process group. Doable, but quite complicated. (see
|
|
|
|
# @eryksun on https://github.com/python/cpython/pull/11862)
|
|
|
|
process = subprocess.run(
|
|
|
|
[sys.executable, "-c", "raise KeyboardInterrupt"],
|
|
|
|
stderr=subprocess.PIPE)
|
|
|
|
self.assertIn(b"KeyboardInterrupt", process.stderr)
|
|
|
|
STATUS_CONTROL_C_EXIT = 0xC000013A
|
|
|
|
self.assertEqual(process.returncode, STATUS_CONTROL_C_EXIT)
|
|
|
|
|
2010-08-06 16:34:52 -03:00
|
|
|
|
2013-01-18 01:10:24 -04:00
|
|
|
class WakeupFDTests(unittest.TestCase):
|
|
|
|
|
2017-12-18 00:10:18 -04:00
|
|
|
def test_invalid_call(self):
|
|
|
|
# First parameter is positional-only
|
|
|
|
with self.assertRaises(TypeError):
|
|
|
|
signal.set_wakeup_fd(signum=signal.SIGINT)
|
|
|
|
|
|
|
|
# warn_on_full_buffer is a keyword-only parameter
|
|
|
|
with self.assertRaises(TypeError):
|
|
|
|
signal.set_wakeup_fd(signal.SIGINT, False)
|
|
|
|
|
2013-01-18 01:10:24 -04:00
|
|
|
def test_invalid_fd(self):
|
2020-08-03 13:41:24 -03:00
|
|
|
fd = os_helper.make_bad_fd()
|
2014-07-21 12:17:28 -03:00
|
|
|
self.assertRaises((ValueError, OSError),
|
|
|
|
signal.set_wakeup_fd, fd)
|
2013-01-18 01:10:24 -04:00
|
|
|
|
2022-05-19 07:43:16 -03:00
|
|
|
@unittest.skipUnless(support.has_socket_support, "needs working sockets.")
|
2014-07-29 18:31:34 -03:00
|
|
|
def test_invalid_socket(self):
|
|
|
|
sock = socket.socket()
|
|
|
|
fd = sock.fileno()
|
|
|
|
sock.close()
|
|
|
|
self.assertRaises((ValueError, OSError),
|
|
|
|
signal.set_wakeup_fd, fd)
|
|
|
|
|
2022-03-15 13:14:15 -03:00
|
|
|
# Emscripten does not support fstat on pipes yet.
|
|
|
|
# https://github.com/emscripten-core/emscripten/issues/16414
|
|
|
|
@unittest.skipIf(support.is_emscripten, "Emscripten cannot fstat pipes.")
|
2022-05-16 04:37:30 -03:00
|
|
|
@unittest.skipUnless(hasattr(os, "pipe"), "requires os.pipe()")
|
2014-07-21 07:30:22 -03:00
|
|
|
def test_set_wakeup_fd_result(self):
|
2014-07-24 17:51:05 -03:00
|
|
|
r1, w1 = os.pipe()
|
|
|
|
self.addCleanup(os.close, r1)
|
|
|
|
self.addCleanup(os.close, w1)
|
|
|
|
r2, w2 = os.pipe()
|
|
|
|
self.addCleanup(os.close, r2)
|
|
|
|
self.addCleanup(os.close, w2)
|
|
|
|
|
2014-08-27 09:02:36 -03:00
|
|
|
if hasattr(os, 'set_blocking'):
|
|
|
|
os.set_blocking(w1, False)
|
|
|
|
os.set_blocking(w2, False)
|
2014-08-27 07:59:44 -03:00
|
|
|
|
2014-07-24 17:51:05 -03:00
|
|
|
signal.set_wakeup_fd(w1)
|
2014-07-24 17:55:12 -03:00
|
|
|
self.assertEqual(signal.set_wakeup_fd(w2), w1)
|
|
|
|
self.assertEqual(signal.set_wakeup_fd(-1), w2)
|
|
|
|
self.assertEqual(signal.set_wakeup_fd(-1), -1)
|
2014-07-21 07:30:22 -03:00
|
|
|
|
2022-03-15 13:14:15 -03:00
|
|
|
@unittest.skipIf(support.is_emscripten, "Emscripten cannot fstat pipes.")
|
2022-05-19 07:43:16 -03:00
|
|
|
@unittest.skipUnless(support.has_socket_support, "needs working sockets.")
|
2014-07-29 18:31:34 -03:00
|
|
|
def test_set_wakeup_fd_socket_result(self):
|
|
|
|
sock1 = socket.socket()
|
|
|
|
self.addCleanup(sock1.close)
|
2014-08-27 07:59:44 -03:00
|
|
|
sock1.setblocking(False)
|
2014-07-29 18:31:34 -03:00
|
|
|
fd1 = sock1.fileno()
|
|
|
|
|
|
|
|
sock2 = socket.socket()
|
|
|
|
self.addCleanup(sock2.close)
|
2014-08-27 07:59:44 -03:00
|
|
|
sock2.setblocking(False)
|
2014-07-29 18:31:34 -03:00
|
|
|
fd2 = sock2.fileno()
|
|
|
|
|
|
|
|
signal.set_wakeup_fd(fd1)
|
2014-07-30 05:03:03 -03:00
|
|
|
self.assertEqual(signal.set_wakeup_fd(fd2), fd1)
|
|
|
|
self.assertEqual(signal.set_wakeup_fd(-1), fd2)
|
|
|
|
self.assertEqual(signal.set_wakeup_fd(-1), -1)
|
2014-07-29 18:31:34 -03:00
|
|
|
|
2014-08-27 07:59:44 -03:00
|
|
|
# On Windows, files are always blocking and Windows does not provide a
|
|
|
|
# function to test if a socket is in non-blocking mode.
|
|
|
|
@unittest.skipIf(sys.platform == "win32", "tests specific to POSIX")
|
2022-03-15 13:14:15 -03:00
|
|
|
@unittest.skipIf(support.is_emscripten, "Emscripten cannot fstat pipes.")
|
2022-05-16 04:37:30 -03:00
|
|
|
@unittest.skipUnless(hasattr(os, "pipe"), "requires os.pipe()")
|
2014-08-27 07:59:44 -03:00
|
|
|
def test_set_wakeup_fd_blocking(self):
|
|
|
|
rfd, wfd = os.pipe()
|
|
|
|
self.addCleanup(os.close, rfd)
|
|
|
|
self.addCleanup(os.close, wfd)
|
|
|
|
|
|
|
|
# fd must be non-blocking
|
|
|
|
os.set_blocking(wfd, True)
|
|
|
|
with self.assertRaises(ValueError) as cm:
|
|
|
|
signal.set_wakeup_fd(wfd)
|
|
|
|
self.assertEqual(str(cm.exception),
|
|
|
|
"the fd %s must be in non-blocking mode" % wfd)
|
|
|
|
|
|
|
|
# non-blocking is ok
|
|
|
|
os.set_blocking(wfd, False)
|
|
|
|
signal.set_wakeup_fd(wfd)
|
|
|
|
signal.set_wakeup_fd(-1)
|
|
|
|
|
2013-01-18 01:10:24 -04:00
|
|
|
|
2010-08-06 16:34:52 -03:00
|
|
|
@unittest.skipIf(sys.platform == "win32", "Not valid on Windows")
|
Merged revisions 59565-59594 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59568 | facundo.batista | 2007-12-19 13:53:01 +0100 (Wed, 19 Dec 2007) | 3 lines
Some minor cleanups. Thanks Mark Dickinson.
........
r59573 | raymond.hettinger | 2007-12-19 19:13:31 +0100 (Wed, 19 Dec 2007) | 1 line
Fix issue 1661: Flags argument silently ignored in re functions with compiled regexes.
........
r59574 | guido.van.rossum | 2007-12-19 20:41:06 +0100 (Wed, 19 Dec 2007) | 7 lines
Patch #1583 by Adam Olsen.
This adds signal.set_wakeup_fd(fd) which sets a file descriptor to
which a zero byte will be written whenever a C exception handler runs.
I added a simple C API as well, PySignal_SetWakeupFd(fd).
........
r59575 | raymond.hettinger | 2007-12-19 23:14:34 +0100 (Wed, 19 Dec 2007) | 1 line
Bigger range for non-extended opargs.
........
r59576 | guido.van.rossum | 2007-12-19 23:51:13 +0100 (Wed, 19 Dec 2007) | 5 lines
Patch #1549 by Thomas Herve.
This changes the rules for when __hash__ is inherited slightly,
by allowing it to be inherited when one or more of __lt__, __le__,
__gt__, __ge__ are overridden, as long as __eq__ and __ne__ aren't.
........
r59577 | raymond.hettinger | 2007-12-20 02:25:05 +0100 (Thu, 20 Dec 2007) | 1 line
Add comments
........
r59578 | brett.cannon | 2007-12-20 11:09:52 +0100 (Thu, 20 Dec 2007) | 3 lines
Add tests for the warnings module; specifically formatwarning and showwarning.
Still need tests for warn_explicit and simplefilter.
........
r59582 | guido.van.rossum | 2007-12-20 18:28:10 +0100 (Thu, 20 Dec 2007) | 2 lines
Patch #1672 by Joseph Armbruster. Use tempdir() to get a temporary directory.
........
r59584 | georg.brandl | 2007-12-20 22:03:02 +0100 (Thu, 20 Dec 2007) | 2 lines
Fix refleak introduced in r59576.
........
r59586 | guido.van.rossum | 2007-12-21 00:48:28 +0100 (Fri, 21 Dec 2007) | 4 lines
Improve performance of built-in any()/all() by avoiding PyIter_Next() --
using a trick found in ifilter().
Feel free to backport to 2.5.
........
r59591 | andrew.kuchling | 2007-12-22 18:27:02 +0100 (Sat, 22 Dec 2007) | 1 line
Add item
........
2007-12-24 04:52:31 -04:00
|
|
|
class WakeupSignalTests(unittest.TestCase):
|
2014-07-21 07:30:22 -03:00
|
|
|
@unittest.skipIf(_testcapi is None, 'need _testcapi')
|
2011-10-02 13:36:05 -03:00
|
|
|
def check_wakeup(self, test_body, *signals, ordered=True):
|
2011-07-04 12:49:40 -03:00
|
|
|
# use a subprocess to have only one thread
|
2011-07-04 12:35:10 -03:00
|
|
|
code = """if 1:
|
2014-07-21 07:30:22 -03:00
|
|
|
import _testcapi
|
2011-07-04 12:35:10 -03:00
|
|
|
import os
|
|
|
|
import signal
|
2011-07-04 12:49:40 -03:00
|
|
|
import struct
|
Merged revisions 59565-59594 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59568 | facundo.batista | 2007-12-19 13:53:01 +0100 (Wed, 19 Dec 2007) | 3 lines
Some minor cleanups. Thanks Mark Dickinson.
........
r59573 | raymond.hettinger | 2007-12-19 19:13:31 +0100 (Wed, 19 Dec 2007) | 1 line
Fix issue 1661: Flags argument silently ignored in re functions with compiled regexes.
........
r59574 | guido.van.rossum | 2007-12-19 20:41:06 +0100 (Wed, 19 Dec 2007) | 7 lines
Patch #1583 by Adam Olsen.
This adds signal.set_wakeup_fd(fd) which sets a file descriptor to
which a zero byte will be written whenever a C exception handler runs.
I added a simple C API as well, PySignal_SetWakeupFd(fd).
........
r59575 | raymond.hettinger | 2007-12-19 23:14:34 +0100 (Wed, 19 Dec 2007) | 1 line
Bigger range for non-extended opargs.
........
r59576 | guido.van.rossum | 2007-12-19 23:51:13 +0100 (Wed, 19 Dec 2007) | 5 lines
Patch #1549 by Thomas Herve.
This changes the rules for when __hash__ is inherited slightly,
by allowing it to be inherited when one or more of __lt__, __le__,
__gt__, __ge__ are overridden, as long as __eq__ and __ne__ aren't.
........
r59577 | raymond.hettinger | 2007-12-20 02:25:05 +0100 (Thu, 20 Dec 2007) | 1 line
Add comments
........
r59578 | brett.cannon | 2007-12-20 11:09:52 +0100 (Thu, 20 Dec 2007) | 3 lines
Add tests for the warnings module; specifically formatwarning and showwarning.
Still need tests for warn_explicit and simplefilter.
........
r59582 | guido.van.rossum | 2007-12-20 18:28:10 +0100 (Thu, 20 Dec 2007) | 2 lines
Patch #1672 by Joseph Armbruster. Use tempdir() to get a temporary directory.
........
r59584 | georg.brandl | 2007-12-20 22:03:02 +0100 (Thu, 20 Dec 2007) | 2 lines
Fix refleak introduced in r59576.
........
r59586 | guido.van.rossum | 2007-12-21 00:48:28 +0100 (Fri, 21 Dec 2007) | 4 lines
Improve performance of built-in any()/all() by avoiding PyIter_Next() --
using a trick found in ifilter().
Feel free to backport to 2.5.
........
r59591 | andrew.kuchling | 2007-12-22 18:27:02 +0100 (Sat, 22 Dec 2007) | 1 line
Add item
........
2007-12-24 04:52:31 -04:00
|
|
|
|
2011-07-04 12:49:40 -03:00
|
|
|
signals = {!r}
|
2011-05-24 21:35:58 -03:00
|
|
|
|
2011-07-04 12:35:10 -03:00
|
|
|
def handler(signum, frame):
|
|
|
|
pass
|
2011-05-07 21:03:15 -03:00
|
|
|
|
2011-07-04 12:49:40 -03:00
|
|
|
def check_signum(signals):
|
|
|
|
data = os.read(read, len(signals)+1)
|
|
|
|
raised = struct.unpack('%uB' % len(data), data)
|
2011-10-02 13:36:05 -03:00
|
|
|
if not {!r}:
|
|
|
|
raised = set(raised)
|
|
|
|
signals = set(signals)
|
2011-07-04 13:06:35 -03:00
|
|
|
if raised != signals:
|
|
|
|
raise Exception("%r != %r" % (raised, signals))
|
Merged revisions 59565-59594 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59568 | facundo.batista | 2007-12-19 13:53:01 +0100 (Wed, 19 Dec 2007) | 3 lines
Some minor cleanups. Thanks Mark Dickinson.
........
r59573 | raymond.hettinger | 2007-12-19 19:13:31 +0100 (Wed, 19 Dec 2007) | 1 line
Fix issue 1661: Flags argument silently ignored in re functions with compiled regexes.
........
r59574 | guido.van.rossum | 2007-12-19 20:41:06 +0100 (Wed, 19 Dec 2007) | 7 lines
Patch #1583 by Adam Olsen.
This adds signal.set_wakeup_fd(fd) which sets a file descriptor to
which a zero byte will be written whenever a C exception handler runs.
I added a simple C API as well, PySignal_SetWakeupFd(fd).
........
r59575 | raymond.hettinger | 2007-12-19 23:14:34 +0100 (Wed, 19 Dec 2007) | 1 line
Bigger range for non-extended opargs.
........
r59576 | guido.van.rossum | 2007-12-19 23:51:13 +0100 (Wed, 19 Dec 2007) | 5 lines
Patch #1549 by Thomas Herve.
This changes the rules for when __hash__ is inherited slightly,
by allowing it to be inherited when one or more of __lt__, __le__,
__gt__, __ge__ are overridden, as long as __eq__ and __ne__ aren't.
........
r59577 | raymond.hettinger | 2007-12-20 02:25:05 +0100 (Thu, 20 Dec 2007) | 1 line
Add comments
........
r59578 | brett.cannon | 2007-12-20 11:09:52 +0100 (Thu, 20 Dec 2007) | 3 lines
Add tests for the warnings module; specifically formatwarning and showwarning.
Still need tests for warn_explicit and simplefilter.
........
r59582 | guido.van.rossum | 2007-12-20 18:28:10 +0100 (Thu, 20 Dec 2007) | 2 lines
Patch #1672 by Joseph Armbruster. Use tempdir() to get a temporary directory.
........
r59584 | georg.brandl | 2007-12-20 22:03:02 +0100 (Thu, 20 Dec 2007) | 2 lines
Fix refleak introduced in r59576.
........
r59586 | guido.van.rossum | 2007-12-21 00:48:28 +0100 (Fri, 21 Dec 2007) | 4 lines
Improve performance of built-in any()/all() by avoiding PyIter_Next() --
using a trick found in ifilter().
Feel free to backport to 2.5.
........
r59591 | andrew.kuchling | 2007-12-22 18:27:02 +0100 (Sat, 22 Dec 2007) | 1 line
Add item
........
2007-12-24 04:52:31 -04:00
|
|
|
|
2011-07-04 12:35:10 -03:00
|
|
|
{}
|
Merged revisions 59565-59594 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59568 | facundo.batista | 2007-12-19 13:53:01 +0100 (Wed, 19 Dec 2007) | 3 lines
Some minor cleanups. Thanks Mark Dickinson.
........
r59573 | raymond.hettinger | 2007-12-19 19:13:31 +0100 (Wed, 19 Dec 2007) | 1 line
Fix issue 1661: Flags argument silently ignored in re functions with compiled regexes.
........
r59574 | guido.van.rossum | 2007-12-19 20:41:06 +0100 (Wed, 19 Dec 2007) | 7 lines
Patch #1583 by Adam Olsen.
This adds signal.set_wakeup_fd(fd) which sets a file descriptor to
which a zero byte will be written whenever a C exception handler runs.
I added a simple C API as well, PySignal_SetWakeupFd(fd).
........
r59575 | raymond.hettinger | 2007-12-19 23:14:34 +0100 (Wed, 19 Dec 2007) | 1 line
Bigger range for non-extended opargs.
........
r59576 | guido.van.rossum | 2007-12-19 23:51:13 +0100 (Wed, 19 Dec 2007) | 5 lines
Patch #1549 by Thomas Herve.
This changes the rules for when __hash__ is inherited slightly,
by allowing it to be inherited when one or more of __lt__, __le__,
__gt__, __ge__ are overridden, as long as __eq__ and __ne__ aren't.
........
r59577 | raymond.hettinger | 2007-12-20 02:25:05 +0100 (Thu, 20 Dec 2007) | 1 line
Add comments
........
r59578 | brett.cannon | 2007-12-20 11:09:52 +0100 (Thu, 20 Dec 2007) | 3 lines
Add tests for the warnings module; specifically formatwarning and showwarning.
Still need tests for warn_explicit and simplefilter.
........
r59582 | guido.van.rossum | 2007-12-20 18:28:10 +0100 (Thu, 20 Dec 2007) | 2 lines
Patch #1672 by Joseph Armbruster. Use tempdir() to get a temporary directory.
........
r59584 | georg.brandl | 2007-12-20 22:03:02 +0100 (Thu, 20 Dec 2007) | 2 lines
Fix refleak introduced in r59576.
........
r59586 | guido.van.rossum | 2007-12-21 00:48:28 +0100 (Fri, 21 Dec 2007) | 4 lines
Improve performance of built-in any()/all() by avoiding PyIter_Next() --
using a trick found in ifilter().
Feel free to backport to 2.5.
........
r59591 | andrew.kuchling | 2007-12-22 18:27:02 +0100 (Sat, 22 Dec 2007) | 1 line
Add item
........
2007-12-24 04:52:31 -04:00
|
|
|
|
2011-07-04 12:35:10 -03:00
|
|
|
signal.signal(signal.SIGALRM, handler)
|
|
|
|
read, write = os.pipe()
|
2014-07-29 17:32:47 -03:00
|
|
|
os.set_blocking(write, False)
|
2011-07-04 12:35:10 -03:00
|
|
|
signal.set_wakeup_fd(write)
|
2011-05-07 21:03:15 -03:00
|
|
|
|
2011-07-04 12:35:10 -03:00
|
|
|
test()
|
2011-07-04 12:49:40 -03:00
|
|
|
check_signum(signals)
|
Merged revisions 59565-59594 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59568 | facundo.batista | 2007-12-19 13:53:01 +0100 (Wed, 19 Dec 2007) | 3 lines
Some minor cleanups. Thanks Mark Dickinson.
........
r59573 | raymond.hettinger | 2007-12-19 19:13:31 +0100 (Wed, 19 Dec 2007) | 1 line
Fix issue 1661: Flags argument silently ignored in re functions with compiled regexes.
........
r59574 | guido.van.rossum | 2007-12-19 20:41:06 +0100 (Wed, 19 Dec 2007) | 7 lines
Patch #1583 by Adam Olsen.
This adds signal.set_wakeup_fd(fd) which sets a file descriptor to
which a zero byte will be written whenever a C exception handler runs.
I added a simple C API as well, PySignal_SetWakeupFd(fd).
........
r59575 | raymond.hettinger | 2007-12-19 23:14:34 +0100 (Wed, 19 Dec 2007) | 1 line
Bigger range for non-extended opargs.
........
r59576 | guido.van.rossum | 2007-12-19 23:51:13 +0100 (Wed, 19 Dec 2007) | 5 lines
Patch #1549 by Thomas Herve.
This changes the rules for when __hash__ is inherited slightly,
by allowing it to be inherited when one or more of __lt__, __le__,
__gt__, __ge__ are overridden, as long as __eq__ and __ne__ aren't.
........
r59577 | raymond.hettinger | 2007-12-20 02:25:05 +0100 (Thu, 20 Dec 2007) | 1 line
Add comments
........
r59578 | brett.cannon | 2007-12-20 11:09:52 +0100 (Thu, 20 Dec 2007) | 3 lines
Add tests for the warnings module; specifically formatwarning and showwarning.
Still need tests for warn_explicit and simplefilter.
........
r59582 | guido.van.rossum | 2007-12-20 18:28:10 +0100 (Thu, 20 Dec 2007) | 2 lines
Patch #1672 by Joseph Armbruster. Use tempdir() to get a temporary directory.
........
r59584 | georg.brandl | 2007-12-20 22:03:02 +0100 (Thu, 20 Dec 2007) | 2 lines
Fix refleak introduced in r59576.
........
r59586 | guido.van.rossum | 2007-12-21 00:48:28 +0100 (Fri, 21 Dec 2007) | 4 lines
Improve performance of built-in any()/all() by avoiding PyIter_Next() --
using a trick found in ifilter().
Feel free to backport to 2.5.
........
r59591 | andrew.kuchling | 2007-12-22 18:27:02 +0100 (Sat, 22 Dec 2007) | 1 line
Add item
........
2007-12-24 04:52:31 -04:00
|
|
|
|
2011-07-04 12:35:10 -03:00
|
|
|
os.close(read)
|
|
|
|
os.close(write)
|
2014-04-04 10:34:17 -03:00
|
|
|
""".format(tuple(map(int, signals)), ordered, test_body)
|
2011-05-24 21:35:58 -03:00
|
|
|
|
2011-07-04 12:35:10 -03:00
|
|
|
assert_python_ok('-c', code)
|
2011-05-24 21:35:58 -03:00
|
|
|
|
2014-07-21 07:30:22 -03:00
|
|
|
@unittest.skipIf(_testcapi is None, 'need _testcapi')
|
2022-05-16 04:37:30 -03:00
|
|
|
@unittest.skipUnless(hasattr(os, "pipe"), "requires os.pipe()")
|
2013-08-17 15:27:56 -03:00
|
|
|
def test_wakeup_write_error(self):
|
|
|
|
# Issue #16105: write() errors in the C signal handler should not
|
|
|
|
# pass silently.
|
|
|
|
# Use a subprocess to have only one thread.
|
|
|
|
code = """if 1:
|
2014-07-21 07:30:22 -03:00
|
|
|
import _testcapi
|
2013-08-17 15:27:56 -03:00
|
|
|
import errno
|
|
|
|
import os
|
|
|
|
import signal
|
|
|
|
import sys
|
|
|
|
from test.support import captured_stderr
|
|
|
|
|
|
|
|
def handler(signum, frame):
|
|
|
|
1/0
|
|
|
|
|
|
|
|
signal.signal(signal.SIGALRM, handler)
|
|
|
|
r, w = os.pipe()
|
2014-07-29 17:32:47 -03:00
|
|
|
os.set_blocking(r, False)
|
2013-08-17 15:27:56 -03:00
|
|
|
|
|
|
|
# Set wakeup_fd a read-only file descriptor to trigger the error
|
|
|
|
signal.set_wakeup_fd(r)
|
|
|
|
try:
|
|
|
|
with captured_stderr() as err:
|
2019-01-08 05:58:25 -04:00
|
|
|
signal.raise_signal(signal.SIGALRM)
|
2013-08-17 15:27:56 -03:00
|
|
|
except ZeroDivisionError:
|
|
|
|
# An ignored exception should have been printed out on stderr
|
|
|
|
err = err.getvalue()
|
|
|
|
if ('Exception ignored when trying to write to the signal wakeup fd'
|
|
|
|
not in err):
|
|
|
|
raise AssertionError(err)
|
|
|
|
if ('OSError: [Errno %d]' % errno.EBADF) not in err:
|
|
|
|
raise AssertionError(err)
|
|
|
|
else:
|
|
|
|
raise AssertionError("ZeroDivisionError not raised")
|
2014-07-21 07:30:22 -03:00
|
|
|
|
|
|
|
os.close(r)
|
|
|
|
os.close(w)
|
2013-08-17 15:27:56 -03:00
|
|
|
"""
|
2013-08-17 16:43:47 -03:00
|
|
|
r, w = os.pipe()
|
|
|
|
try:
|
|
|
|
os.write(r, b'x')
|
|
|
|
except OSError:
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
self.skipTest("OS doesn't report write() error on the read end of a pipe")
|
|
|
|
finally:
|
|
|
|
os.close(r)
|
|
|
|
os.close(w)
|
2013-08-17 15:27:56 -03:00
|
|
|
|
|
|
|
assert_python_ok('-c', code)
|
|
|
|
|
Merged revisions 59565-59594 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59568 | facundo.batista | 2007-12-19 13:53:01 +0100 (Wed, 19 Dec 2007) | 3 lines
Some minor cleanups. Thanks Mark Dickinson.
........
r59573 | raymond.hettinger | 2007-12-19 19:13:31 +0100 (Wed, 19 Dec 2007) | 1 line
Fix issue 1661: Flags argument silently ignored in re functions with compiled regexes.
........
r59574 | guido.van.rossum | 2007-12-19 20:41:06 +0100 (Wed, 19 Dec 2007) | 7 lines
Patch #1583 by Adam Olsen.
This adds signal.set_wakeup_fd(fd) which sets a file descriptor to
which a zero byte will be written whenever a C exception handler runs.
I added a simple C API as well, PySignal_SetWakeupFd(fd).
........
r59575 | raymond.hettinger | 2007-12-19 23:14:34 +0100 (Wed, 19 Dec 2007) | 1 line
Bigger range for non-extended opargs.
........
r59576 | guido.van.rossum | 2007-12-19 23:51:13 +0100 (Wed, 19 Dec 2007) | 5 lines
Patch #1549 by Thomas Herve.
This changes the rules for when __hash__ is inherited slightly,
by allowing it to be inherited when one or more of __lt__, __le__,
__gt__, __ge__ are overridden, as long as __eq__ and __ne__ aren't.
........
r59577 | raymond.hettinger | 2007-12-20 02:25:05 +0100 (Thu, 20 Dec 2007) | 1 line
Add comments
........
r59578 | brett.cannon | 2007-12-20 11:09:52 +0100 (Thu, 20 Dec 2007) | 3 lines
Add tests for the warnings module; specifically formatwarning and showwarning.
Still need tests for warn_explicit and simplefilter.
........
r59582 | guido.van.rossum | 2007-12-20 18:28:10 +0100 (Thu, 20 Dec 2007) | 2 lines
Patch #1672 by Joseph Armbruster. Use tempdir() to get a temporary directory.
........
r59584 | georg.brandl | 2007-12-20 22:03:02 +0100 (Thu, 20 Dec 2007) | 2 lines
Fix refleak introduced in r59576.
........
r59586 | guido.van.rossum | 2007-12-21 00:48:28 +0100 (Fri, 21 Dec 2007) | 4 lines
Improve performance of built-in any()/all() by avoiding PyIter_Next() --
using a trick found in ifilter().
Feel free to backport to 2.5.
........
r59591 | andrew.kuchling | 2007-12-22 18:27:02 +0100 (Sat, 22 Dec 2007) | 1 line
Add item
........
2007-12-24 04:52:31 -04:00
|
|
|
def test_wakeup_fd_early(self):
|
2011-07-04 12:35:10 -03:00
|
|
|
self.check_wakeup("""def test():
|
|
|
|
import select
|
|
|
|
import time
|
2011-05-24 21:35:58 -03:00
|
|
|
|
2011-07-04 12:35:10 -03:00
|
|
|
TIMEOUT_FULL = 10
|
|
|
|
TIMEOUT_HALF = 5
|
2011-05-24 21:35:58 -03:00
|
|
|
|
2015-03-30 17:09:14 -03:00
|
|
|
class InterruptSelect(Exception):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def handler(signum, frame):
|
|
|
|
raise InterruptSelect
|
|
|
|
signal.signal(signal.SIGALRM, handler)
|
|
|
|
|
2011-07-04 12:35:10 -03:00
|
|
|
signal.alarm(1)
|
2015-03-19 17:54:09 -03:00
|
|
|
|
2011-07-04 12:35:10 -03:00
|
|
|
# We attempt to get a signal during the sleep,
|
|
|
|
# before select is called
|
2015-03-19 17:54:09 -03:00
|
|
|
try:
|
|
|
|
select.select([], [], [], TIMEOUT_FULL)
|
2015-03-30 17:09:14 -03:00
|
|
|
except InterruptSelect:
|
2015-03-19 17:54:09 -03:00
|
|
|
pass
|
|
|
|
else:
|
|
|
|
raise Exception("select() was not interrupted")
|
|
|
|
|
|
|
|
before_time = time.monotonic()
|
2011-07-04 12:35:10 -03:00
|
|
|
select.select([read], [], [], TIMEOUT_FULL)
|
2015-03-19 17:54:09 -03:00
|
|
|
after_time = time.monotonic()
|
|
|
|
dt = after_time - before_time
|
2011-07-04 13:06:35 -03:00
|
|
|
if dt >= TIMEOUT_HALF:
|
|
|
|
raise Exception("%s >= %s" % (dt, TIMEOUT_HALF))
|
2011-07-04 12:49:40 -03:00
|
|
|
""", signal.SIGALRM)
|
2011-06-24 15:52:27 -03:00
|
|
|
|
2011-07-04 12:35:10 -03:00
|
|
|
def test_wakeup_fd_during(self):
|
|
|
|
self.check_wakeup("""def test():
|
|
|
|
import select
|
|
|
|
import time
|
2011-06-24 15:52:27 -03:00
|
|
|
|
2011-07-04 12:35:10 -03:00
|
|
|
TIMEOUT_FULL = 10
|
|
|
|
TIMEOUT_HALF = 5
|
Merged revisions 59565-59594 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59568 | facundo.batista | 2007-12-19 13:53:01 +0100 (Wed, 19 Dec 2007) | 3 lines
Some minor cleanups. Thanks Mark Dickinson.
........
r59573 | raymond.hettinger | 2007-12-19 19:13:31 +0100 (Wed, 19 Dec 2007) | 1 line
Fix issue 1661: Flags argument silently ignored in re functions with compiled regexes.
........
r59574 | guido.van.rossum | 2007-12-19 20:41:06 +0100 (Wed, 19 Dec 2007) | 7 lines
Patch #1583 by Adam Olsen.
This adds signal.set_wakeup_fd(fd) which sets a file descriptor to
which a zero byte will be written whenever a C exception handler runs.
I added a simple C API as well, PySignal_SetWakeupFd(fd).
........
r59575 | raymond.hettinger | 2007-12-19 23:14:34 +0100 (Wed, 19 Dec 2007) | 1 line
Bigger range for non-extended opargs.
........
r59576 | guido.van.rossum | 2007-12-19 23:51:13 +0100 (Wed, 19 Dec 2007) | 5 lines
Patch #1549 by Thomas Herve.
This changes the rules for when __hash__ is inherited slightly,
by allowing it to be inherited when one or more of __lt__, __le__,
__gt__, __ge__ are overridden, as long as __eq__ and __ne__ aren't.
........
r59577 | raymond.hettinger | 2007-12-20 02:25:05 +0100 (Thu, 20 Dec 2007) | 1 line
Add comments
........
r59578 | brett.cannon | 2007-12-20 11:09:52 +0100 (Thu, 20 Dec 2007) | 3 lines
Add tests for the warnings module; specifically formatwarning and showwarning.
Still need tests for warn_explicit and simplefilter.
........
r59582 | guido.van.rossum | 2007-12-20 18:28:10 +0100 (Thu, 20 Dec 2007) | 2 lines
Patch #1672 by Joseph Armbruster. Use tempdir() to get a temporary directory.
........
r59584 | georg.brandl | 2007-12-20 22:03:02 +0100 (Thu, 20 Dec 2007) | 2 lines
Fix refleak introduced in r59576.
........
r59586 | guido.van.rossum | 2007-12-21 00:48:28 +0100 (Fri, 21 Dec 2007) | 4 lines
Improve performance of built-in any()/all() by avoiding PyIter_Next() --
using a trick found in ifilter().
Feel free to backport to 2.5.
........
r59591 | andrew.kuchling | 2007-12-22 18:27:02 +0100 (Sat, 22 Dec 2007) | 1 line
Add item
........
2007-12-24 04:52:31 -04:00
|
|
|
|
2015-03-30 17:09:14 -03:00
|
|
|
class InterruptSelect(Exception):
|
|
|
|
pass
|
|
|
|
|
|
|
|
def handler(signum, frame):
|
|
|
|
raise InterruptSelect
|
|
|
|
signal.signal(signal.SIGALRM, handler)
|
|
|
|
|
2011-07-04 12:35:10 -03:00
|
|
|
signal.alarm(1)
|
2015-03-19 17:54:09 -03:00
|
|
|
before_time = time.monotonic()
|
2011-07-04 12:35:10 -03:00
|
|
|
# We attempt to get a signal during the select call
|
|
|
|
try:
|
|
|
|
select.select([read], [], [], TIMEOUT_FULL)
|
2015-03-30 17:09:14 -03:00
|
|
|
except InterruptSelect:
|
2011-07-04 12:35:10 -03:00
|
|
|
pass
|
|
|
|
else:
|
2015-03-30 17:09:14 -03:00
|
|
|
raise Exception("select() was not interrupted")
|
2015-03-19 17:54:09 -03:00
|
|
|
after_time = time.monotonic()
|
2011-07-04 12:35:10 -03:00
|
|
|
dt = after_time - before_time
|
2011-07-04 13:06:35 -03:00
|
|
|
if dt >= TIMEOUT_HALF:
|
|
|
|
raise Exception("%s >= %s" % (dt, TIMEOUT_HALF))
|
2011-07-04 12:49:40 -03:00
|
|
|
""", signal.SIGALRM)
|
|
|
|
|
|
|
|
def test_signum(self):
|
|
|
|
self.check_wakeup("""def test():
|
2011-06-24 15:52:27 -03:00
|
|
|
signal.signal(signal.SIGUSR1, handler)
|
2019-01-08 05:58:25 -04:00
|
|
|
signal.raise_signal(signal.SIGUSR1)
|
|
|
|
signal.raise_signal(signal.SIGALRM)
|
2011-07-04 12:49:40 -03:00
|
|
|
""", signal.SIGUSR1, signal.SIGALRM)
|
2011-06-24 15:52:27 -03:00
|
|
|
|
2011-07-04 12:49:40 -03:00
|
|
|
@unittest.skipUnless(hasattr(signal, 'pthread_sigmask'),
|
|
|
|
'need signal.pthread_sigmask()')
|
|
|
|
def test_pending(self):
|
|
|
|
self.check_wakeup("""def test():
|
|
|
|
signum1 = signal.SIGUSR1
|
|
|
|
signum2 = signal.SIGUSR2
|
2011-06-24 15:52:27 -03:00
|
|
|
|
2011-07-04 12:49:40 -03:00
|
|
|
signal.signal(signum1, handler)
|
|
|
|
signal.signal(signum2, handler)
|
Merged revisions 59565-59594 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59568 | facundo.batista | 2007-12-19 13:53:01 +0100 (Wed, 19 Dec 2007) | 3 lines
Some minor cleanups. Thanks Mark Dickinson.
........
r59573 | raymond.hettinger | 2007-12-19 19:13:31 +0100 (Wed, 19 Dec 2007) | 1 line
Fix issue 1661: Flags argument silently ignored in re functions with compiled regexes.
........
r59574 | guido.van.rossum | 2007-12-19 20:41:06 +0100 (Wed, 19 Dec 2007) | 7 lines
Patch #1583 by Adam Olsen.
This adds signal.set_wakeup_fd(fd) which sets a file descriptor to
which a zero byte will be written whenever a C exception handler runs.
I added a simple C API as well, PySignal_SetWakeupFd(fd).
........
r59575 | raymond.hettinger | 2007-12-19 23:14:34 +0100 (Wed, 19 Dec 2007) | 1 line
Bigger range for non-extended opargs.
........
r59576 | guido.van.rossum | 2007-12-19 23:51:13 +0100 (Wed, 19 Dec 2007) | 5 lines
Patch #1549 by Thomas Herve.
This changes the rules for when __hash__ is inherited slightly,
by allowing it to be inherited when one or more of __lt__, __le__,
__gt__, __ge__ are overridden, as long as __eq__ and __ne__ aren't.
........
r59577 | raymond.hettinger | 2007-12-20 02:25:05 +0100 (Thu, 20 Dec 2007) | 1 line
Add comments
........
r59578 | brett.cannon | 2007-12-20 11:09:52 +0100 (Thu, 20 Dec 2007) | 3 lines
Add tests for the warnings module; specifically formatwarning and showwarning.
Still need tests for warn_explicit and simplefilter.
........
r59582 | guido.van.rossum | 2007-12-20 18:28:10 +0100 (Thu, 20 Dec 2007) | 2 lines
Patch #1672 by Joseph Armbruster. Use tempdir() to get a temporary directory.
........
r59584 | georg.brandl | 2007-12-20 22:03:02 +0100 (Thu, 20 Dec 2007) | 2 lines
Fix refleak introduced in r59576.
........
r59586 | guido.van.rossum | 2007-12-21 00:48:28 +0100 (Fri, 21 Dec 2007) | 4 lines
Improve performance of built-in any()/all() by avoiding PyIter_Next() --
using a trick found in ifilter().
Feel free to backport to 2.5.
........
r59591 | andrew.kuchling | 2007-12-22 18:27:02 +0100 (Sat, 22 Dec 2007) | 1 line
Add item
........
2007-12-24 04:52:31 -04:00
|
|
|
|
2011-07-04 12:49:40 -03:00
|
|
|
signal.pthread_sigmask(signal.SIG_BLOCK, (signum1, signum2))
|
2019-01-08 05:58:25 -04:00
|
|
|
signal.raise_signal(signum1)
|
|
|
|
signal.raise_signal(signum2)
|
2011-07-04 12:49:40 -03:00
|
|
|
# Unblocking the 2 signals calls the C signal handler twice
|
|
|
|
signal.pthread_sigmask(signal.SIG_UNBLOCK, (signum1, signum2))
|
2011-10-02 13:36:05 -03:00
|
|
|
""", signal.SIGUSR1, signal.SIGUSR2, ordered=False)
|
Merged revisions 59565-59594 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r59568 | facundo.batista | 2007-12-19 13:53:01 +0100 (Wed, 19 Dec 2007) | 3 lines
Some minor cleanups. Thanks Mark Dickinson.
........
r59573 | raymond.hettinger | 2007-12-19 19:13:31 +0100 (Wed, 19 Dec 2007) | 1 line
Fix issue 1661: Flags argument silently ignored in re functions with compiled regexes.
........
r59574 | guido.van.rossum | 2007-12-19 20:41:06 +0100 (Wed, 19 Dec 2007) | 7 lines
Patch #1583 by Adam Olsen.
This adds signal.set_wakeup_fd(fd) which sets a file descriptor to
which a zero byte will be written whenever a C exception handler runs.
I added a simple C API as well, PySignal_SetWakeupFd(fd).
........
r59575 | raymond.hettinger | 2007-12-19 23:14:34 +0100 (Wed, 19 Dec 2007) | 1 line
Bigger range for non-extended opargs.
........
r59576 | guido.van.rossum | 2007-12-19 23:51:13 +0100 (Wed, 19 Dec 2007) | 5 lines
Patch #1549 by Thomas Herve.
This changes the rules for when __hash__ is inherited slightly,
by allowing it to be inherited when one or more of __lt__, __le__,
__gt__, __ge__ are overridden, as long as __eq__ and __ne__ aren't.
........
r59577 | raymond.hettinger | 2007-12-20 02:25:05 +0100 (Thu, 20 Dec 2007) | 1 line
Add comments
........
r59578 | brett.cannon | 2007-12-20 11:09:52 +0100 (Thu, 20 Dec 2007) | 3 lines
Add tests for the warnings module; specifically formatwarning and showwarning.
Still need tests for warn_explicit and simplefilter.
........
r59582 | guido.van.rossum | 2007-12-20 18:28:10 +0100 (Thu, 20 Dec 2007) | 2 lines
Patch #1672 by Joseph Armbruster. Use tempdir() to get a temporary directory.
........
r59584 | georg.brandl | 2007-12-20 22:03:02 +0100 (Thu, 20 Dec 2007) | 2 lines
Fix refleak introduced in r59576.
........
r59586 | guido.van.rossum | 2007-12-21 00:48:28 +0100 (Fri, 21 Dec 2007) | 4 lines
Improve performance of built-in any()/all() by avoiding PyIter_Next() --
using a trick found in ifilter().
Feel free to backport to 2.5.
........
r59591 | andrew.kuchling | 2007-12-22 18:27:02 +0100 (Sat, 22 Dec 2007) | 1 line
Add item
........
2007-12-24 04:52:31 -04:00
|
|
|
|
|
|
|
|
2014-07-29 18:31:34 -03:00
|
|
|
@unittest.skipUnless(hasattr(socket, 'socketpair'), 'need socket.socketpair')
|
|
|
|
class WakeupSocketSignalTests(unittest.TestCase):
|
|
|
|
|
|
|
|
@unittest.skipIf(_testcapi is None, 'need _testcapi')
|
|
|
|
def test_socket(self):
|
|
|
|
# use a subprocess to have only one thread
|
|
|
|
code = """if 1:
|
|
|
|
import signal
|
|
|
|
import socket
|
|
|
|
import struct
|
|
|
|
import _testcapi
|
|
|
|
|
|
|
|
signum = signal.SIGINT
|
|
|
|
signals = (signum,)
|
|
|
|
|
|
|
|
def handler(signum, frame):
|
|
|
|
pass
|
|
|
|
|
|
|
|
signal.signal(signum, handler)
|
|
|
|
|
|
|
|
read, write = socket.socketpair()
|
|
|
|
write.setblocking(False)
|
|
|
|
signal.set_wakeup_fd(write.fileno())
|
|
|
|
|
2019-01-08 05:58:25 -04:00
|
|
|
signal.raise_signal(signum)
|
2014-07-29 18:31:34 -03:00
|
|
|
|
|
|
|
data = read.recv(1)
|
|
|
|
if not data:
|
|
|
|
raise Exception("no signum written")
|
|
|
|
raised = struct.unpack('B', data)
|
|
|
|
if raised != signals:
|
|
|
|
raise Exception("%r != %r" % (raised, signals))
|
|
|
|
|
|
|
|
read.close()
|
|
|
|
write.close()
|
|
|
|
"""
|
|
|
|
|
|
|
|
assert_python_ok('-c', code)
|
|
|
|
|
|
|
|
@unittest.skipIf(_testcapi is None, 'need _testcapi')
|
|
|
|
def test_send_error(self):
|
|
|
|
# Use a subprocess to have only one thread.
|
|
|
|
if os.name == 'nt':
|
|
|
|
action = 'send'
|
|
|
|
else:
|
|
|
|
action = 'write'
|
|
|
|
code = """if 1:
|
|
|
|
import errno
|
|
|
|
import signal
|
|
|
|
import socket
|
|
|
|
import sys
|
|
|
|
import time
|
|
|
|
import _testcapi
|
|
|
|
from test.support import captured_stderr
|
|
|
|
|
|
|
|
signum = signal.SIGINT
|
|
|
|
|
|
|
|
def handler(signum, frame):
|
|
|
|
pass
|
|
|
|
|
|
|
|
signal.signal(signum, handler)
|
|
|
|
|
|
|
|
read, write = socket.socketpair()
|
|
|
|
read.setblocking(False)
|
|
|
|
write.setblocking(False)
|
|
|
|
|
|
|
|
signal.set_wakeup_fd(write.fileno())
|
|
|
|
|
|
|
|
# Close sockets: send() will fail
|
|
|
|
read.close()
|
|
|
|
write.close()
|
|
|
|
|
|
|
|
with captured_stderr() as err:
|
2019-01-08 05:58:25 -04:00
|
|
|
signal.raise_signal(signum)
|
2014-07-29 18:31:34 -03:00
|
|
|
|
|
|
|
err = err.getvalue()
|
|
|
|
if ('Exception ignored when trying to {action} to the signal wakeup fd'
|
|
|
|
not in err):
|
|
|
|
raise AssertionError(err)
|
|
|
|
""".format(action=action)
|
2017-12-18 00:10:18 -04:00
|
|
|
assert_python_ok('-c', code)
|
|
|
|
|
|
|
|
@unittest.skipIf(_testcapi is None, 'need _testcapi')
|
|
|
|
def test_warn_on_full_buffer(self):
|
|
|
|
# Use a subprocess to have only one thread.
|
|
|
|
if os.name == 'nt':
|
|
|
|
action = 'send'
|
|
|
|
else:
|
|
|
|
action = 'write'
|
|
|
|
code = """if 1:
|
|
|
|
import errno
|
|
|
|
import signal
|
|
|
|
import socket
|
|
|
|
import sys
|
|
|
|
import time
|
|
|
|
import _testcapi
|
|
|
|
from test.support import captured_stderr
|
|
|
|
|
|
|
|
signum = signal.SIGINT
|
|
|
|
|
|
|
|
# This handler will be called, but we intentionally won't read from
|
|
|
|
# the wakeup fd.
|
|
|
|
def handler(signum, frame):
|
|
|
|
pass
|
|
|
|
|
|
|
|
signal.signal(signum, handler)
|
|
|
|
|
|
|
|
read, write = socket.socketpair()
|
|
|
|
|
2018-07-18 13:29:54 -03:00
|
|
|
# Fill the socketpair buffer
|
|
|
|
if sys.platform == 'win32':
|
|
|
|
# bpo-34130: On Windows, sometimes non-blocking send fails to fill
|
|
|
|
# the full socketpair buffer, so use a timeout of 50 ms instead.
|
|
|
|
write.settimeout(0.050)
|
|
|
|
else:
|
|
|
|
write.setblocking(False)
|
|
|
|
|
|
|
|
written = 0
|
2020-11-30 17:48:33 -04:00
|
|
|
if sys.platform == "vxworks":
|
|
|
|
CHUNK_SIZES = (1,)
|
|
|
|
else:
|
|
|
|
# Start with large chunk size to reduce the
|
|
|
|
# number of send needed to fill the buffer.
|
|
|
|
CHUNK_SIZES = (2 ** 16, 2 ** 8, 1)
|
|
|
|
for chunk_size in CHUNK_SIZES:
|
2018-07-18 13:29:54 -03:00
|
|
|
chunk = b"x" * chunk_size
|
|
|
|
try:
|
|
|
|
while True:
|
|
|
|
write.send(chunk)
|
|
|
|
written += chunk_size
|
2020-11-20 04:26:07 -04:00
|
|
|
except (BlockingIOError, TimeoutError):
|
2018-07-18 13:29:54 -03:00
|
|
|
pass
|
|
|
|
|
|
|
|
print(f"%s bytes written into the socketpair" % written, flush=True)
|
|
|
|
|
|
|
|
write.setblocking(False)
|
2017-12-18 00:10:18 -04:00
|
|
|
try:
|
2018-07-18 13:29:54 -03:00
|
|
|
write.send(b"x")
|
2017-12-18 00:10:18 -04:00
|
|
|
except BlockingIOError:
|
2018-07-18 13:29:54 -03:00
|
|
|
# The socketpair buffer seems full
|
2017-12-18 00:10:18 -04:00
|
|
|
pass
|
2018-07-18 13:29:54 -03:00
|
|
|
else:
|
|
|
|
raise AssertionError("%s bytes failed to fill the socketpair "
|
|
|
|
"buffer" % written)
|
2017-12-18 00:10:18 -04:00
|
|
|
|
|
|
|
# By default, we get a warning when a signal arrives
|
2018-07-18 13:29:54 -03:00
|
|
|
msg = ('Exception ignored when trying to {action} '
|
|
|
|
'to the signal wakeup fd')
|
2017-12-18 00:10:18 -04:00
|
|
|
signal.set_wakeup_fd(write.fileno())
|
|
|
|
|
|
|
|
with captured_stderr() as err:
|
2019-01-08 05:58:25 -04:00
|
|
|
signal.raise_signal(signum)
|
2017-12-18 00:10:18 -04:00
|
|
|
|
|
|
|
err = err.getvalue()
|
2018-07-18 13:29:54 -03:00
|
|
|
if msg not in err:
|
|
|
|
raise AssertionError("first set_wakeup_fd() test failed, "
|
|
|
|
"stderr: %r" % err)
|
2017-12-18 00:10:18 -04:00
|
|
|
|
|
|
|
# And also if warn_on_full_buffer=True
|
|
|
|
signal.set_wakeup_fd(write.fileno(), warn_on_full_buffer=True)
|
|
|
|
|
|
|
|
with captured_stderr() as err:
|
2019-01-08 05:58:25 -04:00
|
|
|
signal.raise_signal(signum)
|
2017-12-18 00:10:18 -04:00
|
|
|
|
|
|
|
err = err.getvalue()
|
2018-07-18 13:29:54 -03:00
|
|
|
if msg not in err:
|
|
|
|
raise AssertionError("set_wakeup_fd(warn_on_full_buffer=True) "
|
|
|
|
"test failed, stderr: %r" % err)
|
2017-12-18 00:10:18 -04:00
|
|
|
|
|
|
|
# But not if warn_on_full_buffer=False
|
|
|
|
signal.set_wakeup_fd(write.fileno(), warn_on_full_buffer=False)
|
|
|
|
|
|
|
|
with captured_stderr() as err:
|
2019-01-08 05:58:25 -04:00
|
|
|
signal.raise_signal(signum)
|
2017-12-18 00:10:18 -04:00
|
|
|
|
|
|
|
err = err.getvalue()
|
|
|
|
if err != "":
|
2018-07-18 13:29:54 -03:00
|
|
|
raise AssertionError("set_wakeup_fd(warn_on_full_buffer=False) "
|
|
|
|
"test failed, stderr: %r" % err)
|
2017-12-18 00:10:18 -04:00
|
|
|
|
|
|
|
# And then check the default again, to make sure warn_on_full_buffer
|
|
|
|
# settings don't leak across calls.
|
|
|
|
signal.set_wakeup_fd(write.fileno())
|
|
|
|
|
|
|
|
with captured_stderr() as err:
|
2019-01-08 05:58:25 -04:00
|
|
|
signal.raise_signal(signum)
|
2017-12-18 00:10:18 -04:00
|
|
|
|
|
|
|
err = err.getvalue()
|
2018-07-18 13:29:54 -03:00
|
|
|
if msg not in err:
|
|
|
|
raise AssertionError("second set_wakeup_fd() test failed, "
|
|
|
|
"stderr: %r" % err)
|
2017-12-18 00:10:18 -04:00
|
|
|
|
|
|
|
""".format(action=action)
|
2014-07-29 18:31:34 -03:00
|
|
|
assert_python_ok('-c', code)
|
|
|
|
|
|
|
|
|
2010-08-06 16:34:52 -03:00
|
|
|
@unittest.skipIf(sys.platform == "win32", "Not valid on Windows")
|
2020-11-30 17:48:33 -04:00
|
|
|
@unittest.skipUnless(hasattr(signal, 'siginterrupt'), "needs signal.siginterrupt()")
|
2022-01-25 03:09:06 -04:00
|
|
|
@support.requires_subprocess()
|
2022-05-16 04:37:30 -03:00
|
|
|
@unittest.skipUnless(hasattr(os, "pipe"), "requires os.pipe()")
|
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r60980 | georg.brandl | 2008-02-23 16:02:28 +0100 (Sat, 23 Feb 2008) | 2 lines
#1492: allow overriding BaseHTTPServer's content type for error messages.
........
r60982 | georg.brandl | 2008-02-23 16:06:25 +0100 (Sat, 23 Feb 2008) | 2 lines
#2165: fix test_logging failure on some machines.
........
r60983 | facundo.batista | 2008-02-23 16:07:35 +0100 (Sat, 23 Feb 2008) | 6 lines
Issue 1089358. Adds the siginterrupt() function, that is just a
wrapper around the system call with the same name. Also added
test cases, doc changes and NEWS entry. Thanks Jason and Ralf
Schmitt.
........
r60984 | georg.brandl | 2008-02-23 16:11:18 +0100 (Sat, 23 Feb 2008) | 2 lines
#2067: file.__exit__() now calls subclasses' close() method.
........
r60985 | georg.brandl | 2008-02-23 16:19:54 +0100 (Sat, 23 Feb 2008) | 2 lines
More difflib examples. Written for GHOP by Josip Dzolonga.
........
r60987 | andrew.kuchling | 2008-02-23 16:41:51 +0100 (Sat, 23 Feb 2008) | 1 line
#2072: correct documentation for .rpc_paths
........
r60988 | georg.brandl | 2008-02-23 16:43:48 +0100 (Sat, 23 Feb 2008) | 2 lines
#2161: Fix opcode name.
........
r60989 | andrew.kuchling | 2008-02-23 16:49:35 +0100 (Sat, 23 Feb 2008) | 2 lines
#1119331: ncurses will just call exit() if the terminal name isn't found.
Call setupterm() first so that we get a Python exception instead of just existing.
........
2008-02-23 12:23:06 -04:00
|
|
|
class SiginterruptTest(unittest.TestCase):
|
2010-05-09 00:25:16 -03:00
|
|
|
|
2024-06-04 14:38:29 -03:00
|
|
|
def readpipe_interrupted(self, interrupt, timeout=support.SHORT_TIMEOUT):
|
2010-05-09 00:25:16 -03:00
|
|
|
"""Perform a read during which a signal will arrive. Return True if the
|
|
|
|
read is interrupted by the signal and raises an exception. Return False
|
|
|
|
if it returns normally.
|
|
|
|
"""
|
2011-06-20 18:28:09 -03:00
|
|
|
# use a subprocess to have only one thread, to have a timeout on the
|
|
|
|
# blocking read and to not touch signal handling in this process
|
|
|
|
code = """if 1:
|
|
|
|
import errno
|
|
|
|
import os
|
|
|
|
import signal
|
|
|
|
import sys
|
|
|
|
|
|
|
|
interrupt = %r
|
|
|
|
r, w = os.pipe()
|
|
|
|
|
|
|
|
def handler(signum, frame):
|
2015-02-07 09:27:50 -04:00
|
|
|
1 / 0
|
2011-06-20 18:28:09 -03:00
|
|
|
|
|
|
|
signal.signal(signal.SIGALRM, handler)
|
|
|
|
if interrupt is not None:
|
|
|
|
signal.siginterrupt(signal.SIGALRM, interrupt)
|
|
|
|
|
2011-07-01 10:58:39 -03:00
|
|
|
print("ready")
|
|
|
|
sys.stdout.flush()
|
|
|
|
|
2011-06-20 18:28:09 -03:00
|
|
|
# run the test twice
|
2014-07-21 07:30:22 -03:00
|
|
|
try:
|
|
|
|
for loop in range(2):
|
|
|
|
# send a SIGALRM in a second (during the read)
|
|
|
|
signal.alarm(1)
|
|
|
|
try:
|
|
|
|
# blocking call: read from a pipe without data
|
|
|
|
os.read(r, 1)
|
2015-02-07 09:27:50 -04:00
|
|
|
except ZeroDivisionError:
|
|
|
|
pass
|
2014-07-21 07:30:22 -03:00
|
|
|
else:
|
|
|
|
sys.exit(2)
|
|
|
|
sys.exit(3)
|
|
|
|
finally:
|
|
|
|
os.close(r)
|
|
|
|
os.close(w)
|
2011-06-20 18:28:09 -03:00
|
|
|
""" % (interrupt,)
|
|
|
|
with spawn_python('-c', code) as process:
|
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r60980 | georg.brandl | 2008-02-23 16:02:28 +0100 (Sat, 23 Feb 2008) | 2 lines
#1492: allow overriding BaseHTTPServer's content type for error messages.
........
r60982 | georg.brandl | 2008-02-23 16:06:25 +0100 (Sat, 23 Feb 2008) | 2 lines
#2165: fix test_logging failure on some machines.
........
r60983 | facundo.batista | 2008-02-23 16:07:35 +0100 (Sat, 23 Feb 2008) | 6 lines
Issue 1089358. Adds the siginterrupt() function, that is just a
wrapper around the system call with the same name. Also added
test cases, doc changes and NEWS entry. Thanks Jason and Ralf
Schmitt.
........
r60984 | georg.brandl | 2008-02-23 16:11:18 +0100 (Sat, 23 Feb 2008) | 2 lines
#2067: file.__exit__() now calls subclasses' close() method.
........
r60985 | georg.brandl | 2008-02-23 16:19:54 +0100 (Sat, 23 Feb 2008) | 2 lines
More difflib examples. Written for GHOP by Josip Dzolonga.
........
r60987 | andrew.kuchling | 2008-02-23 16:41:51 +0100 (Sat, 23 Feb 2008) | 1 line
#2072: correct documentation for .rpc_paths
........
r60988 | georg.brandl | 2008-02-23 16:43:48 +0100 (Sat, 23 Feb 2008) | 2 lines
#2161: Fix opcode name.
........
r60989 | andrew.kuchling | 2008-02-23 16:49:35 +0100 (Sat, 23 Feb 2008) | 2 lines
#1119331: ncurses will just call exit() if the terminal name isn't found.
Call setupterm() first so that we get a Python exception instead of just existing.
........
2008-02-23 12:23:06 -04:00
|
|
|
try:
|
2011-06-22 17:15:51 -03:00
|
|
|
# wait until the child process is loaded and has started
|
|
|
|
first_line = process.stdout.readline()
|
|
|
|
|
2024-06-04 14:38:29 -03:00
|
|
|
stdout, stderr = process.communicate(timeout=timeout)
|
2011-06-20 18:28:09 -03:00
|
|
|
except subprocess.TimeoutExpired:
|
|
|
|
process.kill()
|
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r60980 | georg.brandl | 2008-02-23 16:02:28 +0100 (Sat, 23 Feb 2008) | 2 lines
#1492: allow overriding BaseHTTPServer's content type for error messages.
........
r60982 | georg.brandl | 2008-02-23 16:06:25 +0100 (Sat, 23 Feb 2008) | 2 lines
#2165: fix test_logging failure on some machines.
........
r60983 | facundo.batista | 2008-02-23 16:07:35 +0100 (Sat, 23 Feb 2008) | 6 lines
Issue 1089358. Adds the siginterrupt() function, that is just a
wrapper around the system call with the same name. Also added
test cases, doc changes and NEWS entry. Thanks Jason and Ralf
Schmitt.
........
r60984 | georg.brandl | 2008-02-23 16:11:18 +0100 (Sat, 23 Feb 2008) | 2 lines
#2067: file.__exit__() now calls subclasses' close() method.
........
r60985 | georg.brandl | 2008-02-23 16:19:54 +0100 (Sat, 23 Feb 2008) | 2 lines
More difflib examples. Written for GHOP by Josip Dzolonga.
........
r60987 | andrew.kuchling | 2008-02-23 16:41:51 +0100 (Sat, 23 Feb 2008) | 1 line
#2072: correct documentation for .rpc_paths
........
r60988 | georg.brandl | 2008-02-23 16:43:48 +0100 (Sat, 23 Feb 2008) | 2 lines
#2161: Fix opcode name.
........
r60989 | andrew.kuchling | 2008-02-23 16:49:35 +0100 (Sat, 23 Feb 2008) | 2 lines
#1119331: ncurses will just call exit() if the terminal name isn't found.
Call setupterm() first so that we get a Python exception instead of just existing.
........
2008-02-23 12:23:06 -04:00
|
|
|
return False
|
2011-06-20 18:28:09 -03:00
|
|
|
else:
|
2011-06-22 17:15:51 -03:00
|
|
|
stdout = first_line + stdout
|
2011-06-20 18:28:09 -03:00
|
|
|
exitcode = process.wait()
|
|
|
|
if exitcode not in (2, 3):
|
2014-05-11 14:05:23 -03:00
|
|
|
raise Exception("Child error (exit code %s): %r"
|
2011-06-20 18:28:09 -03:00
|
|
|
% (exitcode, stdout))
|
|
|
|
return (exitcode == 3)
|
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r60980 | georg.brandl | 2008-02-23 16:02:28 +0100 (Sat, 23 Feb 2008) | 2 lines
#1492: allow overriding BaseHTTPServer's content type for error messages.
........
r60982 | georg.brandl | 2008-02-23 16:06:25 +0100 (Sat, 23 Feb 2008) | 2 lines
#2165: fix test_logging failure on some machines.
........
r60983 | facundo.batista | 2008-02-23 16:07:35 +0100 (Sat, 23 Feb 2008) | 6 lines
Issue 1089358. Adds the siginterrupt() function, that is just a
wrapper around the system call with the same name. Also added
test cases, doc changes and NEWS entry. Thanks Jason and Ralf
Schmitt.
........
r60984 | georg.brandl | 2008-02-23 16:11:18 +0100 (Sat, 23 Feb 2008) | 2 lines
#2067: file.__exit__() now calls subclasses' close() method.
........
r60985 | georg.brandl | 2008-02-23 16:19:54 +0100 (Sat, 23 Feb 2008) | 2 lines
More difflib examples. Written for GHOP by Josip Dzolonga.
........
r60987 | andrew.kuchling | 2008-02-23 16:41:51 +0100 (Sat, 23 Feb 2008) | 1 line
#2072: correct documentation for .rpc_paths
........
r60988 | georg.brandl | 2008-02-23 16:43:48 +0100 (Sat, 23 Feb 2008) | 2 lines
#2161: Fix opcode name.
........
r60989 | andrew.kuchling | 2008-02-23 16:49:35 +0100 (Sat, 23 Feb 2008) | 2 lines
#1119331: ncurses will just call exit() if the terminal name isn't found.
Call setupterm() first so that we get a Python exception instead of just existing.
........
2008-02-23 12:23:06 -04:00
|
|
|
|
|
|
|
def test_without_siginterrupt(self):
|
2011-05-07 21:10:36 -03:00
|
|
|
# If a signal handler is installed and siginterrupt is not called
|
|
|
|
# at all, when that signal arrives, it interrupts a syscall that's in
|
|
|
|
# progress.
|
2011-06-20 18:28:09 -03:00
|
|
|
interrupted = self.readpipe_interrupted(None)
|
|
|
|
self.assertTrue(interrupted)
|
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r60980 | georg.brandl | 2008-02-23 16:02:28 +0100 (Sat, 23 Feb 2008) | 2 lines
#1492: allow overriding BaseHTTPServer's content type for error messages.
........
r60982 | georg.brandl | 2008-02-23 16:06:25 +0100 (Sat, 23 Feb 2008) | 2 lines
#2165: fix test_logging failure on some machines.
........
r60983 | facundo.batista | 2008-02-23 16:07:35 +0100 (Sat, 23 Feb 2008) | 6 lines
Issue 1089358. Adds the siginterrupt() function, that is just a
wrapper around the system call with the same name. Also added
test cases, doc changes and NEWS entry. Thanks Jason and Ralf
Schmitt.
........
r60984 | georg.brandl | 2008-02-23 16:11:18 +0100 (Sat, 23 Feb 2008) | 2 lines
#2067: file.__exit__() now calls subclasses' close() method.
........
r60985 | georg.brandl | 2008-02-23 16:19:54 +0100 (Sat, 23 Feb 2008) | 2 lines
More difflib examples. Written for GHOP by Josip Dzolonga.
........
r60987 | andrew.kuchling | 2008-02-23 16:41:51 +0100 (Sat, 23 Feb 2008) | 1 line
#2072: correct documentation for .rpc_paths
........
r60988 | georg.brandl | 2008-02-23 16:43:48 +0100 (Sat, 23 Feb 2008) | 2 lines
#2161: Fix opcode name.
........
r60989 | andrew.kuchling | 2008-02-23 16:49:35 +0100 (Sat, 23 Feb 2008) | 2 lines
#1119331: ncurses will just call exit() if the terminal name isn't found.
Call setupterm() first so that we get a Python exception instead of just existing.
........
2008-02-23 12:23:06 -04:00
|
|
|
|
|
|
|
def test_siginterrupt_on(self):
|
2011-05-07 21:10:36 -03:00
|
|
|
# If a signal handler is installed and siginterrupt is called with
|
|
|
|
# a true value for the second argument, when that signal arrives, it
|
|
|
|
# interrupts a syscall that's in progress.
|
2011-06-20 18:28:09 -03:00
|
|
|
interrupted = self.readpipe_interrupted(True)
|
|
|
|
self.assertTrue(interrupted)
|
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r60980 | georg.brandl | 2008-02-23 16:02:28 +0100 (Sat, 23 Feb 2008) | 2 lines
#1492: allow overriding BaseHTTPServer's content type for error messages.
........
r60982 | georg.brandl | 2008-02-23 16:06:25 +0100 (Sat, 23 Feb 2008) | 2 lines
#2165: fix test_logging failure on some machines.
........
r60983 | facundo.batista | 2008-02-23 16:07:35 +0100 (Sat, 23 Feb 2008) | 6 lines
Issue 1089358. Adds the siginterrupt() function, that is just a
wrapper around the system call with the same name. Also added
test cases, doc changes and NEWS entry. Thanks Jason and Ralf
Schmitt.
........
r60984 | georg.brandl | 2008-02-23 16:11:18 +0100 (Sat, 23 Feb 2008) | 2 lines
#2067: file.__exit__() now calls subclasses' close() method.
........
r60985 | georg.brandl | 2008-02-23 16:19:54 +0100 (Sat, 23 Feb 2008) | 2 lines
More difflib examples. Written for GHOP by Josip Dzolonga.
........
r60987 | andrew.kuchling | 2008-02-23 16:41:51 +0100 (Sat, 23 Feb 2008) | 1 line
#2072: correct documentation for .rpc_paths
........
r60988 | georg.brandl | 2008-02-23 16:43:48 +0100 (Sat, 23 Feb 2008) | 2 lines
#2161: Fix opcode name.
........
r60989 | andrew.kuchling | 2008-02-23 16:49:35 +0100 (Sat, 23 Feb 2008) | 2 lines
#1119331: ncurses will just call exit() if the terminal name isn't found.
Call setupterm() first so that we get a Python exception instead of just existing.
........
2008-02-23 12:23:06 -04:00
|
|
|
|
2023-09-05 11:56:30 -03:00
|
|
|
@support.requires_resource('walltime')
|
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60964,60966-60967,60971,60977,60979-60989 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r60980 | georg.brandl | 2008-02-23 16:02:28 +0100 (Sat, 23 Feb 2008) | 2 lines
#1492: allow overriding BaseHTTPServer's content type for error messages.
........
r60982 | georg.brandl | 2008-02-23 16:06:25 +0100 (Sat, 23 Feb 2008) | 2 lines
#2165: fix test_logging failure on some machines.
........
r60983 | facundo.batista | 2008-02-23 16:07:35 +0100 (Sat, 23 Feb 2008) | 6 lines
Issue 1089358. Adds the siginterrupt() function, that is just a
wrapper around the system call with the same name. Also added
test cases, doc changes and NEWS entry. Thanks Jason and Ralf
Schmitt.
........
r60984 | georg.brandl | 2008-02-23 16:11:18 +0100 (Sat, 23 Feb 2008) | 2 lines
#2067: file.__exit__() now calls subclasses' close() method.
........
r60985 | georg.brandl | 2008-02-23 16:19:54 +0100 (Sat, 23 Feb 2008) | 2 lines
More difflib examples. Written for GHOP by Josip Dzolonga.
........
r60987 | andrew.kuchling | 2008-02-23 16:41:51 +0100 (Sat, 23 Feb 2008) | 1 line
#2072: correct documentation for .rpc_paths
........
r60988 | georg.brandl | 2008-02-23 16:43:48 +0100 (Sat, 23 Feb 2008) | 2 lines
#2161: Fix opcode name.
........
r60989 | andrew.kuchling | 2008-02-23 16:49:35 +0100 (Sat, 23 Feb 2008) | 2 lines
#1119331: ncurses will just call exit() if the terminal name isn't found.
Call setupterm() first so that we get a Python exception instead of just existing.
........
2008-02-23 12:23:06 -04:00
|
|
|
def test_siginterrupt_off(self):
|
2011-05-07 21:10:36 -03:00
|
|
|
# If a signal handler is installed and siginterrupt is called with
|
|
|
|
# a false value for the second argument, when that signal arrives, it
|
|
|
|
# does not interrupt a syscall that's in progress.
|
2024-06-04 14:38:29 -03:00
|
|
|
interrupted = self.readpipe_interrupted(False, timeout=2)
|
2011-06-20 18:28:09 -03:00
|
|
|
self.assertFalse(interrupted)
|
2010-05-09 00:25:16 -03:00
|
|
|
|
|
|
|
|
2010-08-06 16:34:52 -03:00
|
|
|
@unittest.skipIf(sys.platform == "win32", "Not valid on Windows")
|
2020-11-30 17:48:33 -04:00
|
|
|
@unittest.skipUnless(hasattr(signal, 'getitimer') and hasattr(signal, 'setitimer'),
|
|
|
|
"needs signal.getitimer() and signal.setitimer()")
|
2008-03-24 10:39:54 -03:00
|
|
|
class ItimerTest(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
|
|
self.hndl_called = False
|
|
|
|
self.hndl_count = 0
|
|
|
|
self.itimer = None
|
Merged revisions 61834,61841-61842,61851-61853,61863-61864,61869-61870,61874,61889 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61834 | raymond.hettinger | 2008-03-24 07:07:49 +0100 (Mon, 24 Mar 2008) | 1 line
Tighten documentation for Random.triangular.
........
r61841 | raymond.hettinger | 2008-03-24 09:17:39 +0100 (Mon, 24 Mar 2008) | 1 line
Issue 2460: Make Ellipsis objects copyable.
........
r61842 | georg.brandl | 2008-03-24 10:34:34 +0100 (Mon, 24 Mar 2008) | 2 lines
#1700821: add a note to audioop docs about signedness of sample formats.
........
r61851 | christian.heimes | 2008-03-24 20:57:42 +0100 (Mon, 24 Mar 2008) | 1 line
Added quick hack for bzr
........
r61852 | christian.heimes | 2008-03-24 20:58:17 +0100 (Mon, 24 Mar 2008) | 1 line
Added quick hack for bzr
........
r61853 | amaury.forgeotdarc | 2008-03-24 22:04:10 +0100 (Mon, 24 Mar 2008) | 4 lines
Issue2469: Correct a typo I introduced at r61793: compilation error with UCS4 builds.
All buildbots compile with UCS2...
........
r61863 | neal.norwitz | 2008-03-25 05:17:38 +0100 (Tue, 25 Mar 2008) | 2 lines
Fix a bunch of UnboundLocalErrors when the tests fail.
........
r61864 | neal.norwitz | 2008-03-25 05:18:18 +0100 (Tue, 25 Mar 2008) | 2 lines
Try to fix a bunch of compiler warnings on Win64.
........
r61869 | neal.norwitz | 2008-03-25 07:35:10 +0100 (Tue, 25 Mar 2008) | 3 lines
Don't try to close a non-open file.
Don't let file removal cause the test to fail.
........
r61870 | neal.norwitz | 2008-03-25 08:00:39 +0100 (Tue, 25 Mar 2008) | 7 lines
Try to get this test to be more stable:
* disable gc during the test run because we are spawning objects and there
was an exception when calling Popen.__del__
* Always set an alarm handler so the process doesn't exit if the test fails
(should probably add assertions on the value of hndl_called in more places)
* Using a negative time causes Linux to treat it as zero, so disable that test.
........
r61874 | gregory.p.smith | 2008-03-25 08:31:28 +0100 (Tue, 25 Mar 2008) | 2 lines
Use a 32-bit unsigned int here, a long is not needed.
........
r61889 | georg.brandl | 2008-03-25 12:59:51 +0100 (Tue, 25 Mar 2008) | 2 lines
Move declarations to block start.
........
2008-03-25 11:56:36 -03:00
|
|
|
self.old_alarm = signal.signal(signal.SIGALRM, self.sig_alrm)
|
2008-03-24 10:39:54 -03:00
|
|
|
|
|
|
|
def tearDown(self):
|
Merged revisions 61834,61841-61842,61851-61853,61863-61864,61869-61870,61874,61889 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61834 | raymond.hettinger | 2008-03-24 07:07:49 +0100 (Mon, 24 Mar 2008) | 1 line
Tighten documentation for Random.triangular.
........
r61841 | raymond.hettinger | 2008-03-24 09:17:39 +0100 (Mon, 24 Mar 2008) | 1 line
Issue 2460: Make Ellipsis objects copyable.
........
r61842 | georg.brandl | 2008-03-24 10:34:34 +0100 (Mon, 24 Mar 2008) | 2 lines
#1700821: add a note to audioop docs about signedness of sample formats.
........
r61851 | christian.heimes | 2008-03-24 20:57:42 +0100 (Mon, 24 Mar 2008) | 1 line
Added quick hack for bzr
........
r61852 | christian.heimes | 2008-03-24 20:58:17 +0100 (Mon, 24 Mar 2008) | 1 line
Added quick hack for bzr
........
r61853 | amaury.forgeotdarc | 2008-03-24 22:04:10 +0100 (Mon, 24 Mar 2008) | 4 lines
Issue2469: Correct a typo I introduced at r61793: compilation error with UCS4 builds.
All buildbots compile with UCS2...
........
r61863 | neal.norwitz | 2008-03-25 05:17:38 +0100 (Tue, 25 Mar 2008) | 2 lines
Fix a bunch of UnboundLocalErrors when the tests fail.
........
r61864 | neal.norwitz | 2008-03-25 05:18:18 +0100 (Tue, 25 Mar 2008) | 2 lines
Try to fix a bunch of compiler warnings on Win64.
........
r61869 | neal.norwitz | 2008-03-25 07:35:10 +0100 (Tue, 25 Mar 2008) | 3 lines
Don't try to close a non-open file.
Don't let file removal cause the test to fail.
........
r61870 | neal.norwitz | 2008-03-25 08:00:39 +0100 (Tue, 25 Mar 2008) | 7 lines
Try to get this test to be more stable:
* disable gc during the test run because we are spawning objects and there
was an exception when calling Popen.__del__
* Always set an alarm handler so the process doesn't exit if the test fails
(should probably add assertions on the value of hndl_called in more places)
* Using a negative time causes Linux to treat it as zero, so disable that test.
........
r61874 | gregory.p.smith | 2008-03-25 08:31:28 +0100 (Tue, 25 Mar 2008) | 2 lines
Use a 32-bit unsigned int here, a long is not needed.
........
r61889 | georg.brandl | 2008-03-25 12:59:51 +0100 (Tue, 25 Mar 2008) | 2 lines
Move declarations to block start.
........
2008-03-25 11:56:36 -03:00
|
|
|
signal.signal(signal.SIGALRM, self.old_alarm)
|
2008-03-24 10:39:54 -03:00
|
|
|
if self.itimer is not None: # test_itimer_exc doesn't change this attr
|
|
|
|
# just ensure that itimer is stopped
|
|
|
|
signal.setitimer(self.itimer, 0)
|
|
|
|
|
|
|
|
def sig_alrm(self, *args):
|
|
|
|
self.hndl_called = True
|
|
|
|
|
|
|
|
def sig_vtalrm(self, *args):
|
|
|
|
self.hndl_called = True
|
|
|
|
|
|
|
|
if self.hndl_count > 3:
|
|
|
|
# it shouldn't be here, because it should have been disabled.
|
|
|
|
raise signal.ItimerError("setitimer didn't disable ITIMER_VIRTUAL "
|
|
|
|
"timer.")
|
|
|
|
elif self.hndl_count == 3:
|
|
|
|
# disable ITIMER_VIRTUAL, this function shouldn't be called anymore
|
|
|
|
signal.setitimer(signal.ITIMER_VIRTUAL, 0)
|
|
|
|
|
|
|
|
self.hndl_count += 1
|
|
|
|
|
|
|
|
def sig_prof(self, *args):
|
|
|
|
self.hndl_called = True
|
|
|
|
signal.setitimer(signal.ITIMER_PROF, 0)
|
|
|
|
|
|
|
|
def test_itimer_exc(self):
|
|
|
|
# XXX I'm assuming -1 is an invalid itimer, but maybe some platform
|
|
|
|
# defines it ?
|
|
|
|
self.assertRaises(signal.ItimerError, signal.setitimer, -1, 0)
|
Merged revisions 61834,61841-61842,61851-61853,61863-61864,61869-61870,61874,61889 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r61834 | raymond.hettinger | 2008-03-24 07:07:49 +0100 (Mon, 24 Mar 2008) | 1 line
Tighten documentation for Random.triangular.
........
r61841 | raymond.hettinger | 2008-03-24 09:17:39 +0100 (Mon, 24 Mar 2008) | 1 line
Issue 2460: Make Ellipsis objects copyable.
........
r61842 | georg.brandl | 2008-03-24 10:34:34 +0100 (Mon, 24 Mar 2008) | 2 lines
#1700821: add a note to audioop docs about signedness of sample formats.
........
r61851 | christian.heimes | 2008-03-24 20:57:42 +0100 (Mon, 24 Mar 2008) | 1 line
Added quick hack for bzr
........
r61852 | christian.heimes | 2008-03-24 20:58:17 +0100 (Mon, 24 Mar 2008) | 1 line
Added quick hack for bzr
........
r61853 | amaury.forgeotdarc | 2008-03-24 22:04:10 +0100 (Mon, 24 Mar 2008) | 4 lines
Issue2469: Correct a typo I introduced at r61793: compilation error with UCS4 builds.
All buildbots compile with UCS2...
........
r61863 | neal.norwitz | 2008-03-25 05:17:38 +0100 (Tue, 25 Mar 2008) | 2 lines
Fix a bunch of UnboundLocalErrors when the tests fail.
........
r61864 | neal.norwitz | 2008-03-25 05:18:18 +0100 (Tue, 25 Mar 2008) | 2 lines
Try to fix a bunch of compiler warnings on Win64.
........
r61869 | neal.norwitz | 2008-03-25 07:35:10 +0100 (Tue, 25 Mar 2008) | 3 lines
Don't try to close a non-open file.
Don't let file removal cause the test to fail.
........
r61870 | neal.norwitz | 2008-03-25 08:00:39 +0100 (Tue, 25 Mar 2008) | 7 lines
Try to get this test to be more stable:
* disable gc during the test run because we are spawning objects and there
was an exception when calling Popen.__del__
* Always set an alarm handler so the process doesn't exit if the test fails
(should probably add assertions on the value of hndl_called in more places)
* Using a negative time causes Linux to treat it as zero, so disable that test.
........
r61874 | gregory.p.smith | 2008-03-25 08:31:28 +0100 (Tue, 25 Mar 2008) | 2 lines
Use a 32-bit unsigned int here, a long is not needed.
........
r61889 | georg.brandl | 2008-03-25 12:59:51 +0100 (Tue, 25 Mar 2008) | 2 lines
Move declarations to block start.
........
2008-03-25 11:56:36 -03:00
|
|
|
# Negative times are treated as zero on some platforms.
|
|
|
|
if 0:
|
|
|
|
self.assertRaises(signal.ItimerError,
|
|
|
|
signal.setitimer, signal.ITIMER_REAL, -1)
|
2008-03-24 10:39:54 -03:00
|
|
|
|
|
|
|
def test_itimer_real(self):
|
|
|
|
self.itimer = signal.ITIMER_REAL
|
|
|
|
signal.setitimer(self.itimer, 1.0)
|
|
|
|
signal.pause()
|
|
|
|
self.assertEqual(self.hndl_called, True)
|
|
|
|
|
2010-04-20 22:59:28 -03:00
|
|
|
# Issue 3864, unknown if this affects earlier versions of freebsd also
|
2024-02-04 20:04:57 -04:00
|
|
|
@unittest.skipIf(sys.platform in ('netbsd5',) or is_apple_mobile,
|
2010-10-17 01:23:21 -03:00
|
|
|
'itimer not reliable (does not mix well with threading) on some BSDs.')
|
2008-03-24 10:39:54 -03:00
|
|
|
def test_itimer_virtual(self):
|
|
|
|
self.itimer = signal.ITIMER_VIRTUAL
|
|
|
|
signal.signal(signal.SIGVTALRM, self.sig_vtalrm)
|
|
|
|
signal.setitimer(self.itimer, 0.3, 0.2)
|
|
|
|
|
2022-06-16 08:44:58 -03:00
|
|
|
for _ in support.busy_retry(support.LONG_TIMEOUT):
|
2009-10-04 15:47:48 -03:00
|
|
|
# use up some virtual time by doing real work
|
|
|
|
_ = pow(12345, 67890, 10000019)
|
2008-03-24 10:39:54 -03:00
|
|
|
if signal.getitimer(self.itimer) == (0.0, 0.0):
|
2022-06-15 06:42:10 -03:00
|
|
|
# sig_vtalrm handler stopped this itimer
|
|
|
|
break
|
2008-03-24 10:39:54 -03:00
|
|
|
|
|
|
|
# virtual itimer should be (0.0, 0.0) now
|
2010-11-20 21:30:29 -04:00
|
|
|
self.assertEqual(signal.getitimer(self.itimer), (0.0, 0.0))
|
2008-03-24 10:39:54 -03:00
|
|
|
# and the handler should have been called
|
2010-11-20 21:30:29 -04:00
|
|
|
self.assertEqual(self.hndl_called, True)
|
2008-03-24 10:39:54 -03:00
|
|
|
|
|
|
|
def test_itimer_prof(self):
|
|
|
|
self.itimer = signal.ITIMER_PROF
|
|
|
|
signal.signal(signal.SIGPROF, self.sig_prof)
|
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62055-62058,62060-62066,62068-62074,62076-62079,62081-62083,62086-62089,62092-62094,62098,62101,62104,62106-62109,62115-62122,62124-62125,62127-62128,62130,62132,62134-62137,62139-62142,62144,62146-62148,62150-62152,62155-62161 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r62127 | trent.nelson | 2008-04-03 08:39:17 -0700 (Thu, 03 Apr 2008) | 1 line
Remove the building of Berkeley DB step; _bsddb44.vcproj takes care of this for us now.
........
r62136 | amaury.forgeotdarc | 2008-04-03 16:07:55 -0700 (Thu, 03 Apr 2008) | 9 lines
#1733757: the interpreter would hang on shutdown, if the function set by sys.settrace
calls threading.currentThread.
The correction somewhat improves the code, but it was close.
Many thanks to the "with" construct, which turns python code into C calls.
I wonder if it is not better to sys.settrace(None) just after
running the __main__ module and before finalization.
........
r62141 | jeffrey.yasskin | 2008-04-03 21:51:19 -0700 (Thu, 03 Apr 2008) | 5 lines
Doh! os.read() raises an OSError, not an IOError when it's interrupted.
And fix some flakiness in test_itimer_prof, which could detect that the timer
had reached 0 before the signal arrived announcing that fact.
........
r62142 | fred.drake | 2008-04-03 22:41:30 -0700 (Thu, 03 Apr 2008) | 4 lines
- Issue #2385: distutils.core.run_script() makes __file__ available, so the
controlled environment will more closely mirror the typical script
environment. This supports setup.py scripts that refer to data files.
........
r62147 | fred.drake | 2008-04-04 04:31:14 -0700 (Fri, 04 Apr 2008) | 6 lines
my previous change did what I said it should not: it changed the current
directory to the directory in which the setup.py script lived (which made
__file__ wrong)
fixed, with test that the script is run in the current directory of the caller
........
r62148 | fred.drake | 2008-04-04 04:38:51 -0700 (Fri, 04 Apr 2008) | 2 lines
stupid, stupid, stupid!
........
r62150 | jeffrey.yasskin | 2008-04-04 09:48:19 -0700 (Fri, 04 Apr 2008) | 2 lines
Oops again. EINTR is in errno, not signal.
........
r62158 | andrew.kuchling | 2008-04-04 19:42:20 -0700 (Fri, 04 Apr 2008) | 1 line
Minor edits
........
r62159 | andrew.kuchling | 2008-04-04 19:47:07 -0700 (Fri, 04 Apr 2008) | 1 line
Markup fix; explain what interval timers do; typo fix
........
r62160 | andrew.kuchling | 2008-04-04 20:38:39 -0700 (Fri, 04 Apr 2008) | 1 line
Various edits
........
r62161 | neal.norwitz | 2008-04-04 21:26:31 -0700 (Fri, 04 Apr 2008) | 9 lines
Prevent test_sqlite from hanging on older versions of sqlite.
The problem is that when trying to do the second insert, sqlite seems to sleep
for a very long time. Here is the output from strace:
read(6, "SQLite format 3\0\4\0\1\1\0@ \0\0\0\1\0\0\0\0"..., 1024) = 1024
nanosleep({4294, 966296000}, <unfinished ...>
I don't know which version this was fixed in, but 3.2.1 definitely fails.
........
2008-04-05 01:47:45 -03:00
|
|
|
signal.setitimer(self.itimer, 0.2, 0.2)
|
2008-03-24 10:39:54 -03:00
|
|
|
|
2022-06-16 08:44:58 -03:00
|
|
|
for _ in support.busy_retry(support.LONG_TIMEOUT):
|
2009-10-31 07:39:21 -03:00
|
|
|
# do some work
|
|
|
|
_ = pow(12345, 67890, 10000019)
|
2008-03-24 10:39:54 -03:00
|
|
|
if signal.getitimer(self.itimer) == (0.0, 0.0):
|
2022-06-15 06:42:10 -03:00
|
|
|
# sig_prof handler stopped this itimer
|
|
|
|
break
|
2008-03-24 10:39:54 -03:00
|
|
|
|
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62055-62058,62060-62066,62068-62074,62076-62079,62081-62083,62086-62089,62092-62094,62098,62101,62104,62106-62109,62115-62122,62124-62125,62127-62128,62130,62132,62134-62137,62139-62142,62144,62146-62148,62150-62152,62155-62161 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r62127 | trent.nelson | 2008-04-03 08:39:17 -0700 (Thu, 03 Apr 2008) | 1 line
Remove the building of Berkeley DB step; _bsddb44.vcproj takes care of this for us now.
........
r62136 | amaury.forgeotdarc | 2008-04-03 16:07:55 -0700 (Thu, 03 Apr 2008) | 9 lines
#1733757: the interpreter would hang on shutdown, if the function set by sys.settrace
calls threading.currentThread.
The correction somewhat improves the code, but it was close.
Many thanks to the "with" construct, which turns python code into C calls.
I wonder if it is not better to sys.settrace(None) just after
running the __main__ module and before finalization.
........
r62141 | jeffrey.yasskin | 2008-04-03 21:51:19 -0700 (Thu, 03 Apr 2008) | 5 lines
Doh! os.read() raises an OSError, not an IOError when it's interrupted.
And fix some flakiness in test_itimer_prof, which could detect that the timer
had reached 0 before the signal arrived announcing that fact.
........
r62142 | fred.drake | 2008-04-03 22:41:30 -0700 (Thu, 03 Apr 2008) | 4 lines
- Issue #2385: distutils.core.run_script() makes __file__ available, so the
controlled environment will more closely mirror the typical script
environment. This supports setup.py scripts that refer to data files.
........
r62147 | fred.drake | 2008-04-04 04:31:14 -0700 (Fri, 04 Apr 2008) | 6 lines
my previous change did what I said it should not: it changed the current
directory to the directory in which the setup.py script lived (which made
__file__ wrong)
fixed, with test that the script is run in the current directory of the caller
........
r62148 | fred.drake | 2008-04-04 04:38:51 -0700 (Fri, 04 Apr 2008) | 2 lines
stupid, stupid, stupid!
........
r62150 | jeffrey.yasskin | 2008-04-04 09:48:19 -0700 (Fri, 04 Apr 2008) | 2 lines
Oops again. EINTR is in errno, not signal.
........
r62158 | andrew.kuchling | 2008-04-04 19:42:20 -0700 (Fri, 04 Apr 2008) | 1 line
Minor edits
........
r62159 | andrew.kuchling | 2008-04-04 19:47:07 -0700 (Fri, 04 Apr 2008) | 1 line
Markup fix; explain what interval timers do; typo fix
........
r62160 | andrew.kuchling | 2008-04-04 20:38:39 -0700 (Fri, 04 Apr 2008) | 1 line
Various edits
........
r62161 | neal.norwitz | 2008-04-04 21:26:31 -0700 (Fri, 04 Apr 2008) | 9 lines
Prevent test_sqlite from hanging on older versions of sqlite.
The problem is that when trying to do the second insert, sqlite seems to sleep
for a very long time. Here is the output from strace:
read(6, "SQLite format 3\0\4\0\1\1\0@ \0\0\0\1\0\0\0\0"..., 1024) = 1024
nanosleep({4294, 966296000}, <unfinished ...>
I don't know which version this was fixed in, but 3.2.1 definitely fails.
........
2008-04-05 01:47:45 -03:00
|
|
|
# profiling itimer should be (0.0, 0.0) now
|
2010-11-20 21:30:29 -04:00
|
|
|
self.assertEqual(signal.getitimer(self.itimer), (0.0, 0.0))
|
Merged revisions 61440-61441,61443,61445-61448,61451-61452,61455-61457,61459-61464,61466-61467,61469-61470,61476-61477,61479,61481-61482,61485,61487,61490,61493-61494,61497,61499-61502,61505-61506,61508,61511-61514,61519,61521-61522,61530-61531,61533-61537,61541-61555,61557-61558,61561-61562,61566-61569,61572-61574,61578-61579,61583-61584,61588-61589,61592,61594,61598-61601,61603-61604,61607-61612,61617,61619-61620,61624,61626,61628-61630,61635-61638,61640-61643,61645,61648,61653-61655,61659-61662,61664,61666,61668-61671,61673,61675,61679-61680,61682,61685-61686,61689-61695,61697-61699,61701-61703,61706,61710,61713,61717,61723,61726-61730,61736,61738,61740,61742,61745-61752,61754-61760,61762-61764,61768,61770-61772,61774-61775,61784-61787,61789-61792,61794-61795,61797-61806,61808-61809,61811-61812,61814-61819,61824,61826-61833,61835-61840,61843-61845,61848,61850,61854-61862,61865-61866,61868,61872-61873,61876-61877,61883-61888,61890-61891,61893-61899,61901-61903,61905-61912,61914,61917,61920-61921,61927,61930,61932-61934,61939,61941-61942,61944-61951,61955,61960-61963,61980,61982-61983,61991,61994-61996,62001-62003,62008-62010,62016-62017,62022,62024,62027,62031-62034,62041,62045-62046,62055-62058,62060-62066,62068-62074,62076-62079,62081-62083,62086-62089,62092-62094,62098,62101,62104,62106-62109,62115-62122,62124-62125,62127-62128,62130,62132,62134-62137,62139-62142,62144,62146-62148,62150-62152,62155-62161 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r62127 | trent.nelson | 2008-04-03 08:39:17 -0700 (Thu, 03 Apr 2008) | 1 line
Remove the building of Berkeley DB step; _bsddb44.vcproj takes care of this for us now.
........
r62136 | amaury.forgeotdarc | 2008-04-03 16:07:55 -0700 (Thu, 03 Apr 2008) | 9 lines
#1733757: the interpreter would hang on shutdown, if the function set by sys.settrace
calls threading.currentThread.
The correction somewhat improves the code, but it was close.
Many thanks to the "with" construct, which turns python code into C calls.
I wonder if it is not better to sys.settrace(None) just after
running the __main__ module and before finalization.
........
r62141 | jeffrey.yasskin | 2008-04-03 21:51:19 -0700 (Thu, 03 Apr 2008) | 5 lines
Doh! os.read() raises an OSError, not an IOError when it's interrupted.
And fix some flakiness in test_itimer_prof, which could detect that the timer
had reached 0 before the signal arrived announcing that fact.
........
r62142 | fred.drake | 2008-04-03 22:41:30 -0700 (Thu, 03 Apr 2008) | 4 lines
- Issue #2385: distutils.core.run_script() makes __file__ available, so the
controlled environment will more closely mirror the typical script
environment. This supports setup.py scripts that refer to data files.
........
r62147 | fred.drake | 2008-04-04 04:31:14 -0700 (Fri, 04 Apr 2008) | 6 lines
my previous change did what I said it should not: it changed the current
directory to the directory in which the setup.py script lived (which made
__file__ wrong)
fixed, with test that the script is run in the current directory of the caller
........
r62148 | fred.drake | 2008-04-04 04:38:51 -0700 (Fri, 04 Apr 2008) | 2 lines
stupid, stupid, stupid!
........
r62150 | jeffrey.yasskin | 2008-04-04 09:48:19 -0700 (Fri, 04 Apr 2008) | 2 lines
Oops again. EINTR is in errno, not signal.
........
r62158 | andrew.kuchling | 2008-04-04 19:42:20 -0700 (Fri, 04 Apr 2008) | 1 line
Minor edits
........
r62159 | andrew.kuchling | 2008-04-04 19:47:07 -0700 (Fri, 04 Apr 2008) | 1 line
Markup fix; explain what interval timers do; typo fix
........
r62160 | andrew.kuchling | 2008-04-04 20:38:39 -0700 (Fri, 04 Apr 2008) | 1 line
Various edits
........
r62161 | neal.norwitz | 2008-04-04 21:26:31 -0700 (Fri, 04 Apr 2008) | 9 lines
Prevent test_sqlite from hanging on older versions of sqlite.
The problem is that when trying to do the second insert, sqlite seems to sleep
for a very long time. Here is the output from strace:
read(6, "SQLite format 3\0\4\0\1\1\0@ \0\0\0\1\0\0\0\0"..., 1024) = 1024
nanosleep({4294, 966296000}, <unfinished ...>
I don't know which version this was fixed in, but 3.2.1 definitely fails.
........
2008-04-05 01:47:45 -03:00
|
|
|
# and the handler should have been called
|
2008-03-24 10:39:54 -03:00
|
|
|
self.assertEqual(self.hndl_called, True)
|
|
|
|
|
2017-06-30 05:01:05 -03:00
|
|
|
def test_setitimer_tiny(self):
|
|
|
|
# bpo-30807: C setitimer() takes a microsecond-resolution interval.
|
|
|
|
# Check that float -> timeval conversion doesn't round
|
|
|
|
# the interval down to zero, which would disable the timer.
|
|
|
|
self.itimer = signal.ITIMER_REAL
|
|
|
|
signal.setitimer(self.itimer, 1e-6)
|
|
|
|
time.sleep(1)
|
|
|
|
self.assertEqual(self.hndl_called, True)
|
|
|
|
|
2011-04-30 10:21:58 -03:00
|
|
|
|
2011-05-04 08:20:35 -03:00
|
|
|
class PendingSignalsTests(unittest.TestCase):
|
|
|
|
"""
|
2011-05-07 20:46:11 -03:00
|
|
|
Test pthread_sigmask(), pthread_kill(), sigpending() and sigwait()
|
|
|
|
functions.
|
2011-05-04 08:20:35 -03:00
|
|
|
"""
|
2011-05-07 20:46:11 -03:00
|
|
|
@unittest.skipUnless(hasattr(signal, 'sigpending'),
|
|
|
|
'need signal.sigpending()')
|
|
|
|
def test_sigpending_empty(self):
|
|
|
|
self.assertEqual(signal.sigpending(), set())
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(signal, 'pthread_sigmask'),
|
|
|
|
'need signal.pthread_sigmask()')
|
|
|
|
@unittest.skipUnless(hasattr(signal, 'sigpending'),
|
|
|
|
'need signal.sigpending()')
|
|
|
|
def test_sigpending(self):
|
2011-07-04 12:49:40 -03:00
|
|
|
code = """if 1:
|
|
|
|
import os
|
|
|
|
import signal
|
2011-05-07 20:46:11 -03:00
|
|
|
|
2011-07-04 12:49:40 -03:00
|
|
|
def handler(signum, frame):
|
|
|
|
1/0
|
2011-05-07 20:46:11 -03:00
|
|
|
|
2011-07-04 12:49:40 -03:00
|
|
|
signum = signal.SIGUSR1
|
|
|
|
signal.signal(signum, handler)
|
|
|
|
|
|
|
|
signal.pthread_sigmask(signal.SIG_BLOCK, [signum])
|
|
|
|
os.kill(os.getpid(), signum)
|
|
|
|
pending = signal.sigpending()
|
2014-04-04 10:34:17 -03:00
|
|
|
for sig in pending:
|
|
|
|
assert isinstance(sig, signal.Signals), repr(pending)
|
2011-07-04 13:06:35 -03:00
|
|
|
if pending != {signum}:
|
|
|
|
raise Exception('%s != {%s}' % (pending, signum))
|
2011-07-04 12:49:40 -03:00
|
|
|
try:
|
|
|
|
signal.pthread_sigmask(signal.SIG_UNBLOCK, [signum])
|
|
|
|
except ZeroDivisionError:
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
raise Exception("ZeroDivisionError not raised")
|
|
|
|
"""
|
|
|
|
assert_python_ok('-c', code)
|
2011-05-07 20:46:11 -03:00
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(signal, 'pthread_kill'),
|
|
|
|
'need signal.pthread_kill()')
|
2022-04-07 04:22:47 -03:00
|
|
|
@threading_helper.requires_working_threading()
|
2011-05-07 20:46:11 -03:00
|
|
|
def test_pthread_kill(self):
|
2011-07-04 12:49:40 -03:00
|
|
|
code = """if 1:
|
|
|
|
import signal
|
|
|
|
import threading
|
|
|
|
import sys
|
2011-05-07 20:46:11 -03:00
|
|
|
|
2011-07-04 12:49:40 -03:00
|
|
|
signum = signal.SIGUSR1
|
|
|
|
|
|
|
|
def handler(signum, frame):
|
|
|
|
1/0
|
2011-05-07 20:46:11 -03:00
|
|
|
|
2011-07-04 12:49:40 -03:00
|
|
|
signal.signal(signum, handler)
|
|
|
|
|
|
|
|
tid = threading.get_ident()
|
|
|
|
try:
|
|
|
|
signal.pthread_kill(tid, signum)
|
|
|
|
except ZeroDivisionError:
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
raise Exception("ZeroDivisionError not raised")
|
|
|
|
"""
|
|
|
|
assert_python_ok('-c', code)
|
2011-05-07 20:46:11 -03:00
|
|
|
|
2011-06-10 09:02:10 -03:00
|
|
|
@unittest.skipUnless(hasattr(signal, 'pthread_sigmask'),
|
|
|
|
'need signal.pthread_sigmask()')
|
2011-07-04 12:49:40 -03:00
|
|
|
def wait_helper(self, blocked, test):
|
2011-06-29 05:43:02 -03:00
|
|
|
"""
|
|
|
|
test: body of the "def test(signum):" function.
|
|
|
|
blocked: number of the blocked signal
|
|
|
|
"""
|
2011-07-04 12:49:40 -03:00
|
|
|
code = '''if 1:
|
|
|
|
import signal
|
|
|
|
import sys
|
2014-04-04 10:34:17 -03:00
|
|
|
from signal import Signals
|
2011-06-13 11:19:06 -03:00
|
|
|
|
2011-07-04 12:49:40 -03:00
|
|
|
def handler(signum, frame):
|
|
|
|
1/0
|
2011-06-10 07:48:13 -03:00
|
|
|
|
2011-07-04 12:49:40 -03:00
|
|
|
%s
|
2011-06-10 07:48:13 -03:00
|
|
|
|
2022-01-17 11:18:13 -04:00
|
|
|
blocked = %s
|
2011-07-04 12:49:40 -03:00
|
|
|
signum = signal.SIGALRM
|
2011-06-29 05:43:02 -03:00
|
|
|
|
2011-07-04 12:49:40 -03:00
|
|
|
# child: block and wait the signal
|
|
|
|
try:
|
|
|
|
signal.signal(signum, handler)
|
|
|
|
signal.pthread_sigmask(signal.SIG_BLOCK, [blocked])
|
2011-06-29 05:43:02 -03:00
|
|
|
|
2011-07-04 12:49:40 -03:00
|
|
|
# Do the tests
|
|
|
|
test(signum)
|
2011-06-29 05:43:02 -03:00
|
|
|
|
2011-07-04 12:49:40 -03:00
|
|
|
# The handler must not be called on unblock
|
|
|
|
try:
|
|
|
|
signal.pthread_sigmask(signal.SIG_UNBLOCK, [blocked])
|
|
|
|
except ZeroDivisionError:
|
|
|
|
print("the signal handler has been called",
|
|
|
|
file=sys.stderr)
|
|
|
|
sys.exit(1)
|
|
|
|
except BaseException as err:
|
|
|
|
print("error: {}".format(err), file=sys.stderr)
|
|
|
|
sys.stderr.flush()
|
|
|
|
sys.exit(1)
|
|
|
|
''' % (test.strip(), blocked)
|
2011-06-29 05:43:02 -03:00
|
|
|
|
|
|
|
# sig*wait* must be called with the signal blocked: since the current
|
|
|
|
# process might have several threads running, use a subprocess to have
|
|
|
|
# a single thread.
|
|
|
|
assert_python_ok('-c', code)
|
2011-06-10 07:48:13 -03:00
|
|
|
|
2011-06-25 07:13:40 -03:00
|
|
|
@unittest.skipUnless(hasattr(signal, 'sigwait'),
|
|
|
|
'need signal.sigwait()')
|
|
|
|
def test_sigwait(self):
|
2011-07-04 12:49:40 -03:00
|
|
|
self.wait_helper(signal.SIGALRM, '''
|
|
|
|
def test(signum):
|
2011-06-25 07:13:40 -03:00
|
|
|
signal.alarm(1)
|
2011-06-29 05:43:02 -03:00
|
|
|
received = signal.sigwait([signum])
|
2014-04-04 10:34:17 -03:00
|
|
|
assert isinstance(received, signal.Signals), received
|
2011-07-04 13:06:35 -03:00
|
|
|
if received != signum:
|
|
|
|
raise Exception('received %s, not %s' % (received, signum))
|
2011-07-04 12:49:40 -03:00
|
|
|
''')
|
2011-06-25 07:13:40 -03:00
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(signal, 'sigwaitinfo'),
|
|
|
|
'need signal.sigwaitinfo()')
|
|
|
|
def test_sigwaitinfo(self):
|
2011-07-04 12:49:40 -03:00
|
|
|
self.wait_helper(signal.SIGALRM, '''
|
|
|
|
def test(signum):
|
2011-06-25 07:13:40 -03:00
|
|
|
signal.alarm(1)
|
|
|
|
info = signal.sigwaitinfo([signum])
|
2011-07-04 13:06:35 -03:00
|
|
|
if info.si_signo != signum:
|
|
|
|
raise Exception("info.si_signo != %s" % signum)
|
2011-07-04 12:49:40 -03:00
|
|
|
''')
|
2011-06-25 07:13:40 -03:00
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(signal, 'sigtimedwait'),
|
|
|
|
'need signal.sigtimedwait()')
|
|
|
|
def test_sigtimedwait(self):
|
2011-07-04 12:49:40 -03:00
|
|
|
self.wait_helper(signal.SIGALRM, '''
|
|
|
|
def test(signum):
|
2011-06-25 07:13:40 -03:00
|
|
|
signal.alarm(1)
|
2012-03-02 17:54:03 -04:00
|
|
|
info = signal.sigtimedwait([signum], 10.1000)
|
2011-07-04 13:06:35 -03:00
|
|
|
if info.si_signo != signum:
|
|
|
|
raise Exception('info.si_signo != %s' % signum)
|
2011-07-04 12:49:40 -03:00
|
|
|
''')
|
2011-06-25 07:13:40 -03:00
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(signal, 'sigtimedwait'),
|
|
|
|
'need signal.sigtimedwait()')
|
|
|
|
def test_sigtimedwait_poll(self):
|
2011-06-29 05:43:02 -03:00
|
|
|
# check that polling with sigtimedwait works
|
2011-07-04 12:49:40 -03:00
|
|
|
self.wait_helper(signal.SIGALRM, '''
|
|
|
|
def test(signum):
|
2011-06-29 05:43:02 -03:00
|
|
|
import os
|
|
|
|
os.kill(os.getpid(), signum)
|
2012-03-02 17:54:03 -04:00
|
|
|
info = signal.sigtimedwait([signum], 0)
|
2011-07-04 13:06:35 -03:00
|
|
|
if info.si_signo != signum:
|
|
|
|
raise Exception('info.si_signo != %s' % signum)
|
2011-07-04 12:49:40 -03:00
|
|
|
''')
|
2011-06-25 07:13:40 -03:00
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(signal, 'sigtimedwait'),
|
|
|
|
'need signal.sigtimedwait()')
|
|
|
|
def test_sigtimedwait_timeout(self):
|
2011-07-04 12:49:40 -03:00
|
|
|
self.wait_helper(signal.SIGALRM, '''
|
|
|
|
def test(signum):
|
2012-03-02 17:54:03 -04:00
|
|
|
received = signal.sigtimedwait([signum], 1.0)
|
2011-07-04 13:06:35 -03:00
|
|
|
if received is not None:
|
|
|
|
raise Exception("received=%r" % (received,))
|
2011-07-04 12:49:40 -03:00
|
|
|
''')
|
2011-06-25 07:13:40 -03:00
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(signal, 'sigtimedwait'),
|
|
|
|
'need signal.sigtimedwait()')
|
|
|
|
def test_sigtimedwait_negative_timeout(self):
|
|
|
|
signum = signal.SIGALRM
|
2012-03-02 17:54:03 -04:00
|
|
|
self.assertRaises(ValueError, signal.sigtimedwait, [signum], -1.0)
|
2011-06-25 07:13:40 -03:00
|
|
|
|
2011-05-07 20:46:11 -03:00
|
|
|
@unittest.skipUnless(hasattr(signal, 'sigwait'),
|
|
|
|
'need signal.sigwait()')
|
2011-06-13 11:19:06 -03:00
|
|
|
@unittest.skipUnless(hasattr(signal, 'pthread_sigmask'),
|
|
|
|
'need signal.pthread_sigmask()')
|
2022-04-07 04:22:47 -03:00
|
|
|
@threading_helper.requires_working_threading()
|
2011-06-09 20:39:53 -03:00
|
|
|
def test_sigwait_thread(self):
|
2011-06-13 11:19:06 -03:00
|
|
|
# Check that calling sigwait() from a thread doesn't suspend the whole
|
|
|
|
# process. A new interpreter is spawned to avoid problems when mixing
|
|
|
|
# threads and fork(): only async-safe functions are allowed between
|
|
|
|
# fork() and exec().
|
|
|
|
assert_python_ok("-c", """if True:
|
|
|
|
import os, threading, sys, time, signal
|
|
|
|
|
|
|
|
# the default handler terminates the process
|
|
|
|
signum = signal.SIGUSR1
|
|
|
|
|
|
|
|
def kill_later():
|
|
|
|
# wait until the main thread is waiting in sigwait()
|
|
|
|
time.sleep(1)
|
|
|
|
os.kill(os.getpid(), signum)
|
|
|
|
|
|
|
|
# the signal must be blocked by all the threads
|
|
|
|
signal.pthread_sigmask(signal.SIG_BLOCK, [signum])
|
|
|
|
killer = threading.Thread(target=kill_later)
|
2011-06-10 07:48:13 -03:00
|
|
|
killer.start()
|
|
|
|
received = signal.sigwait([signum])
|
|
|
|
if received != signum:
|
|
|
|
print("sigwait() received %s, not %s" % (received, signum),
|
|
|
|
file=sys.stderr)
|
2011-06-13 11:19:06 -03:00
|
|
|
sys.exit(1)
|
2011-06-09 20:39:53 -03:00
|
|
|
killer.join()
|
2011-06-13 11:19:06 -03:00
|
|
|
# unblock the signal, which should have been cleared by sigwait()
|
|
|
|
signal.pthread_sigmask(signal.SIG_UNBLOCK, [signum])
|
|
|
|
""")
|
2011-06-10 07:48:13 -03:00
|
|
|
|
2011-05-07 20:46:11 -03:00
|
|
|
@unittest.skipUnless(hasattr(signal, 'pthread_sigmask'),
|
|
|
|
'need signal.pthread_sigmask()')
|
|
|
|
def test_pthread_sigmask_arguments(self):
|
|
|
|
self.assertRaises(TypeError, signal.pthread_sigmask)
|
|
|
|
self.assertRaises(TypeError, signal.pthread_sigmask, 1)
|
|
|
|
self.assertRaises(TypeError, signal.pthread_sigmask, 1, 2, 3)
|
|
|
|
self.assertRaises(OSError, signal.pthread_sigmask, 1700, [])
|
2018-05-04 08:00:50 -03:00
|
|
|
with self.assertRaises(ValueError):
|
|
|
|
signal.pthread_sigmask(signal.SIG_BLOCK, [signal.NSIG])
|
2018-05-08 01:48:50 -03:00
|
|
|
with self.assertRaises(ValueError):
|
|
|
|
signal.pthread_sigmask(signal.SIG_BLOCK, [0])
|
|
|
|
with self.assertRaises(ValueError):
|
|
|
|
signal.pthread_sigmask(signal.SIG_BLOCK, [1<<1000])
|
2018-05-04 08:00:50 -03:00
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(signal, 'pthread_sigmask'),
|
|
|
|
'need signal.pthread_sigmask()')
|
|
|
|
def test_pthread_sigmask_valid_signals(self):
|
|
|
|
s = signal.pthread_sigmask(signal.SIG_BLOCK, signal.valid_signals())
|
|
|
|
self.addCleanup(signal.pthread_sigmask, signal.SIG_SETMASK, s)
|
|
|
|
# Get current blocked set
|
|
|
|
s = signal.pthread_sigmask(signal.SIG_UNBLOCK, signal.valid_signals())
|
|
|
|
self.assertLessEqual(s, signal.valid_signals())
|
2011-05-07 20:46:11 -03:00
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(signal, 'pthread_sigmask'),
|
|
|
|
'need signal.pthread_sigmask()')
|
2022-04-07 04:22:47 -03:00
|
|
|
@threading_helper.requires_working_threading()
|
2011-05-07 20:46:11 -03:00
|
|
|
def test_pthread_sigmask(self):
|
2011-07-04 12:49:40 -03:00
|
|
|
code = """if 1:
|
|
|
|
import signal
|
|
|
|
import os; import threading
|
|
|
|
|
|
|
|
def handler(signum, frame):
|
|
|
|
1/0
|
|
|
|
|
|
|
|
def kill(signum):
|
|
|
|
os.kill(os.getpid(), signum)
|
|
|
|
|
2014-04-04 10:34:17 -03:00
|
|
|
def check_mask(mask):
|
|
|
|
for sig in mask:
|
|
|
|
assert isinstance(sig, signal.Signals), repr(sig)
|
|
|
|
|
2011-07-04 12:49:40 -03:00
|
|
|
def read_sigmask():
|
2014-04-04 10:34:17 -03:00
|
|
|
sigmask = signal.pthread_sigmask(signal.SIG_BLOCK, [])
|
|
|
|
check_mask(sigmask)
|
|
|
|
return sigmask
|
2011-07-04 12:49:40 -03:00
|
|
|
|
2011-05-07 20:46:11 -03:00
|
|
|
signum = signal.SIGUSR1
|
2011-05-04 07:38:03 -03:00
|
|
|
|
2011-05-03 09:57:12 -03:00
|
|
|
# Install our signal handler
|
2011-07-04 12:49:40 -03:00
|
|
|
old_handler = signal.signal(signum, handler)
|
2011-04-30 10:21:58 -03:00
|
|
|
|
2011-05-03 09:57:12 -03:00
|
|
|
# Unblock SIGUSR1 (and copy the old mask) to test our signal handler
|
2011-04-30 10:21:58 -03:00
|
|
|
old_mask = signal.pthread_sigmask(signal.SIG_UNBLOCK, [signum])
|
2014-04-04 10:34:17 -03:00
|
|
|
check_mask(old_mask)
|
2011-07-04 12:49:40 -03:00
|
|
|
try:
|
|
|
|
kill(signum)
|
|
|
|
except ZeroDivisionError:
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
raise Exception("ZeroDivisionError not raised")
|
2011-04-30 10:21:58 -03:00
|
|
|
|
2011-05-03 09:57:12 -03:00
|
|
|
# Block and then raise SIGUSR1. The signal is blocked: the signal
|
|
|
|
# handler is not called, and the signal is now pending
|
2014-04-04 10:34:17 -03:00
|
|
|
mask = signal.pthread_sigmask(signal.SIG_BLOCK, [signum])
|
|
|
|
check_mask(mask)
|
2011-07-04 12:49:40 -03:00
|
|
|
kill(signum)
|
2011-04-30 10:21:58 -03:00
|
|
|
|
2011-05-03 09:57:12 -03:00
|
|
|
# Check the new mask
|
2011-07-04 12:49:40 -03:00
|
|
|
blocked = read_sigmask()
|
2014-04-04 10:34:17 -03:00
|
|
|
check_mask(blocked)
|
2011-07-04 13:06:35 -03:00
|
|
|
if signum not in blocked:
|
|
|
|
raise Exception("%s not in %s" % (signum, blocked))
|
|
|
|
if old_mask ^ blocked != {signum}:
|
|
|
|
raise Exception("%s ^ %s != {%s}" % (old_mask, blocked, signum))
|
2011-04-30 10:21:58 -03:00
|
|
|
|
2011-05-03 09:57:12 -03:00
|
|
|
# Unblock SIGUSR1
|
2011-07-04 12:49:40 -03:00
|
|
|
try:
|
2013-12-13 21:52:19 -04:00
|
|
|
# unblock the pending signal calls immediately the signal handler
|
2011-05-03 09:57:12 -03:00
|
|
|
signal.pthread_sigmask(signal.SIG_UNBLOCK, [signum])
|
2011-07-04 12:49:40 -03:00
|
|
|
except ZeroDivisionError:
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
raise Exception("ZeroDivisionError not raised")
|
|
|
|
try:
|
|
|
|
kill(signum)
|
|
|
|
except ZeroDivisionError:
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
raise Exception("ZeroDivisionError not raised")
|
2011-04-30 10:21:58 -03:00
|
|
|
|
2011-05-03 09:57:12 -03:00
|
|
|
# Check the new mask
|
2011-07-04 12:49:40 -03:00
|
|
|
unblocked = read_sigmask()
|
2011-07-04 13:06:35 -03:00
|
|
|
if signum in unblocked:
|
|
|
|
raise Exception("%s in %s" % (signum, unblocked))
|
|
|
|
if blocked ^ unblocked != {signum}:
|
|
|
|
raise Exception("%s ^ %s != {%s}" % (blocked, unblocked, signum))
|
|
|
|
if old_mask != unblocked:
|
|
|
|
raise Exception("%s != %s" % (old_mask, unblocked))
|
2011-07-04 12:49:40 -03:00
|
|
|
"""
|
|
|
|
assert_python_ok('-c', code)
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(signal, 'pthread_kill'),
|
|
|
|
'need signal.pthread_kill()')
|
2022-04-07 04:22:47 -03:00
|
|
|
@threading_helper.requires_working_threading()
|
2011-07-04 12:49:40 -03:00
|
|
|
def test_pthread_kill_main_thread(self):
|
|
|
|
# Test that a signal can be sent to the main thread with pthread_kill()
|
|
|
|
# before any other thread has been created (see issue #12392).
|
|
|
|
code = """if True:
|
|
|
|
import threading
|
|
|
|
import signal
|
|
|
|
import sys
|
|
|
|
|
|
|
|
def handler(signum, frame):
|
|
|
|
sys.exit(3)
|
|
|
|
|
|
|
|
signal.signal(signal.SIGUSR1, handler)
|
|
|
|
signal.pthread_kill(threading.get_ident(), signal.SIGUSR1)
|
|
|
|
sys.exit(2)
|
|
|
|
"""
|
|
|
|
|
|
|
|
with spawn_python('-c', code) as process:
|
|
|
|
stdout, stderr = process.communicate()
|
|
|
|
exitcode = process.wait()
|
|
|
|
if exitcode != 3:
|
|
|
|
raise Exception("Child error (exit code %s): %s" %
|
|
|
|
(exitcode, stdout))
|
2011-04-30 10:21:58 -03:00
|
|
|
|
|
|
|
|
2017-06-28 18:29:29 -03:00
|
|
|
class StressTest(unittest.TestCase):
|
|
|
|
"""
|
|
|
|
Stress signal delivery, especially when a signal arrives in
|
|
|
|
the middle of recomputing the signal state or executing
|
|
|
|
previously tripped signal handlers.
|
|
|
|
"""
|
|
|
|
|
2017-06-29 11:40:14 -03:00
|
|
|
def setsig(self, signum, handler):
|
|
|
|
old_handler = signal.signal(signum, handler)
|
|
|
|
self.addCleanup(signal.signal, signum, old_handler)
|
|
|
|
|
|
|
|
def measure_itimer_resolution(self):
|
|
|
|
N = 20
|
|
|
|
times = []
|
|
|
|
|
|
|
|
def handler(signum=None, frame=None):
|
|
|
|
if len(times) < N:
|
|
|
|
times.append(time.perf_counter())
|
|
|
|
# 1 µs is the smallest possible timer interval,
|
|
|
|
# we want to measure what the concrete duration
|
|
|
|
# will be on this platform
|
|
|
|
signal.setitimer(signal.ITIMER_REAL, 1e-6)
|
|
|
|
|
|
|
|
self.addCleanup(signal.setitimer, signal.ITIMER_REAL, 0)
|
|
|
|
self.setsig(signal.SIGALRM, handler)
|
|
|
|
handler()
|
|
|
|
while len(times) < N:
|
|
|
|
time.sleep(1e-3)
|
|
|
|
|
|
|
|
durations = [times[i+1] - times[i] for i in range(len(times) - 1)]
|
|
|
|
med = statistics.median(durations)
|
|
|
|
if support.verbose:
|
|
|
|
print("detected median itimer() resolution: %.6f s." % (med,))
|
|
|
|
return med
|
|
|
|
|
|
|
|
def decide_itimer_count(self):
|
|
|
|
# Some systems have poor setitimer() resolution (for example
|
|
|
|
# measured around 20 ms. on FreeBSD 9), so decide on a reasonable
|
|
|
|
# number of sequential timers based on that.
|
|
|
|
reso = self.measure_itimer_resolution()
|
|
|
|
if reso <= 1e-4:
|
|
|
|
return 10000
|
|
|
|
elif reso <= 1e-2:
|
|
|
|
return 100
|
|
|
|
else:
|
|
|
|
self.skipTest("detected itimer resolution (%.3f s.) too high "
|
|
|
|
"(> 10 ms.) on this platform (or system too busy)"
|
|
|
|
% (reso,))
|
|
|
|
|
2017-06-28 18:29:29 -03:00
|
|
|
@unittest.skipUnless(hasattr(signal, "setitimer"),
|
|
|
|
"test needs setitimer()")
|
|
|
|
def test_stress_delivery_dependent(self):
|
|
|
|
"""
|
|
|
|
This test uses dependent signal handlers.
|
|
|
|
"""
|
2017-06-29 11:40:14 -03:00
|
|
|
N = self.decide_itimer_count()
|
2017-06-28 18:29:29 -03:00
|
|
|
sigs = []
|
|
|
|
|
|
|
|
def first_handler(signum, frame):
|
|
|
|
# 1e-6 is the minimum non-zero value for `setitimer()`.
|
|
|
|
# Choose a random delay so as to improve chances of
|
|
|
|
# triggering a race condition. Ideally the signal is received
|
|
|
|
# when inside critical signal-handling routines such as
|
|
|
|
# Py_MakePendingCalls().
|
|
|
|
signal.setitimer(signal.ITIMER_REAL, 1e-6 + random.random() * 1e-5)
|
|
|
|
|
|
|
|
def second_handler(signum=None, frame=None):
|
|
|
|
sigs.append(signum)
|
|
|
|
|
|
|
|
# Here on Linux, SIGPROF > SIGALRM > SIGUSR1. By using both
|
|
|
|
# ascending and descending sequences (SIGUSR1 then SIGALRM,
|
|
|
|
# SIGPROF then SIGALRM), we maximize chances of hitting a bug.
|
2017-06-29 11:40:14 -03:00
|
|
|
self.setsig(signal.SIGPROF, first_handler)
|
|
|
|
self.setsig(signal.SIGUSR1, first_handler)
|
|
|
|
self.setsig(signal.SIGALRM, second_handler) # for ITIMER_REAL
|
2017-06-28 18:29:29 -03:00
|
|
|
|
|
|
|
expected_sigs = 0
|
2019-12-11 06:30:03 -04:00
|
|
|
deadline = time.monotonic() + support.SHORT_TIMEOUT
|
2017-06-28 18:29:29 -03:00
|
|
|
|
|
|
|
while expected_sigs < N:
|
|
|
|
os.kill(os.getpid(), signal.SIGPROF)
|
|
|
|
expected_sigs += 1
|
|
|
|
# Wait for handlers to run to avoid signal coalescing
|
2018-12-17 04:36:36 -04:00
|
|
|
while len(sigs) < expected_sigs and time.monotonic() < deadline:
|
2017-06-28 18:29:29 -03:00
|
|
|
time.sleep(1e-5)
|
|
|
|
|
|
|
|
os.kill(os.getpid(), signal.SIGUSR1)
|
|
|
|
expected_sigs += 1
|
2018-12-17 04:36:36 -04:00
|
|
|
while len(sigs) < expected_sigs and time.monotonic() < deadline:
|
2017-06-28 18:29:29 -03:00
|
|
|
time.sleep(1e-5)
|
|
|
|
|
|
|
|
# All ITIMER_REAL signals should have been delivered to the
|
|
|
|
# Python handler
|
|
|
|
self.assertEqual(len(sigs), N, "Some signals were lost")
|
|
|
|
|
|
|
|
@unittest.skipUnless(hasattr(signal, "setitimer"),
|
|
|
|
"test needs setitimer()")
|
|
|
|
def test_stress_delivery_simultaneous(self):
|
|
|
|
"""
|
|
|
|
This test uses simultaneous signal handlers.
|
|
|
|
"""
|
2017-06-29 11:40:14 -03:00
|
|
|
N = self.decide_itimer_count()
|
2017-06-28 18:29:29 -03:00
|
|
|
sigs = []
|
|
|
|
|
|
|
|
def handler(signum, frame):
|
|
|
|
sigs.append(signum)
|
|
|
|
|
2017-06-29 11:40:14 -03:00
|
|
|
self.setsig(signal.SIGUSR1, handler)
|
|
|
|
self.setsig(signal.SIGALRM, handler) # for ITIMER_REAL
|
2017-06-28 18:29:29 -03:00
|
|
|
|
|
|
|
expected_sigs = 0
|
|
|
|
while expected_sigs < N:
|
|
|
|
# Hopefully the SIGALRM will be received somewhere during
|
|
|
|
# initial processing of SIGUSR1.
|
|
|
|
signal.setitimer(signal.ITIMER_REAL, 1e-6 + random.random() * 1e-5)
|
|
|
|
os.kill(os.getpid(), signal.SIGUSR1)
|
|
|
|
|
|
|
|
expected_sigs += 2
|
|
|
|
# Wait for handlers to run to avoid signal coalescing
|
2022-06-16 08:44:58 -03:00
|
|
|
for _ in support.sleeping_retry(support.SHORT_TIMEOUT):
|
2022-06-15 06:42:10 -03:00
|
|
|
if len(sigs) >= expected_sigs:
|
|
|
|
break
|
2017-06-28 18:29:29 -03:00
|
|
|
|
|
|
|
# All ITIMER_REAL signals should have been delivered to the
|
|
|
|
# Python handler
|
|
|
|
self.assertEqual(len(sigs), N, "Some signals were lost")
|
|
|
|
|
2024-06-27 15:03:09 -03:00
|
|
|
@support.requires_gil_enabled("gh-121065: test is flaky on free-threaded build")
|
2024-02-04 20:04:57 -04:00
|
|
|
@unittest.skipIf(is_apple, "crashes due to system bug (FB13453490)")
|
2021-03-05 05:32:50 -04:00
|
|
|
@unittest.skipUnless(hasattr(signal, "SIGUSR1"),
|
|
|
|
"test needs SIGUSR1")
|
2022-04-07 04:22:47 -03:00
|
|
|
@threading_helper.requires_working_threading()
|
2021-03-05 05:32:50 -04:00
|
|
|
def test_stress_modifying_handlers(self):
|
|
|
|
# bpo-43406: race condition between trip_signal() and signal.signal
|
|
|
|
signum = signal.SIGUSR1
|
|
|
|
num_sent_signals = 0
|
|
|
|
num_received_signals = 0
|
|
|
|
do_stop = False
|
|
|
|
|
|
|
|
def custom_handler(signum, frame):
|
|
|
|
nonlocal num_received_signals
|
|
|
|
num_received_signals += 1
|
|
|
|
|
|
|
|
def set_interrupts():
|
|
|
|
nonlocal num_sent_signals
|
|
|
|
while not do_stop:
|
|
|
|
signal.raise_signal(signum)
|
|
|
|
num_sent_signals += 1
|
|
|
|
|
|
|
|
def cycle_handlers():
|
2023-10-10 20:59:43 -03:00
|
|
|
while num_sent_signals < 100 or num_received_signals < 1:
|
2021-03-05 05:32:50 -04:00
|
|
|
for i in range(20000):
|
|
|
|
# Cycle between a Python-defined and a non-Python handler
|
|
|
|
for handler in [custom_handler, signal.SIG_IGN]:
|
|
|
|
signal.signal(signum, handler)
|
|
|
|
|
|
|
|
old_handler = signal.signal(signum, custom_handler)
|
|
|
|
self.addCleanup(signal.signal, signum, old_handler)
|
2021-03-10 10:26:45 -04:00
|
|
|
|
2021-03-05 05:32:50 -04:00
|
|
|
t = threading.Thread(target=set_interrupts)
|
|
|
|
try:
|
2021-03-10 10:26:45 -04:00
|
|
|
ignored = False
|
2021-03-05 05:32:50 -04:00
|
|
|
with support.catch_unraisable_exception() as cm:
|
2021-03-10 10:26:45 -04:00
|
|
|
t.start()
|
2021-03-05 05:32:50 -04:00
|
|
|
cycle_handlers()
|
2021-03-10 10:26:45 -04:00
|
|
|
do_stop = True
|
|
|
|
t.join()
|
|
|
|
|
2021-03-05 05:32:50 -04:00
|
|
|
if cm.unraisable is not None:
|
|
|
|
# An unraisable exception may be printed out when
|
|
|
|
# a signal is ignored due to the aforementioned
|
|
|
|
# race condition, check it.
|
|
|
|
self.assertIsInstance(cm.unraisable.exc_value, OSError)
|
|
|
|
self.assertIn(
|
2021-04-27 17:05:08 -03:00
|
|
|
f"Signal {signum:d} ignored due to race condition",
|
2021-03-05 05:32:50 -04:00
|
|
|
str(cm.unraisable.exc_value))
|
2021-03-10 10:26:45 -04:00
|
|
|
ignored = True
|
|
|
|
|
|
|
|
# bpo-43406: Even if it is unlikely, it's technically possible that
|
|
|
|
# all signals were ignored because of race conditions.
|
|
|
|
if not ignored:
|
|
|
|
# Sanity check that some signals were received, but not all
|
|
|
|
self.assertGreater(num_received_signals, 0)
|
2023-10-10 20:59:43 -03:00
|
|
|
self.assertLessEqual(num_received_signals, num_sent_signals)
|
2021-03-05 05:32:50 -04:00
|
|
|
finally:
|
|
|
|
do_stop = True
|
|
|
|
t.join()
|
|
|
|
|
|
|
|
|
2019-01-08 05:58:25 -04:00
|
|
|
class RaiseSignalTest(unittest.TestCase):
|
|
|
|
|
|
|
|
def test_sigint(self):
|
2019-02-16 16:57:40 -04:00
|
|
|
with self.assertRaises(KeyboardInterrupt):
|
2019-01-08 05:58:25 -04:00
|
|
|
signal.raise_signal(signal.SIGINT)
|
|
|
|
|
|
|
|
@unittest.skipIf(sys.platform != "win32", "Windows specific test")
|
|
|
|
def test_invalid_argument(self):
|
|
|
|
try:
|
|
|
|
SIGHUP = 1 # not supported on win32
|
|
|
|
signal.raise_signal(SIGHUP)
|
|
|
|
self.fail("OSError (Invalid argument) expected")
|
|
|
|
except OSError as e:
|
|
|
|
if e.errno == errno.EINVAL:
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
raise
|
|
|
|
|
|
|
|
def test_handler(self):
|
|
|
|
is_ok = False
|
|
|
|
def handler(a, b):
|
|
|
|
nonlocal is_ok
|
|
|
|
is_ok = True
|
|
|
|
old_signal = signal.signal(signal.SIGINT, handler)
|
|
|
|
self.addCleanup(signal.signal, signal.SIGINT, old_signal)
|
|
|
|
|
|
|
|
signal.raise_signal(signal.SIGINT)
|
|
|
|
self.assertTrue(is_ok)
|
|
|
|
|
2023-03-08 03:59:39 -04:00
|
|
|
def test__thread_interrupt_main(self):
|
|
|
|
# See https://github.com/python/cpython/issues/102397
|
|
|
|
code = """if 1:
|
|
|
|
import _thread
|
|
|
|
class Foo():
|
|
|
|
def __del__(self):
|
|
|
|
_thread.interrupt_main()
|
|
|
|
|
|
|
|
x = Foo()
|
|
|
|
"""
|
|
|
|
|
|
|
|
rc, out, err = assert_python_ok('-c', code)
|
|
|
|
self.assertIn(b'OSError: Signal 2 ignored due to race condition', err)
|
|
|
|
|
|
|
|
|
2017-06-28 18:29:29 -03:00
|
|
|
|
2019-11-20 00:39:14 -04:00
|
|
|
class PidfdSignalTest(unittest.TestCase):
|
|
|
|
|
|
|
|
@unittest.skipUnless(
|
|
|
|
hasattr(signal, "pidfd_send_signal"),
|
|
|
|
"pidfd support not built in",
|
|
|
|
)
|
|
|
|
def test_pidfd_send_signal(self):
|
|
|
|
with self.assertRaises(OSError) as cm:
|
|
|
|
signal.pidfd_send_signal(0, signal.SIGINT)
|
|
|
|
if cm.exception.errno == errno.ENOSYS:
|
|
|
|
self.skipTest("kernel does not support pidfds")
|
2019-12-29 17:35:54 -04:00
|
|
|
elif cm.exception.errno == errno.EPERM:
|
|
|
|
self.skipTest("Not enough privileges to use pidfs")
|
2019-11-20 00:39:14 -04:00
|
|
|
self.assertEqual(cm.exception.errno, errno.EBADF)
|
|
|
|
my_pidfd = os.open(f'/proc/{os.getpid()}', os.O_DIRECTORY)
|
|
|
|
self.addCleanup(os.close, my_pidfd)
|
2020-01-30 06:26:22 -04:00
|
|
|
with self.assertRaisesRegex(TypeError, "^siginfo must be None$"):
|
2019-11-20 00:39:14 -04:00
|
|
|
signal.pidfd_send_signal(my_pidfd, signal.SIGINT, object(), 0)
|
|
|
|
with self.assertRaises(KeyboardInterrupt):
|
|
|
|
signal.pidfd_send_signal(my_pidfd, signal.SIGINT)
|
|
|
|
|
2015-04-13 17:00:43 -03:00
|
|
|
def tearDownModule():
|
|
|
|
support.reap_children()
|
Merge the trunk changes in. Breaks socket.ssl for now.
Merged revisions 57392-57619 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r57395 | georg.brandl | 2007-08-24 19:23:23 +0200 (Fri, 24 Aug 2007) | 2 lines
Bug #1011: fix rfc822.Message.getheader docs.
........
r57397 | georg.brandl | 2007-08-24 19:38:49 +0200 (Fri, 24 Aug 2007) | 2 lines
Patch #1006: port test_winreg to unittest.
........
r57398 | georg.brandl | 2007-08-24 19:46:54 +0200 (Fri, 24 Aug 2007) | 2 lines
Fix #1012: wrong URL to :mod:`site` in install/index.rst.
........
r57399 | georg.brandl | 2007-08-24 20:07:52 +0200 (Fri, 24 Aug 2007) | 2 lines
Patch #1008: port test_signal to unittest.
........
r57400 | georg.brandl | 2007-08-24 20:22:54 +0200 (Fri, 24 Aug 2007) | 2 lines
Port test_frozen to unittest.
........
r57401 | georg.brandl | 2007-08-24 20:27:43 +0200 (Fri, 24 Aug 2007) | 2 lines
Document new utility functions in test_support.
........
r57402 | georg.brandl | 2007-08-24 20:30:06 +0200 (Fri, 24 Aug 2007) | 2 lines
Remove test_rgbimg output file, there is no test_rgbimg.py.
........
r57403 | georg.brandl | 2007-08-24 20:35:27 +0200 (Fri, 24 Aug 2007) | 2 lines
Remove output file for test_ossaudiodev, also properly close the dsp object.
........
r57404 | georg.brandl | 2007-08-24 20:46:27 +0200 (Fri, 24 Aug 2007) | 2 lines
Convert test_linuxaudiodev to unittest. Fix a wrong finally clause in test_ossaudiodev.
........
r57406 | collin.winter | 2007-08-24 21:13:58 +0200 (Fri, 24 Aug 2007) | 1 line
Convert test_pkg to use unittest.
........
r57408 | georg.brandl | 2007-08-24 21:22:34 +0200 (Fri, 24 Aug 2007) | 2 lines
Catch the correct errors.
........
r57409 | georg.brandl | 2007-08-24 21:33:53 +0200 (Fri, 24 Aug 2007) | 2 lines
Port test_class to unittest. Patch #1671298.
........
r57415 | collin.winter | 2007-08-24 23:09:42 +0200 (Fri, 24 Aug 2007) | 1 line
Make test_structmembers pass when run with regrtests's -R flag.
........
r57455 | nick.coghlan | 2007-08-25 06:32:07 +0200 (Sat, 25 Aug 2007) | 1 line
Revert misguided attempt at fixing incompatibility between -m and -i switches (better fix coming soon)
........
r57456 | nick.coghlan | 2007-08-25 06:35:54 +0200 (Sat, 25 Aug 2007) | 1 line
Revert compile.c changes that shouldn't have been included in previous checkin
........
r57461 | nick.coghlan | 2007-08-25 12:50:41 +0200 (Sat, 25 Aug 2007) | 1 line
Fix bug 1764407 - the -i switch now does the right thing when using the -m switch
........
r57464 | guido.van.rossum | 2007-08-25 17:08:43 +0200 (Sat, 25 Aug 2007) | 4 lines
Server-side SSL and certificate validation, by Bill Janssen.
While cleaning up Bill's C style, I may have cleaned up some code
he didn't touch as well (in _ssl.c).
........
r57465 | neal.norwitz | 2007-08-25 18:41:36 +0200 (Sat, 25 Aug 2007) | 3 lines
Try to get this to build with Visual Studio by moving all the variable
declarations to the beginning of a scope.
........
r57466 | neal.norwitz | 2007-08-25 18:54:38 +0200 (Sat, 25 Aug 2007) | 1 line
Fix test so it is skipped properly if there is no SSL support.
........
r57467 | neal.norwitz | 2007-08-25 18:58:09 +0200 (Sat, 25 Aug 2007) | 2 lines
Fix a few more variables to try to get this to compile with Visual Studio.
........
r57473 | neal.norwitz | 2007-08-25 19:25:17 +0200 (Sat, 25 Aug 2007) | 1 line
Try to get this test to pass for systems that do not have SO_REUSEPORT
........
r57482 | gregory.p.smith | 2007-08-26 02:26:00 +0200 (Sun, 26 Aug 2007) | 7 lines
keep setup.py from listing unneeded hash modules (_md5, _sha*) as
missing when they were not built because _hashlib with openssl provided
their functionality instead.
don't build bsddb185 if bsddb was built.
........
r57483 | neal.norwitz | 2007-08-26 03:08:16 +0200 (Sun, 26 Aug 2007) | 1 line
Fix typo in docstring (missing c in reacquire)
........
r57484 | neal.norwitz | 2007-08-26 03:42:03 +0200 (Sun, 26 Aug 2007) | 2 lines
Spell check (also americanify behaviour, it's almost 3 times as common)
........
r57503 | neal.norwitz | 2007-08-26 08:29:57 +0200 (Sun, 26 Aug 2007) | 4 lines
Reap children before the test starts so hopefully SocketServer
won't find any old children left around which causes an exception
in collect_children() and the test to fail.
........
r57510 | neal.norwitz | 2007-08-26 20:50:39 +0200 (Sun, 26 Aug 2007) | 1 line
Fail gracefully if the cert files cannot be created
........
r57513 | guido.van.rossum | 2007-08-26 21:35:09 +0200 (Sun, 26 Aug 2007) | 4 lines
Bill Janssen wrote:
Here's a patch which makes test_ssl a better player in the buildbots
environment. I deep-ended on "try-except-else" clauses.
........
r57518 | neal.norwitz | 2007-08-26 23:40:16 +0200 (Sun, 26 Aug 2007) | 1 line
Get the test passing by commenting out some writes (should they be removed?)
........
r57522 | neal.norwitz | 2007-08-27 00:16:23 +0200 (Mon, 27 Aug 2007) | 3 lines
Catch IOError for when the device file doesn't exist or the user doesn't have
permission to write to the device.
........
r57524 | neal.norwitz | 2007-08-27 00:20:03 +0200 (Mon, 27 Aug 2007) | 5 lines
Another patch from Bill Janssen that:
1) Fixes the bug that two class names are initial-lower-case.
2) Replaces the poll waiting for the server to become ready with
a threading.Event signal.
........
r57536 | neal.norwitz | 2007-08-27 02:58:33 +0200 (Mon, 27 Aug 2007) | 1 line
Stop using string.join (from the module) to ease upgrade to py3k
........
r57537 | neal.norwitz | 2007-08-27 03:03:18 +0200 (Mon, 27 Aug 2007) | 1 line
Make a utility function for handling (printing) an error
........
r57538 | neal.norwitz | 2007-08-27 03:15:33 +0200 (Mon, 27 Aug 2007) | 4 lines
If we can't create a certificate, print a warning, but don't fail the test.
Modified patch from what Bill Janssen sent on python-3000.
........
r57539 | facundo.batista | 2007-08-27 03:15:34 +0200 (Mon, 27 Aug 2007) | 7 lines
Ignore test failures caused by 'resource temporarily unavailable'
exceptions raised in the test server thread, since SimpleXMLRPCServer
does not gracefully handle them. Changed number of requests handled
by tests server thread to one (was 2) because no tests require more
than one request. [GSoC - Alan McIntyre]
........
r57561 | guido.van.rossum | 2007-08-27 19:19:42 +0200 (Mon, 27 Aug 2007) | 8 lines
> Regardless, building a fixed test certificate and checking it in sounds like
> the better option. Then the openssl command in the test code can be turned
> into a comment describing how the test data was pregenerated.
Here's a patch that does that.
Bill
........
r57568 | guido.van.rossum | 2007-08-27 20:42:23 +0200 (Mon, 27 Aug 2007) | 26 lines
> Some of the code sets the error string in this directly before
> returning NULL, and other pieces of the code call PySSL_SetError,
> which creates the error string. I think some of the places which set
> the string directly probably shouldn't; instead, they should call
> PySSL_SetError to cons up the error name directly from the err code.
> However, PySSL_SetError only works after the construction of an ssl
> object, which means it can't be used there... I'll take a longer look
> at it and see if there's a reasonable fix.
Here's a patch which addresses this. It also fixes the indentation in
PySSL_SetError, bringing it into line with PEP 7, fixes a compile warning
about one of the OpenSSL macros, and makes the namespace a bit more
consistent. I've tested it on FC 7 and OS X 10.4.
% ./python ./Lib/test/regrtest.py -R :1: -u all test_ssl
test_ssl
beginning 6 repetitions
123456
......
1 test OK.
[29244 refs]
%
[GvR: slightly edited to enforce 79-char line length, even if it required
violating the style guide.]
........
r57570 | guido.van.rossum | 2007-08-27 21:11:11 +0200 (Mon, 27 Aug 2007) | 2 lines
Patch 10124 by Bill Janssen, docs for the new ssl code.
........
r57574 | guido.van.rossum | 2007-08-27 22:51:00 +0200 (Mon, 27 Aug 2007) | 3 lines
Patch # 1739906 by Christian Heimes -- add reduce to functools (importing
it from __builtin__).
........
r57575 | guido.van.rossum | 2007-08-27 22:52:10 +0200 (Mon, 27 Aug 2007) | 2 lines
News about functools.reduce.
........
r57611 | georg.brandl | 2007-08-28 10:29:08 +0200 (Tue, 28 Aug 2007) | 2 lines
Document rev. 57574.
........
r57612 | sean.reifschneider | 2007-08-28 11:07:54 +0200 (Tue, 28 Aug 2007) | 2 lines
Adding basic imputil documentation.
........
r57614 | georg.brandl | 2007-08-28 12:48:18 +0200 (Tue, 28 Aug 2007) | 2 lines
Fix some glitches.
........
r57616 | lars.gustaebel | 2007-08-28 14:31:09 +0200 (Tue, 28 Aug 2007) | 5 lines
TarFile.__init__() no longer fails if no name argument is passed and
the fileobj argument has no usable name attribute (e.g. StringIO).
(will backport to 2.5)
........
r57619 | thomas.wouters | 2007-08-28 17:28:19 +0200 (Tue, 28 Aug 2007) | 22 lines
Improve extended slicing support in builtin types and classes. Specifically:
- Specialcase extended slices that amount to a shallow copy the same way as
is done for simple slices, in the tuple, string and unicode case.
- Specialcase step-1 extended slices to optimize the common case for all
involved types.
- For lists, allow extended slice assignment of differing lengths as long
as the step is 1. (Previously, 'l[:2:1] = []' failed even though
'l[:2] = []' and 'l[:2:None] = []' do not.)
- Implement extended slicing for buffer, array, structseq, mmap and
UserString.UserString.
- Implement slice-object support (but not non-step-1 slice assignment) for
UserString.MutableString.
- Add tests for all new functionality.
........
2007-08-28 18:37:11 -03:00
|
|
|
|
|
|
|
if __name__ == "__main__":
|
2015-04-13 17:00:43 -03:00
|
|
|
unittest.main()
|