fixup! Fix regression with --lf and non-selected failures
This commit is contained in:
		
							parent
							
								
									bf3b26b3f7
								
							
						
					
					
						commit
						ceb4f3f701
					
				|  | @ -0,0 +1 @@ | |||
| Fix regression with ``--lf`` not re-running all tests with known failures from non-selected tests. | ||||
|  | @ -168,6 +168,7 @@ class LFPlugin(object): | |||
|         if result is None: | ||||
|             rootpath = Path(self.config.rootdir) | ||||
|             result = {rootpath / nodeid.split("::")[0] for nodeid in self.lastfailed} | ||||
|             result = {x for x in result if x.exists()} | ||||
|             self._last_failed_paths = result | ||||
|         return result | ||||
| 
 | ||||
|  | @ -176,17 +177,13 @@ class LFPlugin(object): | |||
|         Ignore this file path if we are in --lf mode and it is not in the list of | ||||
|         previously failed files. | ||||
|         """ | ||||
|         if ( | ||||
|             self.active | ||||
|             and self._previously_failed_count | ||||
|             and self.config.getoption("lf") | ||||
|             and path.isfile() | ||||
|             and self.lastfailed | ||||
|         ): | ||||
|             skip_it = Path(path) not in self.last_failed_paths() | ||||
|             if skip_it: | ||||
|                 self._skipped_files += 1 | ||||
|             return skip_it | ||||
|         if self.active and self.config.getoption("lf") and path.isfile(): | ||||
|             last_failed_paths = self.last_failed_paths() | ||||
|             if last_failed_paths: | ||||
|                 skip_it = Path(path) not in self.last_failed_paths() | ||||
|                 if skip_it: | ||||
|                     self._skipped_files += 1 | ||||
|                 return skip_it | ||||
| 
 | ||||
|     def pytest_report_collectionfinish(self): | ||||
|         if self.active and self.config.getoption("verbose") >= 0: | ||||
|  |  | |||
|  | @ -832,7 +832,7 @@ class TestLastFailed(object): | |||
|             ] | ||||
|         ) | ||||
| 
 | ||||
|     def test_lastfailed_with_unknown_failure(self, testdir): | ||||
|     def test_lastfailed_with_known_failures_not_being_selected(self, testdir): | ||||
|         testdir.makepyfile( | ||||
|             **{ | ||||
|                 "pkg1/test_1.py": """def test_1(): assert 0""", | ||||
|  | @ -852,6 +852,28 @@ class TestLastFailed(object): | |||
|             ] | ||||
|         ) | ||||
| 
 | ||||
|         # Recreate file with known failure. | ||||
|         testdir.makepyfile(**{"pkg1/test_1.py": """def test_1(): assert 0"""}) | ||||
|         result = testdir.runpytest("--lf") | ||||
|         result.stdout.fnmatch_lines( | ||||
|             [ | ||||
|                 "collected 1 item", | ||||
|                 "run-last-failure: rerun previous 1 failure (skipped 1 file)", | ||||
|                 "* 1 failed in *", | ||||
|             ] | ||||
|         ) | ||||
| 
 | ||||
|         # Remove/rename test. | ||||
|         testdir.makepyfile(**{"pkg1/test_1.py": """def test_renamed(): assert 0"""}) | ||||
|         result = testdir.runpytest("--lf") | ||||
|         result.stdout.fnmatch_lines( | ||||
|             [ | ||||
|                 "collected 1 item", | ||||
|                 "run-last-failure: 1 known failures not in selected tests", | ||||
|                 "* 1 failed in *", | ||||
|             ] | ||||
|         ) | ||||
| 
 | ||||
| 
 | ||||
| class TestNewFirst(object): | ||||
|     def test_newfirst_usecase(self, testdir): | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue