5959from localstack .utils .files import load_file
6060from localstack .utils .functions import call_safe
6161from localstack .utils .strings import long_uid , short_uid , to_str
62- from localstack .utils .sync import ShortCircuitWaitException , wait_until
62+ from localstack .utils .sync import ShortCircuitWaitException , once_func , wait_until
6363from localstack .utils .testutil import create_lambda_archive
6464from tests .aws .services .lambda_ .test_lambda import (
6565 TEST_LAMBDA_NODEJS ,
@@ -5583,7 +5583,11 @@ def test_event_source_mapping_lifecycle_delete_function(
55835583 )
55845584
55855585 uuid = create_response ["UUID" ]
5586- cleanups .append (lambda : aws_client .lambda_ .delete_event_source_mapping (UUID = uuid ))
5586+
5587+ # Since we expect the ESM to be deleted as a part of lifecycle testing,
5588+ # ensure that this deletion only happens once.
5589+ delete_esm_once = once_func (aws_client .lambda_ .delete_event_source_mapping )
5590+ cleanups .append (lambda : delete_esm_once (UUID = uuid ))
55875591 snapshot .match ("create_response" , create_response )
55885592
55895593 # the stream might not be active immediately(!)
@@ -5605,7 +5609,7 @@ def _assert_function_deleted():
56055609 get_response_post_delete = aws_client .lambda_ .get_event_source_mapping (UUID = uuid )
56065610 snapshot .match ("get_response_post_delete" , get_response_post_delete )
56075611 #
5608- delete_response = aws_client . lambda_ . delete_event_source_mapping (UUID = uuid )
5612+ delete_response = delete_esm_once (UUID = uuid )
56095613 snapshot .match ("delete_response" , delete_response )
56105614
56115615 @markers .snapshot .skip_snapshot_verify (
0 commit comments