diff --git a/src/flake8/main/application.py b/src/flake8/main/application.py index 001ad6c..e4b7930 100644 --- a/src/flake8/main/application.py +++ b/src/flake8/main/application.py @@ -112,7 +112,12 @@ class Application(object): :rtype: (argparse.Namespace, list) """ - return self.prelim_arg_parser.parse_known_args(argv) + args, rest = self.prelim_arg_parser.parse_known_args(argv) + # XXX (ericvw): Special case "forwarding" the output file option so + # that it can be reparsed again for the BaseFormatter.filename. + if args.output_file: + rest.extend(("--output-file", args.output_file)) + return args, rest def exit(self): # type: () -> None diff --git a/tests/integration/test_main.py b/tests/integration/test_main.py index b67992b..54254ef 100644 --- a/tests/integration/test_main.py +++ b/tests/integration/test_main.py @@ -246,3 +246,17 @@ def test_file_not_found(tmpdir, capsys): out, err = capsys.readouterr() assert out.startswith("i-do-not-exist:0:1: E902") assert err == "" + + +def test_output_file(tmpdir, capsys): + """Ensure that --output-file is honored.""" + tmpdir.join('t.py').write('import os\n') + + with tmpdir.as_cwd(): + _call_main(['t.py', '--output-file=f'], retv=1) + + out, err = capsys.readouterr() + assert out == err == "" + + expected = "t.py:1:1: F401 'os' imported but unused\n" + assert tmpdir.join('f').read() == expected