diff --git a/src/flake8/checker.py b/src/flake8/checker.py index a454f2f..5482454 100644 --- a/src/flake8/checker.py +++ b/src/flake8/checker.py @@ -86,6 +86,7 @@ class Manager(object): self.options = style_guide.options self.checks = checker_plugins self.jobs = self._job_count() + self._all_checkers = [] # type: List[FileChecker] self.checkers = [] # type: List[FileChecker] self.statistics = { "files": 0, @@ -234,17 +235,15 @@ class Manager(object): ) or is_stdin checks = self.checks.to_dictionary() - checkers = ( + self._all_checkers = [ FileChecker(filename, checks, self.options) for argument in paths for filename in utils.filenames_from( argument, self.is_path_excluded ) if should_create_file_checker(filename, argument) - ) - self.checkers = [ - checker for checker in checkers if checker.should_process ] + self.checkers = [c for c in self._all_checkers if c.should_process] LOG.info("Checking %d files", len(self.checkers)) def report(self): @@ -260,7 +259,7 @@ class Manager(object): tuple(int, int) """ results_reported = results_found = 0 - for checker in self.checkers: + for checker in self._all_checkers: results = sorted( checker.results, key=lambda tup: (tup[1], tup[2]) ) diff --git a/tests/integration/test_checker.py b/tests/integration/test_checker.py index 0c14474..93cc239 100644 --- a/tests/integration/test_checker.py +++ b/tests/integration/test_checker.py @@ -216,7 +216,7 @@ def test_report_order(results, expected_order): # Create a placeholder manager without arguments or plugins # Just add one custom file checker which just provides the results manager = checker.Manager(style_guide, [], []) - manager.checkers = [file_checker] + manager.checkers = manager._all_checkers = [file_checker] # _handle_results is the first place which gets the sorted result # Should something non-private be mocked instead? diff --git a/tests/integration/test_main.py b/tests/integration/test_main.py index 42ad76c..9424e99 100644 --- a/tests/integration/test_main.py +++ b/tests/integration/test_main.py @@ -195,3 +195,12 @@ ignore = F401 py_file.write_text(u"import os\n") _call_main(["--isolated", "--config", str(config), str(py_file)], retv=1) + + +def test_file_not_found(tmpdir, capsys): + """Ensure that a not-found file / directory is an error.""" + with tmpdir.as_cwd(): + _call_main(["i-do-not-exist"], retv=1) + out, err = capsys.readouterr() + assert out.startswith("i-do-not-exist:0:1: E902") + assert err == ""