mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 21:51:50 +00:00 
			
		
		
		
	Issue #27348: Merge exception formatting fix from 3.5 into 3.6
This commit is contained in:
		
						commit
						f3b0639417
					
				
					 4 changed files with 18 additions and 7 deletions
				
			
		|  | @ -4156,7 +4156,7 @@ def create_decimal_from_float(self, f): | ||||||
|         >>> 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_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 @@ def __str__(self): | ||||||
|             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 @@ def e(): | ||||||
|         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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Martin Panter
						Martin Panter