Coverage for tests / test_tutorial / test_options / test_version / test_tutorial001.py: 100%

34 statements  

« 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

7 

8import pytest 1abcdefg

9from typer.testing import CliRunner 1abcdefg

10 

11runner = CliRunner() 1abcdefg

12 

13 

14@pytest.fixture( 1abcdefg

15 name="mod", 

16 params=[ 

17 pytest.param("tutorial001_py310"), 

18 pytest.param("tutorial001_an_py310"), 

19 ], 

20) 

21def get_mod(request: pytest.FixtureRequest) -> ModuleType: 1abcdefg

22 module_name = f"docs_src.options.version.{request.param}" 1abcdefg

23 mod = importlib.import_module(module_name) 1abcdefg

24 return mod 1abcdefg

25 

26 

27def test_version(mod: ModuleType): 1abcdefg

28 result = runner.invoke(mod.app, ["--version"]) 1abcdefg

29 assert result.exit_code == 0 1abcdefg

30 assert "Awesome CLI Version: 0.1.0" in result.output 1abcdefg

31 

32 

33def test_version_with_name(mod: ModuleType): 1abcdefg

34 result = runner.invoke(mod.app, ["--name", "rick", "--version"]) 1abcdefg

35 assert result.exit_code == 0 1abcdefg

36 assert "Awesome CLI Version: 0.1.0" in result.output 1abcdefg

37 assert "Hello" not in result.output 1abcdefg

38 

39 

40def test_no_version(mod: ModuleType): 1abcdefg

41 result = runner.invoke(mod.app, ["--name", "Camila"]) 1abcdefg

42 assert result.exit_code == 0 1abcdefg

43 assert "Hello Camila" in result.output 1abcdefg

44 

45 

46def test_script(mod: ModuleType): 1abcdefg

47 result = subprocess.run( 1abcdefg

48 [sys.executable, "-m", "coverage", "run", mod.__file__, "--help"], 

49 capture_output=True, 

50 encoding="utf-8", 

51 ) 

52 assert "Usage" in result.stdout 1abcdefg

53 

54 

55def test_completion(mod: ModuleType): 1abcdefg

56 file_name = Path(mod.__file__).name 1abcdefg

57 result = subprocess.run( 1abcdefg

58 [sys.executable, "-m", "coverage", "run", mod.__file__, " "], 

59 capture_output=True, 

60 encoding="utf-8", 

61 env={ 

62 **os.environ, 

63 f"_{file_name.upper()}_COMPLETE": "complete_bash", 

64 "COMP_WORDS": f"{file_name} --name Rick --v", 

65 "COMP_CWORD": "3", 

66 }, 

67 ) 

68 assert "--version" in result.stdout 1abcdefg