Coverage for tests / test_tutorial / test_options_autocompletion / test_tutorial004_tutorial005.py: 100%
27 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 pathlib import Path 1abcdefg
6from types import ModuleType 1abcdefg
8import pytest 1abcdefg
9from typer.testing import CliRunner 1abcdefg
11runner = CliRunner() 1abcdefg
14@pytest.fixture( 1abcdefg
15 name="mod",
16 params=[
17 pytest.param("tutorial004_py310"),
18 pytest.param("tutorial004_an_py310"),
19 pytest.param("tutorial005_py310"),
20 pytest.param("tutorial005_an_py310"),
21 ],
22)
23def get_mod(request: pytest.FixtureRequest) -> ModuleType: 1abcdefg
24 module_name = f"docs_src.options_autocompletion.{request.param}" 1abcdefg
25 mod = importlib.import_module(module_name) 1abcdefg
26 return mod 1abcdefg
29def test_completion(mod: ModuleType): 1abcdefg
30 file_name = Path(mod.__file__).name 1abcdefg
31 result = subprocess.run( 1abcdefg
32 [sys.executable, "-m", "coverage", "run", mod.__file__, " "],
33 capture_output=True,
34 encoding="utf-8",
35 env={
36 **os.environ,
37 f"_{file_name.upper()}_COMPLETE": "complete_zsh",
38 "_TYPER_COMPLETE_ARGS": f"{file_name} --name ",
39 },
40 )
41 assert '"Camila":"The reader of books."' in result.stdout 1abcdefg
42 assert '"Carlos":"The writer of scripts."' in result.stdout 1abcdefg
43 assert '"Sebastian":"The type hints guy."' in result.stdout 1abcdefg
46def test_1(mod: ModuleType): 1abcdefg
47 result = runner.invoke(mod.app, ["--name", "Camila"]) 1abcdefg
48 assert result.exit_code == 0 1abcdefg
49 assert "Hello Camila" in result.output 1abcdefg
52def test_script(mod: ModuleType): 1abcdefg
53 result = subprocess.run( 1abcdefg
54 [sys.executable, "-m", "coverage", "run", mod.__file__, "--help"],
55 capture_output=True,
56 encoding="utf-8",
57 )
58 assert "Usage" in result.stdout 1abcdefg