Coverage for tests / test_tracebacks.py: 100%

26 statements  

« prev     ^ index     » next       coverage.py v7.13.1, created at 2026-02-09 12:36 +0000

1import os 1abcdefgh

2import subprocess 1abcdefgh

3import sys 1abcdefgh

4from pathlib import Path 1abcdefgh

5 

6 

7def test_traceback_no_rich(): 1abcdefgh

8 file_path = Path(__file__).parent / "assets/type_error_no_rich.py" 1abcdefgh

9 result = subprocess.run( 1abcdefgh

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

11 capture_output=True, 

12 encoding="utf-8", 

13 env={ 

14 **os.environ, 

15 "TYPER_STANDARD_TRACEBACK": "", 

16 "_TYPER_STANDARD_TRACEBACK": "", 

17 }, 

18 ) 

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

20 

21 assert "app()" in result.stderr 1abcdefgh

22 assert "print(name + 3)" in result.stderr 1abcdefgh

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

24 

25 

26def test_traceback_no_rich_short_disable(): 1abcdefgh

27 file_path = Path(__file__).parent / "assets/type_error_no_rich_short_disable.py" 1abcdefgh

28 result = subprocess.run( 1abcdefgh

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

30 capture_output=True, 

31 encoding="utf-8", 

32 env={ 

33 **os.environ, 

34 "TYPER_STANDARD_TRACEBACK": "", 

35 "_TYPER_STANDARD_TRACEBACK": "", 

36 }, 

37 ) 

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

39 

40 assert "app()" in result.stderr 1abcdefgh

41 assert "print(name + 3)" in result.stderr 1abcdefgh

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

43 

44 

45def test_unmodified_traceback(): 1abcdefgh

46 file_path = Path(__file__).parent / "assets/type_error_normal_traceback.py" 1abcdefgh

47 result = subprocess.run( 1abcdefgh

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

49 capture_output=True, 

50 encoding="utf-8", 

51 env={ 

52 **os.environ, 

53 "TYPER_STANDARD_TRACEBACK": "", 

54 "_TYPER_STANDARD_TRACEBACK": "", 

55 }, 

56 ) 

57 assert "morty" in result.stdout, "the call to the first app should work normally" 1abcdefgh

58 assert "return callback(**use_params)" in result.stderr, ( 1abcdefgh

59 "calling outside of Typer should show the normal traceback, " 

60 "even after the hook is installed" 

61 ) 

62 assert "typer.main.get_command(broken_app)()" in result.stderr 1abcdefgh

63 assert "print(name + 3)" in result.stderr 1abcdefgh

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