Coverage for tests/test_tutorial/test_exceptions/test_tutorial001.py: 100%

28 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2025-12-19 20:29 +0000

1import os 1abcdefghi

2import subprocess 1abcdefghi

3import sys 1abcdefghi

4from pathlib import Path 1abcdefghi

5 

6import pytest 1abcdefghi

7from typer.testing import CliRunner 1abcdefghi

8 

9from docs_src.exceptions import tutorial001 as mod 1abcdefghi

10 

11runner = CliRunner() 1abcdefghi

12 

13 

14def test_traceback_rich(): 1abcdefghi

15 file_path = Path(mod.__file__) 1abcdefghi

16 result = subprocess.run( 1abcdefghi

17 [sys.executable, "-m", "coverage", "run", str(file_path)], 

18 capture_output=True, 

19 encoding="utf-8", 

20 env={ 

21 **os.environ, 

22 "TYPER_STANDARD_TRACEBACK": "", 

23 "_TYPER_STANDARD_TRACEBACK": "", 

24 }, 

25 ) 

26 assert "return get_command(self)(*args, **kwargs)" not in result.stderr 1abcdefghi

27 

28 assert "app()" not in result.stderr 1abcdefghi

29 assert "print(name + 3)" in result.stderr 1abcdefghi

30 assert 'TypeError: can only concatenate str (not "int") to str' in result.stderr 1abcdefghi

31 assert "name = 'morty'" in result.stderr 1abcdefghi

32 

33 

34@pytest.mark.parametrize( 1abcdefghi

35 "env_var", ["TYPER_STANDARD_TRACEBACK", "_TYPER_STANDARD_TRACEBACK"] 

36) 

37def test_standard_traceback_env_var(env_var: str): 1abcdefghi

38 file_path = Path(mod.__file__) 1abcdefghi

39 result = subprocess.run( 1abcdefghi

40 [sys.executable, "-m", "coverage", "run", str(file_path)], 

41 capture_output=True, 

42 encoding="utf-8", 

43 env={**os.environ, env_var: "1"}, 

44 ) 

45 assert "return get_command(self)(*args, **kwargs)" in result.stderr 1abcdefghi

46 

47 assert "app()" in result.stderr 1abcdefghi

48 assert "print(name + 3)" in result.stderr 1abcdefghi

49 assert 'TypeError: can only concatenate str (not "int") to str' in result.stderr 1abcdefghi

50 assert "name = 'morty'" not in result.stderr 1abcdefghi

51 

52 

53def test_script(): 1abcdefghi

54 result = subprocess.run( 1abcdefghi

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

56 capture_output=True, 

57 encoding="utf-8", 

58 ) 

59 assert "Usage" in result.stdout 1abcdefghi