diff --git a/lnd_test.go b/lnd_test.go index dd1c58785..285ccd106 100644 --- a/lnd_test.go +++ b/lnd_test.go @@ -234,7 +234,7 @@ func closeChannelAndAssert(ctx context.Context, t *harnessTest, } } - // Finally, generate a single block, wait for the final close status + // We'll now, generate a single block, wait for the final close status // update, then ensure that the closing transaction was included in the // block. block := mineBlocks(t, net, 1)[0] @@ -246,6 +246,32 @@ func closeChannelAndAssert(ctx context.Context, t *harnessTest, assertTxInBlock(t, block, closingTxid) + // Finally, the transaction should no longer be in the pending close + // state as we've just mined a block that should include the closing + // transaction. This only applies for co-op close channels though. + if !force { + err = lntest.WaitPredicate(func() bool { + pendingChansRequest := &lnrpc.PendingChannelsRequest{} + pendingChanResp, err := node.PendingChannels( + ctx, pendingChansRequest, + ) + if err != nil { + return false + } + + for _, pendingClose := range pendingChanResp.PendingClosingChannels { + if pendingClose.Channel.ChannelPoint == chanPointStr { + return false + } + } + + return true + }, time.Second*15) + if err != nil { + t.Fatalf("closing transaction not marked as fully closed") + } + } + return closingTxid }