mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
bpo-40275: More lazy imports in test.support (GH-20131)
Make the the following imports lazy in test.support: * bz2 * gzip * lzma * resource * zlib The following test.support decorators now need to be called with parenthesis: * @support.requires_bz2 * @support.requires_gzip * @support.requires_lzma * @support.requires_zlib For example, "@requires_zlib" becomes "@requires_zlib()".
This commit is contained in:
parent
ced4e5c227
commit
a3ec3ad9e2
10 changed files with 81 additions and 77 deletions
|
@ -28,31 +28,6 @@ import warnings
|
|||
|
||||
from .testresult import get_test_runner
|
||||
|
||||
try:
|
||||
import zlib
|
||||
except ImportError:
|
||||
zlib = None
|
||||
|
||||
try:
|
||||
import gzip
|
||||
except ImportError:
|
||||
gzip = None
|
||||
|
||||
try:
|
||||
import bz2
|
||||
except ImportError:
|
||||
bz2 = None
|
||||
|
||||
try:
|
||||
import lzma
|
||||
except ImportError:
|
||||
lzma = None
|
||||
|
||||
try:
|
||||
import resource
|
||||
except ImportError:
|
||||
resource = None
|
||||
|
||||
__all__ = [
|
||||
# globals
|
||||
"PIPE_MAX_SIZE", "verbose", "max_memuse", "use_resources", "failfast",
|
||||
|
@ -705,13 +680,33 @@ requires_IEEE_754 = unittest.skipUnless(
|
|||
float.__getformat__("double").startswith("IEEE"),
|
||||
"test requires IEEE 754 doubles")
|
||||
|
||||
requires_zlib = unittest.skipUnless(zlib, 'requires zlib')
|
||||
def requires_zlib(reason='requires zlib'):
|
||||
try:
|
||||
import zlib
|
||||
except ImportError:
|
||||
zlib = None
|
||||
return unittest.skipUnless(zlib, reason)
|
||||
|
||||
requires_gzip = unittest.skipUnless(gzip, 'requires gzip')
|
||||
def requires_gzip(reason='requires gzip'):
|
||||
try:
|
||||
import gzip
|
||||
except ImportError:
|
||||
gzip = None
|
||||
return unittest.skipUnless(gzip, reason)
|
||||
|
||||
requires_bz2 = unittest.skipUnless(bz2, 'requires bz2')
|
||||
def requires_bz2(reason='requires bz2'):
|
||||
try:
|
||||
import bz2
|
||||
except ImportError:
|
||||
bz2 = None
|
||||
return unittest.skipUnless(bz2, reason)
|
||||
|
||||
requires_lzma = unittest.skipUnless(lzma, 'requires lzma')
|
||||
def requires_lzma(reason='requires lzma'):
|
||||
try:
|
||||
import lzma
|
||||
except ImportError:
|
||||
lzma = None
|
||||
return unittest.skipUnless(lzma, reason)
|
||||
|
||||
is_jython = sys.platform.startswith('java')
|
||||
|
||||
|
@ -1062,6 +1057,10 @@ def check_syntax_warning(testcase, statement, errtext='', *, lineno=1, offset=No
|
|||
|
||||
def open_urlresource(url, *args, **kw):
|
||||
import urllib.request, urllib.parse
|
||||
try:
|
||||
import gzip
|
||||
except ImportError:
|
||||
gzip = None
|
||||
|
||||
check = kw.pop('check', None)
|
||||
|
||||
|
@ -2579,11 +2578,16 @@ class SuppressCrashReport:
|
|||
self.old_modes[report_type] = old_mode, old_file
|
||||
|
||||
else:
|
||||
if resource is not None:
|
||||
try:
|
||||
import resource
|
||||
self.resource = resource
|
||||
except ImportError:
|
||||
self.resource = None
|
||||
if self.resource is not None:
|
||||
try:
|
||||
self.old_value = resource.getrlimit(resource.RLIMIT_CORE)
|
||||
resource.setrlimit(resource.RLIMIT_CORE,
|
||||
(0, self.old_value[1]))
|
||||
self.old_value = self.resource.getrlimit(self.resource.RLIMIT_CORE)
|
||||
self.resource.setrlimit(self.resource.RLIMIT_CORE,
|
||||
(0, self.old_value[1]))
|
||||
except (ValueError, OSError):
|
||||
pass
|
||||
|
||||
|
@ -2621,9 +2625,9 @@ class SuppressCrashReport:
|
|||
msvcrt.CrtSetReportMode(report_type, old_mode)
|
||||
msvcrt.CrtSetReportFile(report_type, old_file)
|
||||
else:
|
||||
if resource is not None:
|
||||
if self.resource is not None:
|
||||
try:
|
||||
resource.setrlimit(resource.RLIMIT_CORE, self.old_value)
|
||||
self.resource.setrlimit(self.resource.RLIMIT_CORE, self.old_value)
|
||||
except (ValueError, OSError):
|
||||
pass
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue