Issue #27348: Merge exception formatting fix from 3.5 into 3.6
This commit is contained in:
commit
f3b0639417
|
@ -4156,7 +4156,7 @@ class Context(object):
|
||||||
>>> context.create_decimal_from_float(3.1415926535897932)
|
>>> context.create_decimal_from_float(3.1415926535897932)
|
||||||
Traceback (most recent call last):
|
Traceback (most recent call last):
|
||||||
...
|
...
|
||||||
decimal.Inexact
|
decimal.Inexact: None
|
||||||
|
|
||||||
"""
|
"""
|
||||||
d = Decimal.from_float(f) # An exact conversion
|
d = Decimal.from_float(f) # An exact conversion
|
||||||
|
|
|
@ -19,7 +19,7 @@ test_frame = namedtuple('frame', ['f_code', 'f_globals', 'f_locals'])
|
||||||
test_tb = namedtuple('tb', ['tb_frame', 'tb_lineno', 'tb_next'])
|
test_tb = namedtuple('tb', ['tb_frame', 'tb_lineno', 'tb_next'])
|
||||||
|
|
||||||
|
|
||||||
class SyntaxTracebackCases(unittest.TestCase):
|
class TracebackCases(unittest.TestCase):
|
||||||
# For now, a very minimal set of tests. I want to be sure that
|
# For now, a very minimal set of tests. I want to be sure that
|
||||||
# formatting of SyntaxErrors works based on changes for 2.1.
|
# formatting of SyntaxErrors works based on changes for 2.1.
|
||||||
|
|
||||||
|
@ -106,10 +106,6 @@ class SyntaxTracebackCases(unittest.TestCase):
|
||||||
str_name = '.'.join([X.__module__, X.__qualname__])
|
str_name = '.'.join([X.__module__, X.__qualname__])
|
||||||
self.assertEqual(err[0], "%s: %s\n" % (str_name, str_value))
|
self.assertEqual(err[0], "%s: %s\n" % (str_name, str_value))
|
||||||
|
|
||||||
def test_without_exception(self):
|
|
||||||
err = traceback.format_exception_only(None, None)
|
|
||||||
self.assertEqual(err, ['None\n'])
|
|
||||||
|
|
||||||
def test_encoded_file(self):
|
def test_encoded_file(self):
|
||||||
# Test that tracebacks are correctly printed for encoded source files:
|
# Test that tracebacks are correctly printed for encoded source files:
|
||||||
# - correct line number (Issue2384)
|
# - correct line number (Issue2384)
|
||||||
|
@ -587,6 +583,17 @@ class BaseExceptionReportingTests:
|
||||||
msg = self.get_report(e).splitlines()
|
msg = self.get_report(e).splitlines()
|
||||||
self.assertEqual(msg[-2], ' ^')
|
self.assertEqual(msg[-2], ' ^')
|
||||||
|
|
||||||
|
def test_message_none(self):
|
||||||
|
# A message that looks like "None" should not be treated specially
|
||||||
|
err = self.get_report(Exception(None))
|
||||||
|
self.assertIn('Exception: None\n', err)
|
||||||
|
err = self.get_report(Exception('None'))
|
||||||
|
self.assertIn('Exception: None\n', err)
|
||||||
|
err = self.get_report(Exception())
|
||||||
|
self.assertIn('Exception\n', err)
|
||||||
|
err = self.get_report(Exception(''))
|
||||||
|
self.assertIn('Exception\n', err)
|
||||||
|
|
||||||
|
|
||||||
class PyExcReportingTests(BaseExceptionReportingTests, unittest.TestCase):
|
class PyExcReportingTests(BaseExceptionReportingTests, unittest.TestCase):
|
||||||
#
|
#
|
||||||
|
|
|
@ -140,7 +140,7 @@ def format_exception_only(etype, value):
|
||||||
|
|
||||||
def _format_final_exc_line(etype, value):
|
def _format_final_exc_line(etype, value):
|
||||||
valuestr = _some_str(value)
|
valuestr = _some_str(value)
|
||||||
if value == 'None' or value is None or not valuestr:
|
if value is None or not valuestr:
|
||||||
line = "%s\n" % etype
|
line = "%s\n" % etype
|
||||||
else:
|
else:
|
||||||
line = "%s: %s\n" % (etype, valuestr)
|
line = "%s: %s\n" % (etype, valuestr)
|
||||||
|
|
|
@ -35,6 +35,10 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #27348: In the traceback module, restore the formatting of exception
|
||||||
|
messages like "Exception: None". This fixes a regression introduced in
|
||||||
|
3.5a2.
|
||||||
|
|
||||||
- Issue #25651: Allow falsy values to be used for msg parameter of subTest().
|
- Issue #25651: Allow falsy values to be used for msg parameter of subTest().
|
||||||
|
|
||||||
- Issue #27778: Fix a memory leak in os.getrandom() when the getrandom() is
|
- Issue #27778: Fix a memory leak in os.getrandom() when the getrandom() is
|
||||||
|
|
Loading…
Reference in New Issue