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
|
from StringIO import StringIO
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
#buffer = StringIO()
|
def error_function():
|
||||||
#sys.stderr = buffer
|
|
||||||
|
|
||||||
attributeErrorOccurred = False
|
|
||||||
try:
|
|
||||||
python_destructor_exception.ClassWithThrowingDestructor().GetBlah()
|
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