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: |         if result is None: | ||||||
|             rootpath = Path(self.config.rootdir) |             rootpath = Path(self.config.rootdir) | ||||||
|             result = {rootpath / nodeid.split("::")[0] for nodeid in self.lastfailed} |             result = {rootpath / nodeid.split("::")[0] for nodeid in self.lastfailed} | ||||||
|  |             result = {x for x in result if x.exists()} | ||||||
|             self._last_failed_paths = result |             self._last_failed_paths = result | ||||||
|         return 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 |         Ignore this file path if we are in --lf mode and it is not in the list of | ||||||
|         previously failed files. |         previously failed files. | ||||||
|         """ |         """ | ||||||
|         if ( |         if self.active and self.config.getoption("lf") and path.isfile(): | ||||||
|             self.active |             last_failed_paths = self.last_failed_paths() | ||||||
|             and self._previously_failed_count |             if last_failed_paths: | ||||||
|             and self.config.getoption("lf") |                 skip_it = Path(path) not in self.last_failed_paths() | ||||||
|             and path.isfile() |                 if skip_it: | ||||||
|             and self.lastfailed |                     self._skipped_files += 1 | ||||||
|         ): |                 return skip_it | ||||||
|             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): |     def pytest_report_collectionfinish(self): | ||||||
|         if self.active and self.config.getoption("verbose") >= 0: |         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( |         testdir.makepyfile( | ||||||
|             **{ |             **{ | ||||||
|                 "pkg1/test_1.py": """def test_1(): assert 0""", |                 "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): | class TestNewFirst(object): | ||||||
|     def test_newfirst_usecase(self, testdir): |     def test_newfirst_usecase(self, testdir): | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue