diff --git a/src/flake8/main/application.py b/src/flake8/main/application.py index 6393dad..65a17d5 100644 --- a/src/flake8/main/application.py +++ b/src/flake8/main/application.py @@ -5,7 +5,7 @@ import argparse import logging import sys import time -from typing import Dict, List, Optional, Set +from typing import Dict, List, Optional, Set, Tuple import flake8 from flake8 import checker @@ -98,7 +98,7 @@ class Application(object): self.parsed_diff = {} # type: Dict[str, Set[int]] def parse_preliminary_options_and_args(self, argv): - # type: (List[str]) -> None + # type: (List[str]) -> Tuple[argparse.Namespace, List[str]] """Get preliminary options and args from CLI, pre-plugin-loading. We need to know the values of a few standard options and args now, so @@ -112,6 +112,10 @@ class Application(object): :param list argv: Command-line arguments passed in directly. + :returns: + Populated namespace and list of remaining argument strings. + :rtype: + (argparse.Namespace, list) """ # We haven't found or registered our plugins yet, so let's defer # printing the version until we aggregate options from config files @@ -139,6 +143,7 @@ class Application(object): # parse_known_args includes unknown options as args args = [a for a in args if not a.startswith("-")] self.prelim_opts, self.prelim_args = opts, args + return opts, args def exit(self): # type: () -> None diff --git a/tests/unit/test_application.py b/tests/unit/test_application.py index 8e5c9d5..ea4f090 100644 --- a/tests/unit/test_application.py +++ b/tests/unit/test_application.py @@ -92,18 +92,22 @@ def test_returns_specified_plugin(application): def test_prelim_opts_args(application): """Verify we get sensible prelim opts and args.""" - application.parse_preliminary_options_and_args( + opts, args = application.parse_preliminary_options_and_args( ['flake8', '--foo', '--verbose', 'src', 'setup.py', '--statistics']) assert application.prelim_opts.statistics assert application.prelim_opts.verbose assert application.prelim_args == ['src', 'setup.py'] + assert opts.statistics is application.prelim_opts.statistics + assert opts.verbose is application.prelim_opts.verbose + assert args is application.prelim_args def test_prelim_opts_handles_empty(application): """Verify empty argv lists are handled correctly.""" irrelevant_args = ['myexe', '/path/to/foo'] with mock.patch.object(sys, 'argv', irrelevant_args): - application.parse_preliminary_options_and_args([]) + opts, args = application.parse_preliminary_options_and_args([]) assert application.prelim_args == [] + assert args is application.prelim_args