mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	bpo-22815: Print unexpected successes in summary in TextTestResult (GH-30138)
This commit is contained in:
		
							parent
							
								
									a23ab7b6d8
								
							
						
					
					
						commit
						1944434b44
					
				
					 3 changed files with 40 additions and 8 deletions
				
			
		|  | @ -142,6 +142,12 @@ def printErrors(self): | |||
|             self.stream.flush() | ||||
|         self.printErrorList('ERROR', self.errors) | ||||
|         self.printErrorList('FAIL', self.failures) | ||||
|         unexpectedSuccesses = getattr(self, 'unexpectedSuccesses', ()) | ||||
|         if unexpectedSuccesses: | ||||
|             self.stream.writeln(self.separator1) | ||||
|             for test in unexpectedSuccesses: | ||||
|                 self.stream.writeln(f"UNEXPECTED SUCCESS: {self.getDescription(test)}") | ||||
|             self.stream.flush() | ||||
| 
 | ||||
|     def printErrorList(self, flavour, errors): | ||||
|         for test, err in errors: | ||||
|  |  | |||
|  | @ -61,6 +61,17 @@ def testPass(self): | |||
|             pass | ||||
|         def testFail(self): | ||||
|             raise AssertionError | ||||
|         def testError(self): | ||||
|             1/0 | ||||
|         @unittest.skip('skipping') | ||||
|         def testSkipped(self): | ||||
|             raise AssertionError | ||||
|         @unittest.expectedFailure | ||||
|         def testExpectedFailure(self): | ||||
|             raise AssertionError | ||||
|         @unittest.expectedFailure | ||||
|         def testUnexpectedSuccess(self): | ||||
|             pass | ||||
| 
 | ||||
|     class FooBarLoader(unittest.TestLoader): | ||||
|         """Test loader that returns a suite containing FooBar.""" | ||||
|  | @ -111,9 +122,13 @@ def test_NonExit(self): | |||
|                                 testRunner=unittest.TextTestRunner(stream=stream), | ||||
|                                 testLoader=self.FooBarLoader()) | ||||
|         self.assertTrue(hasattr(program, 'result')) | ||||
|         self.assertIn('\nFAIL: testFail ', stream.getvalue()) | ||||
|         self.assertTrue(stream.getvalue().endswith('\n\nFAILED (failures=1)\n')) | ||||
| 
 | ||||
|         out = stream.getvalue() | ||||
|         self.assertIn('\nFAIL: testFail ', out) | ||||
|         self.assertIn('\nERROR: testError ', out) | ||||
|         self.assertIn('\nUNEXPECTED SUCCESS: testUnexpectedSuccess ', out) | ||||
|         expected = ('\n\nFAILED (failures=1, errors=1, skipped=1, ' | ||||
|                     'expected failures=1, unexpected successes=1)\n') | ||||
|         self.assertTrue(out.endswith(expected)) | ||||
| 
 | ||||
|     def test_Exit(self): | ||||
|         stream = BufferedWriter() | ||||
|  | @ -124,9 +139,13 @@ def test_Exit(self): | |||
|             testRunner=unittest.TextTestRunner(stream=stream), | ||||
|             exit=True, | ||||
|             testLoader=self.FooBarLoader()) | ||||
|         self.assertIn('\nFAIL: testFail ', stream.getvalue()) | ||||
|         self.assertTrue(stream.getvalue().endswith('\n\nFAILED (failures=1)\n')) | ||||
| 
 | ||||
|         out = stream.getvalue() | ||||
|         self.assertIn('\nFAIL: testFail ', out) | ||||
|         self.assertIn('\nERROR: testError ', out) | ||||
|         self.assertIn('\nUNEXPECTED SUCCESS: testUnexpectedSuccess ', out) | ||||
|         expected = ('\n\nFAILED (failures=1, errors=1, skipped=1, ' | ||||
|                     'expected failures=1, unexpected successes=1)\n') | ||||
|         self.assertTrue(out.endswith(expected)) | ||||
| 
 | ||||
|     def test_ExitAsDefault(self): | ||||
|         stream = BufferedWriter() | ||||
|  | @ -136,8 +155,13 @@ def test_ExitAsDefault(self): | |||
|             argv=["foobar"], | ||||
|             testRunner=unittest.TextTestRunner(stream=stream), | ||||
|             testLoader=self.FooBarLoader()) | ||||
|         self.assertIn('\nFAIL: testFail ', stream.getvalue()) | ||||
|         self.assertTrue(stream.getvalue().endswith('\n\nFAILED (failures=1)\n')) | ||||
|         out = stream.getvalue() | ||||
|         self.assertIn('\nFAIL: testFail ', out) | ||||
|         self.assertIn('\nERROR: testError ', out) | ||||
|         self.assertIn('\nUNEXPECTED SUCCESS: testUnexpectedSuccess ', out) | ||||
|         expected = ('\n\nFAILED (failures=1, errors=1, skipped=1, ' | ||||
|                     'expected failures=1, unexpected successes=1)\n') | ||||
|         self.assertTrue(out.endswith(expected)) | ||||
| 
 | ||||
| 
 | ||||
| class InitialisableProgram(unittest.TestProgram): | ||||
|  |  | |||
|  | @ -0,0 +1,2 @@ | |||
| Print unexpected successes together with failures and errors in summary in | ||||
| :class:`unittest.TextTestResult`. | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Serhiy Storchaka
						Serhiy Storchaka