Amend python_destructor_exception runtime test
Suppress the message that PyErr_WriteUnraisable writes to stderr, but check that it is called by checking some of the expected message contents. The output varies slightly for different versions of Python and -builtin
This commit is contained in:
parent
e4264e7ba8
commit
dd73d81933
1 changed files with 26 additions and 8 deletions
|
|
@ -2,13 +2,31 @@ import python_destructor_exception
|
|||
from StringIO import StringIO
|
||||
import sys
|
||||
|
||||
#buffer = StringIO()
|
||||
#sys.stderr = buffer
|
||||
|
||||
attributeErrorOccurred = False
|
||||
try:
|
||||
def error_function():
|
||||
python_destructor_exception.ClassWithThrowingDestructor().GetBlah()
|
||||
except AttributeError, e:
|
||||
attributeErrorOccurred = True
|
||||
|
||||
assert attributeErrorOccurred
|
||||
def runtest():
|
||||
attributeErrorOccurred = False
|
||||
try:
|
||||
error_function()
|
||||
except AttributeError, e:
|
||||
attributeErrorOccurred = True
|
||||
return attributeErrorOccurred
|
||||
|
||||
def runtestcaller():
|
||||
stderr_saved = sys.stderr
|
||||
buffer = StringIO()
|
||||
attributeErrorOccurred = False
|
||||
try:
|
||||
# Suppress stderr while making this call to suppress the output shown by PyErr_WriteUnraisable
|
||||
sys.stderr = buffer
|
||||
|
||||
attributeErrorOccurred = runtest()
|
||||
finally:
|
||||
sys.stderr.flush()
|
||||
sys.stderr = stderr_saved
|
||||
|
||||
assert attributeErrorOccurred
|
||||
assert buffer.getvalue().count("I am the ClassWithThrowingDestructor dtor doing bad things") >= 1
|
||||
|
||||
runtestcaller()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue