Issue #15229: An OSError subclass whose __init__ doesn't call back

OSError.__init__ could produce incomplete instances, leading to crashes
when calling str() on them.
This commit is contained in:
Antoine Pitrou 2012-06-30 23:37:47 +02:00
parent 4c99071c9b
commit f87289bb58
3 changed files with 19 additions and 0 deletions

View file

@ -29,6 +29,10 @@ class SubOSErrorCombinedInitFirst(SubOSErrorWithInit, SubOSErrorWithNew):
class SubOSErrorCombinedNewFirst(SubOSErrorWithNew, SubOSErrorWithInit):
pass
class SubOSErrorWithStandaloneInit(OSError):
def __init__(self):
pass
class HierarchyTest(unittest.TestCase):
@ -193,6 +197,12 @@ class ExplicitSubclassingTest(unittest.TestCase):
self.assertEqual(e.baz, "baz")
self.assertEqual(e.args, ("some message",))
def test_init_standalone(self):
# __init__ doesn't propagate to OSError.__init__ (see issue #15229)
e = SubOSErrorWithStandaloneInit()
self.assertEqual(e.args, ())
self.assertEqual(str(e), '')
def test_main():
support.run_unittest(__name__)