Coverage for tests/test_cli.py: 100%
20 statements
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-16 16:07 +0000
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-16 16:07 +0000
1import functools
2from importlib.metadata import version
3from types import FunctionType
5import pytest
6from click.testing import CliRunner
8from sample_project.cli import main
10# See https://click.palletsprojects.com/testing/
13@pytest.fixture
14def cli() -> FunctionType:
15 runner = CliRunner()
16 yield functools.partial(runner.invoke, main)
19def test_cli_output(cli: FunctionType):
20 assert cli().output.rstrip() == "Hello, Sample Project!"
23def test_cli_version(cli: FunctionType):
24 expected_version = version("sample-project")
25 assert cli(["--version"]).output.rstrip() == expected_version
28def test_cli_reverse(cli: FunctionType):
29 assert cli(["Foo"]).output.rstrip().endswith("ooF")
32@pytest.mark.parametrize("input_str,expected_output", [("Foo", "OOF"), ("Bar", "RAB")])
33def test_cli_option_capitalize(cli: FunctionType, input_str, expected_output):
34 assert cli(["--capitalize", input_str]).output.rstrip().endswith(expected_output)