diff --git a/docs/changelog/2343.bugfix.rst b/docs/changelog/2343.bugfix.rst new file mode 100644 index 000000000..8328e1a5c --- /dev/null +++ b/docs/changelog/2343.bugfix.rst @@ -0,0 +1 @@ +Fix CLI raises an error for ``-va`` with ``ignored explicit argument 'a'`` - by :user:`gaborbernat`. diff --git a/src/tox/config/cli/parse.py b/src/tox/config/cli/parse.py index 51e4c2def..e7868469c 100644 --- a/src/tox/config/cli/parse.py +++ b/src/tox/config/cli/parse.py @@ -43,7 +43,11 @@ def get_options(*args: str) -> Options: def _get_base(args: Sequence[str]) -> tuple[int, ToxHandler, Source]: """First just load the base options (verbosity+color) to setup the logging framework.""" tox_parser = ToxParser.base() - parsed, _ = tox_parser.parse_known_args(args) + parsed = Parsed() + try: + tox_parser.parse_known_args(args, namespace=parsed) + except SystemExit: + ... # ignore parse errors, such as -va raises ignored explicit argument 'a' guess_verbosity = parsed.verbosity handler = setup_report(guess_verbosity, parsed.is_colored) from tox.plugin.manager import MANAGER # load the plugin system right after we set up report diff --git a/tests/config/cli/test_parse.py b/tests/config/cli/test_parse.py index c635ac89d..8852bfdb6 100644 --- a/tests/config/cli/test_parse.py +++ b/tests/config/cli/test_parse.py @@ -38,3 +38,9 @@ def test_verbosity_guess_miss_match(capsys: CaptureFixture) -> None: out, err = capsys.readouterr() assert out == "ROOT: E\nROOT: W\nROOT: I\n" + + +@pytest.mark.parametrize("arg", ["-av", "-va"]) +def test_verbosity(arg: str) -> None: + result = get_options(arg) + assert result.parsed.verbosity == 3