It doesn't seem like we're actually testing the expected balance at any point, rather the amount received, but I may be missing nuance. Would this diff make sense? I don't like adding an extra parameter to an already long function for something so specific, if we can avoid it.
<details>
<summary>git diff on 1a52ca7619</summary>
diff --git a/test/functional/wallet_import_rescan.py b/test/functional/wallet_import_rescan.py
index 1abc9c0c79..fa9f43f66c 100755
--- a/test/functional/wallet_import_rescan.py
+++ b/test/functional/wallet_import_rescan.py
@@ -82,7 +82,7 @@ class Variant(collections.namedtuple("Variant", "call data address_type rescan p
)
assert_equal(response, [{"success": True}])
- def check(self, txid=None, amount=None, confirmation_height=None, amount_is_balance=True):
+ def check(self, txid=None, amount=None, confirmation_height=None):
"""Verify that listtransactions/listreceivedbyaddress return expected values."""
txs = self.node.listtransactions(label=self.label, count=10000, include_watchonly=True)
@@ -112,8 +112,7 @@ class Variant(collections.namedtuple("Variant", "call data address_type rescan p
address, = [ad for ad in addresses if txid in ad["txids"]]
assert_equal(address["address"], self.address["address"])
- if amount_is_balance:
- assert_equal(address["amount"], self.expected_balance)
+ assert_equal(address["amount"], self.amount_received)
assert_equal(address["confirmations"], confirmations)
# Verify the transaction is correctly marked watchonly depending on
# whether the transaction pays to an imported public key or
@@ -227,11 +226,11 @@ class ImportRescanTest(BitcoinTestFramework):
variant.node = self.nodes[2 + IMPORT_NODES.index(ImportNode(variant.prune, expect_rescan))]
variant.do_import(variant.timestamp)
if expect_rescan:
- variant.expected_balance = variant.initial_amount
+ variant.amount_received = variant.initial_amount
variant.expected_txs = 1
variant.check(variant.initial_txid, variant.initial_amount, variant.confirmation_height)
else:
- variant.expected_balance = 0
+ variant.amount_received = 0
variant.expected_txs = 0
variant.check()
@@ -251,7 +250,7 @@ class ImportRescanTest(BitcoinTestFramework):
# Check the latest results from getbalance and listtransactions.
for variant in IMPORT_VARIANTS:
self.log.info('Run check for variant {}'.format(variant))
- variant.expected_balance += variant.sent_amount
+ variant.amount_received += variant.sent_amount
variant.expected_txs += 1
variant.check(variant.sent_txid, variant.sent_amount, variant.confirmation_height)
@@ -297,7 +296,6 @@ class ImportRescanTest(BitcoinTestFramework):
subtract_fee_from_outputs=[0]
)
variant.child_txid = child["txid"]
- variant.expected_balance = 0
self.nodes[0].sendrawtransaction(child["hex"])
# Mempools should contain the child transactions for each variant.
@@ -321,10 +319,11 @@ class ImportRescanTest(BitcoinTestFramework):
# Ensure both transactions were rescanned
assert_equal(variant.node.gettransaction(variant.initial_txid)['confirmations'], 0)
assert_equal(variant.node.gettransaction(variant.child_txid)['confirmations'], 0)
+ variant.amount_received = variant.initial_amount
variant.expected_txs = 1
- variant.check(variant.initial_txid, variant.initial_amount, 0, False)
+ variant.check(variant.initial_txid, variant.initial_amount, 0)
else:
- variant.expected_balance = 0
+ variant.amount_received = 0
variant.expected_txs = 0
variant.check()
</details>