|
|
|
@ -28,7 +28,6 @@ import pickle |
|
|
|
import random |
|
|
|
import signal |
|
|
|
import sys |
|
|
|
import sysconfig |
|
|
|
import textwrap |
|
|
|
import threading |
|
|
|
import time |
|
|
|
@ -44,6 +43,7 @@ from test.support import import_helper |
|
|
|
from test.support import os_helper |
|
|
|
from test.support import threading_helper |
|
|
|
from test.support import warnings_helper |
|
|
|
from test.support import skip_if_sanitizer |
|
|
|
from test.support.os_helper import FakePath |
|
|
|
|
|
|
|
import codecs |
|
|
|
@ -66,17 +66,6 @@ else: |
|
|
|
class EmptyStruct(ctypes.Structure): |
|
|
|
pass |
|
|
|
|
|
|
|
_cflags = sysconfig.get_config_var('CFLAGS') or '' |
|
|
|
_config_args = sysconfig.get_config_var('CONFIG_ARGS') or '' |
|
|
|
MEMORY_SANITIZER = ( |
|
|
|
'-fsanitize=memory' in _cflags or |
|
|
|
'--with-memory-sanitizer' in _config_args |
|
|
|
) |
|
|
|
|
|
|
|
ADDRESS_SANITIZER = ( |
|
|
|
'-fsanitize=address' in _cflags |
|
|
|
) |
|
|
|
|
|
|
|
# Does io.IOBase finalizer log the exception if the close() method fails? |
|
|
|
# The exception is ignored silently by default in release build. |
|
|
|
IOBASE_EMITS_UNRAISABLE = (hasattr(sys, "gettotalrefcount") or sys.flags.dev_mode) |
|
|
|
@ -1550,8 +1539,8 @@ class BufferedReaderTest(unittest.TestCase, CommonBufferedTests): |
|
|
|
class CBufferedReaderTest(BufferedReaderTest, SizeofTest): |
|
|
|
tp = io.BufferedReader |
|
|
|
|
|
|
|
@unittest.skipIf(MEMORY_SANITIZER or ADDRESS_SANITIZER, "sanitizer defaults to crashing " |
|
|
|
"instead of returning NULL for malloc failure.") |
|
|
|
@skip_if_sanitizer(memory=True, address=True, reason= "sanitizer defaults to crashing " |
|
|
|
"instead of returning NULL for malloc failure.") |
|
|
|
def test_constructor(self): |
|
|
|
BufferedReaderTest.test_constructor(self) |
|
|
|
# The allocation can succeed on 32-bit builds, e.g. with more |
|
|
|
@ -1915,8 +1904,8 @@ class BufferedWriterTest(unittest.TestCase, CommonBufferedTests): |
|
|
|
class CBufferedWriterTest(BufferedWriterTest, SizeofTest): |
|
|
|
tp = io.BufferedWriter |
|
|
|
|
|
|
|
@unittest.skipIf(MEMORY_SANITIZER or ADDRESS_SANITIZER, "sanitizer defaults to crashing " |
|
|
|
"instead of returning NULL for malloc failure.") |
|
|
|
@skip_if_sanitizer(memory=True, address=True, reason= "sanitizer defaults to crashing " |
|
|
|
"instead of returning NULL for malloc failure.") |
|
|
|
def test_constructor(self): |
|
|
|
BufferedWriterTest.test_constructor(self) |
|
|
|
# The allocation can succeed on 32-bit builds, e.g. with more |
|
|
|
@ -2414,8 +2403,8 @@ class BufferedRandomTest(BufferedReaderTest, BufferedWriterTest): |
|
|
|
class CBufferedRandomTest(BufferedRandomTest, SizeofTest): |
|
|
|
tp = io.BufferedRandom |
|
|
|
|
|
|
|
@unittest.skipIf(MEMORY_SANITIZER or ADDRESS_SANITIZER, "sanitizer defaults to crashing " |
|
|
|
"instead of returning NULL for malloc failure.") |
|
|
|
@skip_if_sanitizer(memory=True, address=True, reason= "sanitizer defaults to crashing " |
|
|
|
"instead of returning NULL for malloc failure.") |
|
|
|
def test_constructor(self): |
|
|
|
BufferedRandomTest.test_constructor(self) |
|
|
|
# The allocation can succeed on 32-bit builds, e.g. with more |
|
|
|
|