diff --git a/tests/integration/test_main.py b/tests/integration/test_main.py index b351e9d..90877d3 100644 --- a/tests/integration/test_main.py +++ b/tests/integration/test_main.py @@ -386,3 +386,21 @@ def test_early_keyboard_interrupt_does_not_crash(capsys): out, err = capsys.readouterr() assert out == "... stopped\n" assert err == "" + + +def test_config_file_not_found(tmpdir, capsys): + """Ensure that an explicitly specified config file which is not found is an + error""" + + expected = """\ +There was a critical error during execution of Flake8: +The specified config file does not exist +""" + + with tmpdir.as_cwd(): + tmpdir.join("t.py").write("print('hello hello world')\n") + assert cli.main(["--config", "missing.cfg", "t.py"]) == 1 + + out, err = capsys.readouterr() + assert out == expected + assert err == "" diff --git a/tests/unit/test_options_config.py b/tests/unit/test_options_config.py index b288de0..c5d1476 100644 --- a/tests/unit/test_options_config.py +++ b/tests/unit/test_options_config.py @@ -2,6 +2,7 @@ import configparser import pytest +from flake8 import exceptions from flake8.main.options import register_default_options from flake8.options import config from flake8.options.manager import OptionManager @@ -164,3 +165,8 @@ def test_parse_config_ignores_unknowns(tmp_path, opt_manager, caplog): 'Option "wat" is not registered. Ignoring.', ) ] + + +def test_load_config_missing_file_raises_exception(capsys): + with pytest.raises(exceptions.ExecutionError): + config.load_config("foo.cfg", [])