Commit bfe3b9d
authored
chain/ethereum: OR-merge receipt requirements in EthereumLogFilter (#6558)
* chain/ethereum: add unit tests for EthereumLogFilter receipt merge
Cover all six insertion sites (from_data_sources arms, from_mapping,
extend) and assert OR semantics across the three internal collections
(contracts_and_events_graph, wildcard_events, events_with_topic_filters).
Tests use two assertion helpers (assert_from_data_sources_or_merges and
assert_extend_or_merges) parameterized over the match-arm or collection
variant. Each helper runs both insertion orders so order-independence
is verified per variant. The OR-semantics property test catches any
flag-sequence regression.
* chain/ethereum: OR-merge receipt requirements in EthereumLogFilter
Wrap the three EthereumLogFilter collections in MergeMap and MergeGraph
newtypes whose only mutators (or_insert / or_add_edge) OR-combine the
bool weight with any existing value at the same key. The inner HashMap
and GraphMap are private, so callers cannot bypass the merge by going
through HashMap::insert or GraphMap::add_edge.
When two handlers collide on the same filter key with differing receipt
flags, the merged value is now the logical OR rather than the last
write. Handlers that declared receipt: true now reliably receive
transaction receipts even when another handler at the same key declared
receipt: false.
* chain/ethereum: Remove obsolete topic-filter test TODO
Topic-filtered events are now covered by the receipt-merge tests, so the
stale TODO is no longer needed.1 parent 1f577b1 commit bfe3b9d
1 file changed
Lines changed: 426 additions & 71 deletions
0 commit comments