ensure results are sorted for file traversal

This commit is contained in:
Anthony Sottile 2022-10-30 15:11:56 -04:00
parent 987a718787
commit 7a094fa826
2 changed files with 23 additions and 1 deletions

View file

@ -6,6 +6,7 @@ import contextlib
import errno
import logging
import multiprocessing.pool
import operator
import signal
import tokenize
from typing import Any
@ -180,8 +181,9 @@ class Manager:
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)

View file

@ -98,6 +98,26 @@ t.py:1:1: F401 'os' imported but unused
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"]: