Skip to content

Commit 6d37cca

Browse files
Disable the skip behaviour when using Harness.
1 parent 46ffe43 commit 6d37cca

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

ops/_private/harness.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,12 @@ def __init__(
312312
self._meta,
313313
self._model,
314314
juju_debug_at=self._juju_context.debug_at,
315+
# Harness tests will often have defer() usage without 'purging' the
316+
# deferred handler with reemit(), but still expect the next emit()
317+
# to result in a call, so we can't safely skip duplicate events.
318+
# When behaviour matching production is required, Scenario tests
319+
# should be used instead.
320+
skip_duplicate_events=False,
315321
)
316322

317323
warnings.warn(

ops/framework.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -608,6 +608,7 @@ def __init__(
608608
model: 'Model',
609609
event_name: Optional[str] = None,
610610
juju_debug_at: Optional[Set[str]] = None,
611+
skip_duplicate_events: bool = True,
611612
):
612613
super().__init__(self, None)
613614

@@ -624,6 +625,7 @@ def __init__(
624625
self._event_name = event_name
625626
self.meta = meta
626627
self.model = model
628+
self.skip_duplicate_events = skip_duplicate_events
627629
# [(observer_path, method_name, parent_path, event_key)]
628630
self._observers: _ObserverPath = []
629631
# {observer_path: observing Object}
@@ -878,7 +880,9 @@ def _emit(self, event: EventBase):
878880
continue
879881
if _event_kind and _event_kind != event_kind:
880882
continue
881-
if self._event_is_in_storage(observer_path, method_name, event_path, this_event_data):
883+
if self.skip_duplicate_events and self._event_is_in_storage(
884+
observer_path, method_name, event_path, this_event_data
885+
):
882886
logger.info(
883887
'Skipping notice (%s/%s/%s) - already in the queue.',
884888
event_path,

0 commit comments

Comments
 (0)