Coverage for tests / test_tutorial / test_commands / test_help / test_tutorial004.py: 100%
46 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-03-26 21:46 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-03-26 21:46 +0000
1import importlib 1abcdefg
2import os 1abcdefg
3import subprocess 1abcdefg
4import sys 1abcdefg
5from types import ModuleType 1abcdefg
7import pytest 1abcdefg
8from typer.testing import CliRunner 1abcdefg
10runner = CliRunner() 1abcdefg
13@pytest.fixture( 1abcdefg
14 name="mod",
15 params=[
16 pytest.param("tutorial004_py310"),
17 pytest.param("tutorial004_an_py310"),
18 ],
19)
20def get_mod(request: pytest.FixtureRequest) -> ModuleType: 1abcdefg
21 module_name = f"docs_src.commands.help.{request.param}" 1abcdefg
22 mod = importlib.import_module(module_name) 1abcdefg
23 return mod 1abcdefg
26def test_help(mod: ModuleType): 1abcdefg
27 result = runner.invoke(mod.app, ["--help"]) 1abcdefg
28 assert result.exit_code == 0 1abcdefg
29 assert "create" in result.output 1abcdefg
30 assert "Create a new shiny user. ✨" in result.output 1abcdefg
31 assert "delete" in result.output 1abcdefg
32 assert "Delete a user with USERNAME." in result.output 1abcdefg
33 assert "Some internal utility function to create." not in result.output 1abcdefg
34 assert "Some internal utility function to delete." not in result.output 1abcdefg
37def test_help_create(mod: ModuleType): 1abcdefg
38 result = runner.invoke(mod.app, ["create", "--help"]) 1abcdefg
39 assert result.exit_code == 0 1abcdefg
40 assert "Create a new shiny user. ✨" in result.output 1abcdefg
41 assert "The username to be created" in result.output 1abcdefg
42 assert "Some internal utility function to create." not in result.output 1abcdefg
45def test_help_delete(mod: ModuleType): 1abcdefg
46 result = runner.invoke(mod.app, ["delete", "--help"]) 1abcdefg
47 assert result.exit_code == 0 1abcdefg
48 assert "Delete a user with USERNAME." in result.output 1abcdefg
49 assert "The username to be deleted" in result.output 1abcdefg
50 assert "Force the deletion 💥" in result.output 1abcdefg
51 assert "Some internal utility function to delete." not in result.output 1abcdefg
54def test_create(mod: ModuleType): 1abcdefg
55 result = runner.invoke(mod.app, ["create", "Camila"]) 1abcdefg
56 assert result.exit_code == 0 1abcdefg
57 assert "Creating user: Camila" in result.output 1abcdefg
60def test_delete(mod: ModuleType): 1abcdefg
61 result = runner.invoke(mod.app, ["delete", "Camila"]) 1abcdefg
62 assert result.exit_code == 0 1abcdefg
63 assert "Deleting user: Camila" in result.output 1abcdefg
66def test_script(mod: ModuleType): 1abcdefg
67 result = subprocess.run( 1abcdefg
68 [sys.executable, "-m", "coverage", "run", mod.__file__, "--help"],
69 capture_output=True,
70 encoding="utf-8",
71 env={**os.environ, "PYTHONIOENCODING": "utf-8"},
72 )
73 assert "Usage" in result.stdout 1abcdefg