terminal: use pytest_collection_finish for reporting
This commit is contained in:
		
							parent
							
								
									19035f4b55
								
							
						
					
					
						commit
						ff5317a7f3
					
				|  | @ -0,0 +1 @@ | |||
| Deselected items from plugins using ``pytest_collect_modifyitems`` as a hookwrapper are correctly reported now. | ||||
|  | @ -553,10 +553,6 @@ class TerminalReporter(object): | |||
|         else: | ||||
|             self.write_line(line) | ||||
| 
 | ||||
|     @pytest.hookimpl(trylast=True) | ||||
|     def pytest_collection_modifyitems(self): | ||||
|         self.report_collect(True) | ||||
| 
 | ||||
|     @pytest.hookimpl(trylast=True) | ||||
|     def pytest_sessionstart(self, session): | ||||
|         self._session = session | ||||
|  | @ -609,6 +605,8 @@ class TerminalReporter(object): | |||
|         return result | ||||
| 
 | ||||
|     def pytest_collection_finish(self, session): | ||||
|         self.report_collect(True) | ||||
| 
 | ||||
|         if self.config.getoption("collectonly"): | ||||
|             self._printcollecteditems(session.items) | ||||
| 
 | ||||
|  |  | |||
|  | @ -506,6 +506,37 @@ class TestTerminalFunctional(object): | |||
|         ) | ||||
|         assert result.ret == 0 | ||||
| 
 | ||||
|     def test_deselected_with_hookwrapper(self, testdir): | ||||
|         testpath = testdir.makeconftest( | ||||
|             """ | ||||
|             import pytest | ||||
| 
 | ||||
|             @pytest.hookimpl(hookwrapper=True) | ||||
|             def pytest_collection_modifyitems(config, items): | ||||
|                 yield | ||||
|                 deselected = items.pop() | ||||
|                 config.hook.pytest_deselected(items=[deselected]) | ||||
|             """ | ||||
|         ) | ||||
|         testpath = testdir.makepyfile( | ||||
|             """ | ||||
|                 def test_one(): | ||||
|                     pass | ||||
|                 def test_two(): | ||||
|                     pass | ||||
|                 def test_three(): | ||||
|                     pass | ||||
|            """ | ||||
|         ) | ||||
|         result = testdir.runpytest(testpath) | ||||
|         result.stdout.fnmatch_lines( | ||||
|             [ | ||||
|                 "collected 3 items / 1 deselected / 2 selected", | ||||
|                 "*= 2 passed, 1 deselected in*", | ||||
|             ] | ||||
|         ) | ||||
|         assert result.ret == 0 | ||||
| 
 | ||||
|     def test_show_deselected_items_using_markexpr_before_test_execution(self, testdir): | ||||
|         testdir.makepyfile( | ||||
|             test_show_deselected=""" | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue