From 25bad01bbe22d6ae2147e6a761ea968fa0888e80 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Thu, 8 Jan 2026 11:48:03 +1030 Subject: [PATCH] pytest: fix flake in test_coinmoves_unilateral_htlc_timeout We need to make sure anchor reaches bitcoind, otherwise it might mine the commitment tx without it. This can happen in test_coinmoves_unilateral_htlc_fulfill as well. ``` > check_chain_moves(l1, expected_chain1) tests/test_coinmoves.py:844: ... E Full diff: E [ E { E 'account_id': 'wallet', E 'blockheight': 102, E 'created_index': 1, E 'credit_msat': 100000000000, E 'debit_msat': 0, E 'extra_tags': [], E 'output_msat': 100000000000, E 'primary_tag': 'deposit', E 'utxo': 'fca99b85e58f8ae23e5c6872e0500784997deb98bfc92e43449206553a108db2:1', E }, E { E 'account_id': 'wallet', E 'blockheight': 103, E 'created_index': 2, E 'credit_msat': 0, E 'debit_msat': 100000000000, E 'extra_tags': [], E 'output_msat': 100000000000, E 'primary_tag': 'withdrawal', E 'spending_txid': 'c097ad8bde478396c961369b69c50a144fae3423f36af4554f3fb1dacfdff83f', E 'utxo': 'fca99b85e58f8ae23e5c6872e0500784997deb98bfc92e43449206553a108db2:1', E }, E { E 'account_id': 'wallet', E 'blockheight': 103, E 'created_index': 3, E 'credit_msat': 25000000, E 'debit_msat': 0, E 'extra_tags': [], E 'output_msat': 25000000, E 'primary_tag': 'deposit', E 'utxo': 'c097ad8bde478396c961369b69c50a144fae3423f36af4554f3fb1dacfdff83f:1', E }, E { E 'account_id': '3ff8dfcfdab13f4f55f46af32334ae4f140ac5699b3661c9968347de8bad97c0', E 'blockheight': 103, E 'created_index': 4, E 'credit_msat': 99970073000, E 'debit_msat': 0, E 'extra_tags': [ E 'opener', E ], E 'output_msat': 99970073000, E 'peer_id': '022d223620a359a47ff7f7ac447c85c46c923da53389221a0054c11c1e3ca31d59', E 'primary_tag': 'channel_open', E 'utxo': 'c097ad8bde478396c961369b69c50a144fae3423f36af4554f3fb1dacfdff83f:0', E }, E { E - 'account_id': 'wallet', E + 'account_id': '3ff8dfcfdab13f4f55f46af32334ae4f140ac5699b3661c9968347de8bad97c0', E 'blockheight': 104, E 'created_index': 5, E - 'credit_msat': 0, E - 'debit_msat': 25000000, E - 'extra_tags': [], E - 'output_msat': 25000000, E - 'primary_tag': 'withdrawal', E - 'spending_txid': '1b6fbf9887d6f9cce727fc8bf9f582a3353be682998d4bafc9691c9ed26897e7', E - 'utxo': 'c097ad8bde478396c961369b69c50a144fae3423f36af4554f3fb1dacfdff83f:1', E - }, E - { E - 'account_id': 'wallet', E - 'blockheight': 104, E - 'created_index': 6, E - 'credit_msat': Decimal('15579000.00000000'), E - 'debit_msat': 0, E - 'extra_tags': [], E - 'output_msat': Decimal('15579000.00000000'), E - 'primary_tag': 'deposit', E - 'utxo': '1b6fbf9887d6f9cce727fc8bf9f582a3353be682998d4bafc9691c9ed26897e7:0', E - }, E - { E - 'account_id': '3ff8dfcfdab13f4f55f46af32334ae4f140ac5699b3661c9968347de8bad97c0', E - 'blockheight': 104, E - 'created_index': 7, E 'credit_msat': 0, E 'debit_msat': 49970073000, E 'extra_tags': [], E 'output_count': 5, E 'output_msat': 99970073000, E 'primary_tag': 'channel_close', E 'spending_txid': 'a499419bfdce179727cffca45429151db47839b247d83f71837429f021ae6322', E 'utxo': 'c097ad8bde478396c961369b69c50a144fae3423f36af4554f3fb1dacfdff83f:0', E }, E { E 'account_id': 'external', E 'blockheight': 104, E - 'created_index': 8, E ? ^ E + 'created_index': 6, E ? ^ E 'credit_msat': 330000, E 'debit_msat': 0, E 'extra_tags': [], E 'originating_account': '3ff8dfcfdab13f4f55f46af32334ae4f140ac5699b3661c9968347de8bad97c0', E 'output_msat': 330000, E 'primary_tag': 'anchor', E 'utxo': 'a499419bfdce179727cffca45429151db47839b247d83f71837429f021ae6322:0', E }, E { E 'account_id': 'external', E 'blockheight': 104, E - 'created_index': 9, E ? ^ E + 'created_index': 7, E ? ^ E 'credit_msat': 330000, E 'debit_msat': 0, E 'extra_tags': [], E 'originating_account': '3ff8dfcfdab13f4f55f46af32334ae4f140ac5699b3661c9968347de8bad97c0', E 'output_msat': 330000, E 'primary_tag': 'anchor', E 'utxo': 'a499419bfdce179727cffca45429151db47839b247d83f71837429f021ae6322:1', E }, E { E 'account_id': 'external', E 'blockheight': 104, E - 'created_index': 10, E ? ^^ E + 'created_index': 8, E ? ^ E 'credit_msat': 50000000000, E 'debit_msat': 0, E 'extra_tags': [], E 'originating_account': '3ff8dfcfdab13f4f55f46af32334ae4f140ac5699b3661c9968347de8bad97c0', E 'output_msat': 50000000000, E 'primary_tag': 'to_them', E 'utxo': 'a499419bfdce179727cffca45429151db47839b247d83f71837429f021ae6322:4', E }, E ] ``` Signed-off-by: Rusty Russell --- tests/test_coinmoves.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/test_coinmoves.py b/tests/test_coinmoves.py index 291f857ba..927347d0f 100644 --- a/tests/test_coinmoves.py +++ b/tests/test_coinmoves.py @@ -521,6 +521,7 @@ def test_coinmoves_unilateral_htlc_before_included(node_factory, bitcoind): check_chain_moves(l2, expected_chain2) close_info = l1.rpc.close(l2.info['id'], unilateraltimeout=1) + # Close, no anchor. bitcoind.generate_block(1, wait_for_mempool=1) # Make sure onchaind has digested it. @@ -714,7 +715,8 @@ def test_coinmoves_unilateral_htlc_timeout(node_factory, bitcoind): line = l1.daemon.wait_for_log("Creating anchor spend for local commit tx ") anchor_spend_txid = re.search(r'Creating anchor spend for local commit tx ([0-9a-f]{64})', line).group(1) - bitcoind.generate_block(1, wait_for_mempool=1) + # Close, and anchor. + bitcoind.generate_block(1, wait_for_mempool=2) sync_blockheight(bitcoind, [l1, l2]) # Make sure onchaind has digested it. @@ -1024,6 +1026,7 @@ def test_coinmoves_unilateral_htlc_dust(node_factory, bitcoind): check_chain_moves(l2, expected_chain2) close_info = l1.rpc.close(l2.info['id'], unilateraltimeout=1) + # Close, no anchor. bitcoind.generate_block(1, wait_for_mempool=1) sync_blockheight(bitcoind, [l1, l2]) @@ -1217,7 +1220,8 @@ def test_coinmoves_unilateral_htlc_fulfill(node_factory, bitcoind): line = l1.daemon.wait_for_log("Creating anchor spend for local commit tx ") anchor_spend_txid = re.search(r'Creating anchor spend for local commit tx ([0-9a-f]{64})', line).group(1) - bitcoind.generate_block(1, wait_for_mempool=1) + # Close, and anchor. + bitcoind.generate_block(1, wait_for_mempool=2) sync_blockheight(bitcoind, [l1, l2]) # Make sure onchaind has digested it.