Skip to content

Commit

Permalink
Merge pull request #1726 from PyCQA/sorted-results
Browse files Browse the repository at this point in the history
ensure results are sorted for file traversal
  • Loading branch information
asottile committed Oct 30, 2022
2 parents 987a718 + 7a094fa commit 0acd10b
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/flake8/checker.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import errno
import logging
import multiprocessing.pool
import operator
import signal
import tokenize
from typing import Any
Expand Down Expand Up @@ -180,8 +181,9 @@ def report(self) -> tuple[int, int]:
A tuple of the total results found and the results reported.
"""
results_reported = results_found = 0
self.results.sort(key=operator.itemgetter(0))
for filename, results, _ in self.results:
results.sort(key=lambda tup: (tup[1], tup[2]))
results.sort(key=operator.itemgetter(1, 2))
with self.style_guide.processing_file(filename):
results_reported += self._handle_results(filename, results)
results_found += len(results)
Expand Down
20 changes: 20 additions & 0 deletions tests/integration/test_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,26 @@ def test_show_source_option(tmpdir, capsys):
assert err == ""


def test_errors_sorted(tmpdir, capsys):
with tmpdir.as_cwd():
for c in "abcde":
tmpdir.join(f"{c}.py").write("import os\n")
assert cli.main(["./"]) == 1

# file traversal was done in inode-order before
# this uses a significant number of files such that it's unlikely to pass
expected = """\
./a.py:1:1: F401 'os' imported but unused
./b.py:1:1: F401 'os' imported but unused
./c.py:1:1: F401 'os' imported but unused
./d.py:1:1: F401 'os' imported but unused
./e.py:1:1: F401 'os' imported but unused
"""
out, err = capsys.readouterr()
assert out == expected
assert err == ""


def test_extend_exclude(tmpdir, capsys):
"""Ensure that `flake8 --extend-exclude` works."""
for d in ["project", "vendor", "legacy", ".git", ".tox", ".hg"]:
Expand Down

0 comments on commit 0acd10b

Please sign in to comment.