Coverage for /home/crpier/Projects/snektest/snektest/presenter/__init__.py: 78%

23 statements  

« prev     ^ index     » next       coverage.py v7.14.1, created at 2026-06-07 00:30 +0300

1from rich.console import Console 

2 

3from snektest.models import ( 

4 ErrorResult, 

5 FailedResult, 

6 PassedResult, 

7 TeardownFailure, 

8 TestResult, 

9) 

10from snektest.presenter.errors import print_failures as _print_failures 

11from snektest.presenter.summary import print_summary as _print_summary 

12 

13console = Console() 

14 

15 

16def print_error(exc: str) -> None: 

17 """Print an error message in red.""" 

18 console.print(exc, markup=False, style="red") 

19 

20 

21def print_test_result_to_console(console: Console, result: TestResult) -> None: 

22 console.print( 

23 f"{result.name!s} ... ", 

24 end="", 

25 markup=False, 

26 highlight=False, 

27 soft_wrap=True, 

28 ) 

29 match result.result: 

30 case PassedResult(): 

31 console.print( 

32 f"OK ({result.duration:.2f}s)", 

33 highlight=False, 

34 style="green", 

35 markup=False, 

36 soft_wrap=True, 

37 ) 

38 case FailedResult(): 

39 console.print( 

40 f"FAIL ({result.duration:.2f}s)", 

41 highlight=False, 

42 style="red", 

43 markup=False, 

44 soft_wrap=True, 

45 ) 

46 case ErrorResult(): 

47 console.print( 

48 f"ERROR ({result.duration:.2f}s)", 

49 highlight=False, 

50 style="dark_orange", 

51 markup=False, 

52 soft_wrap=True, 

53 ) 

54 

55 

56def print_test_result(result: TestResult) -> None: 

57 """Print the result of a single test.""" 

58 print_test_result_to_console(console, result) 

59 

60 

61def print_failures( 

62 test_results: list[TestResult], 

63 session_teardown_failures: list[TeardownFailure] | None = None, 

64 session_teardown_output: str | None = None, 

65) -> None: 

66 """Print all failures.""" 

67 _print_failures( 

68 console, 

69 test_results, 

70 session_teardown_failures=session_teardown_failures, 

71 session_teardown_output=session_teardown_output, 

72 ) 

73 

74 

75def print_summary( 

76 test_results: list[TestResult], 

77 total_duration: float, 

78 session_teardown_failures: list[TeardownFailure] | None = None, 

79) -> None: 

80 """Print test summary.""" 

81 _print_summary( 

82 console, 

83 test_results, 

84 total_duration, 

85 session_teardown_failures=session_teardown_failures, 

86 ) 

87 

88 

89__all__ = [ 

90 "console", 

91 "print_error", 

92 "print_failures", 

93 "print_summary", 

94 "print_test_result", 

95 "print_test_result_to_console", 

96]