@@ -296,6 +296,58 @@ def __init__(self, message):
296
296
self .assertEqual (len (xray_fault ["paths" ]), 1 )
297
297
self .assertTrue (xray_fault ["paths" ][0 ].endswith (os .path .relpath (__file__ )))
298
298
299
+ def test_handle_event_request_custom_empty_error_message_exception (self ):
300
+ def raise_exception_handler (json_input , lambda_context ):
301
+ class MyError (Exception ):
302
+ def __init__ (self , message ):
303
+ self .message = message
304
+
305
+ raise MyError ("" )
306
+
307
+ expected_response = {"errorType" : "MyError" , "errorMessage" : "" }
308
+ bootstrap .handle_event_request (
309
+ self .lambda_runtime ,
310
+ raise_exception_handler ,
311
+ "invoke_id" ,
312
+ self .event_body ,
313
+ "application/json" ,
314
+ {},
315
+ {},
316
+ "invoked_function_arn" ,
317
+ 0 ,
318
+ bootstrap .StandardLogSink (),
319
+ )
320
+ args , _ = self .lambda_runtime .post_invocation_error .call_args
321
+ error_response = json .loads (args [1 ])
322
+ self .assertEqual (args [0 ], "invoke_id" )
323
+ self .assertTrue (
324
+ expected_response .items () <= error_response .items (),
325
+ "Expected response is not a subset of the actual response\n Expected: {}\n Actual: {}" .format (
326
+ expected_response , error_response
327
+ ),
328
+ )
329
+ xray_fault = json .loads (args [2 ])
330
+ self .assertEqual (xray_fault ["working_directory" ], self .working_directory )
331
+ self .assertEqual (len (xray_fault ["exceptions" ]), 1 )
332
+ self .assertEqual (
333
+ xray_fault ["exceptions" ][0 ]["message" ], expected_response ["errorMessage" ]
334
+ )
335
+ self .assertEqual (
336
+ xray_fault ["exceptions" ][0 ]["type" ], expected_response ["errorType" ]
337
+ )
338
+ self .assertEqual (len (xray_fault ["exceptions" ][0 ]["stack" ]), 1 )
339
+ self .assertEqual (
340
+ xray_fault ["exceptions" ][0 ]["stack" ][0 ]["label" ], "raise_exception_handler"
341
+ )
342
+ self .assertIsInstance (xray_fault ["exceptions" ][0 ]["stack" ][0 ]["line" ], int )
343
+ self .assertTrue (
344
+ xray_fault ["exceptions" ][0 ]["stack" ][0 ]["path" ].endswith (
345
+ os .path .relpath (__file__ )
346
+ )
347
+ )
348
+ self .assertEqual (len (xray_fault ["paths" ]), 1 )
349
+ self .assertTrue (xray_fault ["paths" ][0 ].endswith (os .path .relpath (__file__ )))
350
+
299
351
def test_handle_event_request_no_module (self ):
300
352
def unable_to_import_module (json_input , lambda_context ):
301
353
import invalid_module
@@ -835,7 +887,9 @@ def test_log_error_standard_log_sink(self, mock_stdout):
835
887
err_to_log = bootstrap .make_error ("Error message" , "ErrorType" , None )
836
888
bootstrap .log_error (err_to_log , bootstrap .StandardLogSink ())
837
889
838
- expected_logged_error = "[ERROR] ErrorType: Error message\r Traceback (most recent call last):\n "
890
+ expected_logged_error = (
891
+ "[ERROR] ErrorType: Error message\r Traceback (most recent call last):\n "
892
+ )
839
893
self .assertEqual (mock_stdout .getvalue (), expected_logged_error )
840
894
841
895
def test_log_error_framed_log_sink (self ):
@@ -844,7 +898,9 @@ def test_log_error_framed_log_sink(self):
844
898
err_to_log = bootstrap .make_error ("Error message" , "ErrorType" , None )
845
899
bootstrap .log_error (err_to_log , log_sink )
846
900
847
- expected_logged_error = "[ERROR] ErrorType: Error message\n Traceback (most recent call last):"
901
+ expected_logged_error = (
902
+ "[ERROR] ErrorType: Error message\n Traceback (most recent call last):"
903
+ )
848
904
849
905
with open (temp_file .name , "rb" ) as f :
850
906
content = f .read ()
0 commit comments