Parse --jobs as a custom argparse type. Fixes #567

This commit is contained in:
Ruairidh MacLeod 2020-05-12 14:23:26 +01:00 committed by Anthony Sottile
parent 666be736e0
commit 45573570cf
4 changed files with 56 additions and 10 deletions

View file

@ -5,13 +5,14 @@ import mock
import pytest
from flake8 import checker
from flake8.main.options import JobsArgument
def style_guide_mock():
"""Create a mock StyleGuide object."""
return mock.MagicMock(**{
'options.diff': False,
'options.jobs': '4',
'options.jobs': JobsArgument("4"),
})

View file

@ -6,6 +6,7 @@ import mock
import pytest
from flake8 import utils
from flake8.main.options import JobsArgument
from flake8.options import manager
TEST_VERSION = '3.0.0b1'
@ -343,3 +344,32 @@ def test_optmanager_group(optmanager, capsys):
out, err = capsys.readouterr()
output = out + err
assert '\ngroupname:\n' in output
@pytest.mark.parametrize(
("s", "is_auto", "n_jobs"),
(
("auto", True, -1),
("4", False, 4),
),
)
def test_parse_valid_jobs_argument(s, is_auto, n_jobs):
"""Test that --jobs properly parses valid arguments."""
jobs_opt = JobsArgument(s)
assert is_auto == jobs_opt.is_auto
assert n_jobs == jobs_opt.n_jobs
def test_parse_invalid_jobs_argument(optmanager, capsys):
"""Test that --jobs properly rejects invalid arguments."""
namespace = argparse.Namespace()
optmanager.add_option("--jobs", type=JobsArgument)
with pytest.raises(SystemExit):
optmanager.parse_args(["--jobs=foo"], namespace)
out, err = capsys.readouterr()
output = out + err
expected = (
"\nflake8: error: argument --jobs: "
"'foo' must be 'auto' or an integer.\n"
)
assert expected in output