Skip to content

Commit

Permalink
Issue python#27348: Restore “Exception: None” formatting in traceback…
Browse files Browse the repository at this point in the history
… module

This fixes a regression caused by revision 73afda5a4e4c. Also reverts the
decimal test workaround added in revision 5f3dd0a2b1ab.

Remove test_without_exception(). According to revision ecaafc32c500, this was
added in Python 2 so that print_exc() would output “None” when called with no
exception set. However print_exc() never worked like this in Python 3, and
the use case is not documented.

Restore TracebackCases class name (instead of SyntaxTracebackCases), because
the class also tests other exceptions.
  • Loading branch information
vadmium committed Sep 22, 2016
1 parent 92bb90a commit bb8b1cb
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 7 deletions.
2 changes: 1 addition & 1 deletion Lib/_pydecimal.py
Original file line number Diff line number Diff line change
Expand Up @@ -4106,7 +4106,7 @@ def create_decimal_from_float(self, f):
>>> context.create_decimal_from_float(3.1415926535897932)
Traceback (most recent call last):
...
decimal.Inexact
decimal.Inexact: None
"""
d = Decimal.from_float(f) # An exact conversion
Expand Down
17 changes: 12 additions & 5 deletions Lib/test/test_traceback.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
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
# formatting of SyntaxErrors works based on changes for 2.1.

Expand Down Expand Up @@ -106,10 +106,6 @@ def __str__(self):
str_name = '.'.join([X.__module__, X.__qualname__])
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):
# Test that tracebacks are correctly printed for encoded source files:
# - correct line number (Issue2384)
Expand Down Expand Up @@ -456,6 +452,17 @@ def e():
msg = self.get_report(e).splitlines()
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):
#
Expand Down
2 changes: 1 addition & 1 deletion Lib/traceback.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ def format_exception_only(etype, value):

def _format_final_exc_line(etype, 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
else:
line = "%s: %s\n" % (etype, valuestr)
Expand Down
4 changes: 4 additions & 0 deletions Misc/NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,10 @@ Core and Builtins
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 #27932: Prevent memory leak in win32_ver().
Expand Down

0 comments on commit bb8b1cb

Please sign in to comment.