Display message from reprcrash in short test summary
This is useful to see common patterns easily, but also for single failures already.
This commit is contained in:
		
							parent
							
								
									e04936fc29
								
							
						
					
					
						commit
						3d0ecd03ed
					
				|  | @ -211,7 +211,25 @@ def show_simple(terminalreporter, lines, stat): | ||||||
|         for rep in failed: |         for rep in failed: | ||||||
|             verbose_word = _get_report_str(config, rep) |             verbose_word = _get_report_str(config, rep) | ||||||
|             pos = _get_pos(config, rep) |             pos = _get_pos(config, rep) | ||||||
|             lines.append("%s %s" % (verbose_word, pos)) | 
 | ||||||
|  |             line = "%s %s" % (verbose_word, pos) | ||||||
|  |             try: | ||||||
|  |                 msg = rep.longrepr.reprcrash.message | ||||||
|  |             except AttributeError: | ||||||
|  |                 pass | ||||||
|  |             else: | ||||||
|  |                 # Only use the first line. | ||||||
|  |                 # Might be worth having a short_message property, which | ||||||
|  |                 # could default to this behavior. | ||||||
|  |                 i = msg.find("\n") | ||||||
|  |                 if i != -1: | ||||||
|  |                     msg = msg[:i] | ||||||
|  |                 max_len = terminalreporter.writer.fullwidth - len(line) - 2 | ||||||
|  |                 if len(msg) > max_len: | ||||||
|  |                     msg = msg[: (max_len - 1)] + "…" | ||||||
|  |                 line += ": %s" % msg | ||||||
|  | 
 | ||||||
|  |             lines.append(line) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def show_xfailed(terminalreporter, lines): | def show_xfailed(terminalreporter, lines): | ||||||
|  |  | ||||||
|  | @ -865,7 +865,9 @@ class TestInvocationVariants(object): | ||||||
|                 _fail, _sep, testid = line.partition(" ") |                 _fail, _sep, testid = line.partition(" ") | ||||||
|                 break |                 break | ||||||
|         result = testdir.runpytest(testid, "-rf") |         result = testdir.runpytest(testid, "-rf") | ||||||
|         result.stdout.fnmatch_lines([line, "*1 failed*"]) |         result.stdout.fnmatch_lines( | ||||||
|  |             ["FAILED test_doctest_id.txt::test_doctest_id.txt", "*1 failed*"] | ||||||
|  |         ) | ||||||
| 
 | 
 | ||||||
|     def test_core_backward_compatibility(self): |     def test_core_backward_compatibility(self): | ||||||
|         """Test backward compatibility for get_plugin_manager function. See #787.""" |         """Test backward compatibility for get_plugin_manager function. See #787.""" | ||||||
|  |  | ||||||
|  | @ -1208,6 +1208,6 @@ def test_summary_list_after_errors(testdir): | ||||||
|         [ |         [ | ||||||
|             "=* FAILURES *=", |             "=* FAILURES *=", | ||||||
|             "*= short test summary info =*", |             "*= short test summary info =*", | ||||||
|             "FAILED test_summary_list_after_errors.py::test_fail", |             "FAILED test_summary_list_after_errors.py::test_fail: assert 0", | ||||||
|         ] |         ] | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|  | @ -726,12 +726,18 @@ class TestTerminalFunctional(object): | ||||||
|         result.stdout.fnmatch_lines(["collected 3 items", "hello from hook: 3 items"]) |         result.stdout.fnmatch_lines(["collected 3 items", "hello from hook: 3 items"]) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def test_fail_extra_reporting(testdir): | def test_fail_extra_reporting(testdir, monkeypatch): | ||||||
|     testdir.makepyfile("def test_this(): assert 0") |     monkeypatch.setenv("COLUMNS", "80") | ||||||
|  |     testdir.makepyfile("def test_this(): assert 0, 'this_failed' * 100") | ||||||
|     result = testdir.runpytest() |     result = testdir.runpytest() | ||||||
|     assert "short test summary" not in result.stdout.str() |     assert "short test summary" not in result.stdout.str() | ||||||
|     result = testdir.runpytest("-rf") |     result = testdir.runpytest("-rf") | ||||||
|     result.stdout.fnmatch_lines(["*test summary*", "FAIL*test_fail_extra_reporting*"]) |     result.stdout.fnmatch_lines( | ||||||
|  |         [ | ||||||
|  |             "*test summary*", | ||||||
|  |             "FAILED test_fail_extra_reporting.py::test_this: AssertionError: this_failedthis…", | ||||||
|  |         ] | ||||||
|  |     ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def test_fail_reporting_on_pass(testdir): | def test_fail_reporting_on_pass(testdir): | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue