mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	Add the command line to the AssertionError raised by test.script_helper's
Python subprocess failure assertion error messages for easier debugging. Adds a unittest for test.script_helper to confirm that this code works as it is otherwise uncovered by an already passing test suite that uses it. :)
This commit is contained in:
		
							parent
							
								
									b176d40398
								
							
						
					
					
						commit
						b5684c48e1
					
				
					 2 changed files with 38 additions and 2 deletions
				
			
		|  | @ -51,8 +51,9 @@ def _assert_python(expected_success, *args, **env_vars): | |||
|     err = strip_python_stderr(err) | ||||
|     if (rc and expected_success) or (not rc and not expected_success): | ||||
|         raise AssertionError( | ||||
|             "Process return code is %d, " | ||||
|             "stderr follows:\n%s" % (rc, err.decode('ascii', 'ignore'))) | ||||
|             "Process return code is %d, command line was: %r, " | ||||
|             "stderr follows:\n%s" % (rc, cmd_line, | ||||
|                                      err.decode('ascii', 'ignore'))) | ||||
|     return rc, out, err | ||||
| 
 | ||||
| def assert_python_ok(*args, **env_vars): | ||||
|  |  | |||
							
								
								
									
										35
									
								
								Lib/test/test_script_helper.py
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										35
									
								
								Lib/test/test_script_helper.py
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,35 @@ | |||
| """Unittests for test.script_helper.  Who tests the test helper?""" | ||||
| 
 | ||||
| from test import script_helper | ||||
| import unittest | ||||
| 
 | ||||
| 
 | ||||
| class TestScriptHelper(unittest.TestCase): | ||||
|     def test_assert_python_expect_success(self): | ||||
|         t = script_helper._assert_python(True, '-c', 'import sys; sys.exit(0)') | ||||
|         self.assertEqual(0, t[0], 'return code was not 0') | ||||
| 
 | ||||
|     def test_assert_python_expect_failure(self): | ||||
|         # I didn't import the sys module so this child will fail. | ||||
|         rc, out, err = script_helper._assert_python(False, '-c', 'sys.exit(0)') | ||||
|         self.assertNotEqual(0, rc, 'return code should not be 0') | ||||
| 
 | ||||
|     def test_assert_python_raises_expect_success(self): | ||||
|         # I didn't import the sys module so this child will fail. | ||||
|         with self.assertRaises(AssertionError) as error_context: | ||||
|             script_helper._assert_python(True, '-c', 'sys.exit(0)') | ||||
|         error_msg = str(error_context.exception) | ||||
|         self.assertIn('command line was:', error_msg) | ||||
|         self.assertIn('sys.exit(0)', error_msg, msg='unexpected command line') | ||||
| 
 | ||||
|     def test_assert_python_raises_expect_failure(self): | ||||
|         with self.assertRaises(AssertionError) as error_context: | ||||
|             script_helper._assert_python(False, '-c', 'import sys; sys.exit(0)') | ||||
|         error_msg = str(error_context.exception) | ||||
|         self.assertIn('Process return code is 0,', error_msg) | ||||
|         self.assertIn('import sys; sys.exit(0)', error_msg, | ||||
|                       msg='unexpected command line.') | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     unittest.main() | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Gregory P. Smith
						Gregory P. Smith