@@ -54,7 +54,44 @@ def test_get_wide_event_throwaway_dict_does_not_pollute_contextvar():
5454
5555
5656# ---------------------------------------------------------------------------
57- # Result.reject appends errors to wide event
57+ # Result.resolve records deduplicated caller in success_stack
58+ # ---------------------------------------------------------------------------
59+
60+
61+ def test_resolve_records_caller_in_success_stack ():
62+ event : dict = {}
63+ set_wide_event (event )
64+ try :
65+ Result .resolve ("a" )
66+ Result .resolve ("b" )
67+ Result .resolve ("c" )
68+ assert event ["success_stack" ] == ["test_resolve_records_caller_in_success_stack" ]
69+ finally :
70+ clear_wide_event ()
71+
72+
73+ def _helper_resolve ():
74+ return Result .resolve ("from helper" )
75+
76+
77+ def test_resolve_deduplicates_same_caller ():
78+ event : dict = {}
79+ set_wide_event (event )
80+ try :
81+ Result .resolve ("first" )
82+ _helper_resolve ()
83+ Result .resolve ("second" )
84+ _helper_resolve ()
85+ assert event ["success_stack" ] == [
86+ "test_resolve_deduplicates_same_caller" ,
87+ "_helper_resolve" ,
88+ ]
89+ finally :
90+ clear_wide_event ()
91+
92+
93+ # ---------------------------------------------------------------------------
94+ # Result.reject appends to error_stack
5895# ---------------------------------------------------------------------------
5996
6097
@@ -63,10 +100,10 @@ def test_reject_appends_error_to_wide_event():
63100 set_wide_event (event )
64101 try :
65102 Result .reject ("something broke" , Code .INTERNAL_ERROR )
66- assert "errors" in event
67- assert len ( event ["errors" ]) == 1
68- assert event ["errors " ][0 ]["errmsg " ] == "something broke"
69- assert event ["errors " ][0 ]["status " ] == str ( Code . INTERNAL_ERROR )
103+ assert len ( event [ "error_stack" ]) == 1
104+ assert event ["error_stack" ][ 0 ][ "errmsg" ] == "something broke"
105+ assert event ["error_stack " ][0 ]["status " ] == str ( Code . INTERNAL_ERROR )
106+ assert event ["error_stack " ][0 ]["caller " ] == "test_reject_appends_error_to_wide_event"
70107 finally :
71108 clear_wide_event ()
72109
@@ -77,9 +114,9 @@ def test_reject_accumulates_multiple_errors():
77114 try :
78115 Result .reject ("first" , Code .BAD_REQUEST )
79116 Result .reject ("second" , Code .INTERNAL_ERROR )
80- assert len (event ["errors " ]) == 2
81- assert event ["errors " ][0 ]["errmsg" ] == "first"
82- assert event ["errors " ][1 ]["errmsg" ] == "second"
117+ assert len (event ["error_stack " ]) == 2
118+ assert event ["error_stack " ][0 ]["errmsg" ] == "first"
119+ assert event ["error_stack " ][1 ]["errmsg" ] == "second"
83120 finally :
84121 clear_wide_event ()
85122
0 commit comments