Coverage for tests / test_tracebacks.py: 100%
26 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 os 1abcdefg
2import subprocess 1abcdefg
3import sys 1abcdefg
4from pathlib import Path 1abcdefg
7def test_traceback_no_rich(): 1abcdefg
8 file_path = Path(__file__).parent / "assets/type_error_no_rich.py" 1abcdefg
9 result = subprocess.run( 1abcdefg
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 1abcdefg
21 assert "app()" in result.stderr 1abcdefg
22 assert "print(name + 3)" in result.stderr 1abcdefg
23 assert 'TypeError: can only concatenate str (not "int") to str' in result.stderr 1abcdefg
26def test_traceback_no_rich_short_disable(): 1abcdefg
27 file_path = Path(__file__).parent / "assets/type_error_no_rich_short_disable.py" 1abcdefg
28 result = subprocess.run( 1abcdefg
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 1abcdefg
40 assert "app()" in result.stderr 1abcdefg
41 assert "print(name + 3)" in result.stderr 1abcdefg
42 assert 'TypeError: can only concatenate str (not "int") to str' in result.stderr 1abcdefg
45def test_unmodified_traceback(): 1abcdefg
46 file_path = Path(__file__).parent / "assets/type_error_normal_traceback.py" 1abcdefg
47 result = subprocess.run( 1abcdefg
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" 1abcdefg
58 assert "return callback(**use_params)" in result.stderr, ( 1abcdefg
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 1abcdefg
63 assert "print(name + 3)" in result.stderr 1abcdefg
64 assert 'TypeError: can only concatenate str (not "int") to str' in result.stderr 1abcdefg