76 lines
2.0 KiB
Python
76 lines
2.0 KiB
Python
"""
|
|
Command line argument handling
|
|
==============================
|
|
|
|
**Module:** ``tests.plugin.test_cmd_line``
|
|
"""
|
|
|
|
from pathlib import Path
|
|
from typing import Callable
|
|
|
|
import pytest
|
|
from _pytest.pytester import Pytester
|
|
|
|
from _ptcsvp.cmdline import HELP_TEXT
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
["base_dir"],
|
|
[
|
|
(True,),
|
|
(False,),
|
|
],
|
|
)
|
|
def test_base_dir_param(
|
|
pytester: Pytester,
|
|
base_dir: bool,
|
|
simple_test_csv: str,
|
|
simple_fruit_test: Callable[[str], str],
|
|
) -> None:
|
|
"""
|
|
Test if the ``--csv-params-base-dir`` command line argument is valued. For laziness, it uses a poor parametrization.
|
|
|
|
:param pytester: Pytester fixture
|
|
:param base_dir: Shall the base dir parameter be set?
|
|
:param simple_test_csv: Fixture :meth:`~tests.plugin.conftest.simple_test_csv`
|
|
:param simple_fruit_test: Fixture :meth:`~tests.plugin.conftest.simple_fruit_test`
|
|
"""
|
|
|
|
csv_file = str(pytester.makefile(".csv", simple_test_csv).absolute())
|
|
|
|
parameters = ["-p", "no:bandit"]
|
|
if base_dir:
|
|
path = Path(csv_file)
|
|
parameters.extend(["--csv-params-base-dir", str(path.parent.absolute())])
|
|
csv_file = path.name
|
|
|
|
pytester.makepyfile(simple_fruit_test(csv_file))
|
|
|
|
result = pytester.runpytest(*parameters)
|
|
result.assert_outcomes(passed=3, failed=1)
|
|
|
|
|
|
def test_help(pytester: Pytester) -> None:
|
|
"""
|
|
Test that the pytest help now contains our command line argument with our help text.
|
|
|
|
:param pytester: Pytester fixture
|
|
"""
|
|
|
|
result = pytester.runpytest("--help")
|
|
index_csv_params = -1
|
|
index_minus_minus = -1
|
|
index_help = -1
|
|
|
|
for index, line in enumerate(result.stdout.lines):
|
|
if "csv-params:" in line and index_csv_params < 0:
|
|
index_csv_params = index
|
|
continue
|
|
if "--csv-params-base-dir" in line and index_minus_minus < 0:
|
|
index_minus_minus = index
|
|
if HELP_TEXT in line and index_help < 0:
|
|
index_help = index
|
|
|
|
assert index_csv_params >= 0
|
|
assert index_csv_params < index_minus_minus <= index_help
|