Merge pull request #1499 from asottile/fix-catastrophic-failure

fix AttributeError when catatstrophic failure is triggered
This commit is contained in:
Anthony Sottile 2021-12-24 16:41:56 -05:00 committed by GitHub
commit df64e392f4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 6 deletions

View file

@ -115,11 +115,13 @@ class Application:
def exit_code(self) -> int:
"""Return the program exit code."""
if self.catastrophic_failure:
return 1
assert self.options is not None
if self.options.exit_zero:
return int(self.catastrophic_failure)
return 0
else:
return int((self.result_count > 0) or self.catastrophic_failure)
return int(self.result_count > 0)
def find_plugins(
self,
@ -391,7 +393,7 @@ class Application:
except exceptions.EarlyQuit:
self.catastrophic_failure = True
print("... stopped while processing files")
assert self.options is not None
if self.options.count:
print(self.result_count)
else:
assert self.options is not None
if self.options.count:
print(self.result_count)

View file

@ -8,6 +8,7 @@ import pytest
from flake8 import utils
from flake8.main import cli
from flake8.options import config
def test_diff_option(tmpdir, capsys):
@ -375,3 +376,13 @@ def test_output_file(tmpdir, capsys):
expected = "t.py:1:1: F401 'os' imported but unused\n"
assert tmpdir.join("a/b/f").read() == expected
def test_early_keyboard_interrupt_does_not_crash(capsys):
with mock.patch.object(
config, "load_config", side_effect=KeyboardInterrupt
):
assert cli.main(["does-not-exist"]) == 1
out, err = capsys.readouterr()
assert out == "... stopped\n"
assert err == ""