mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-05 14:06:27 -05:00
Merge bitcoin/bitcoin#26480: test: Remove wallet option from non-wallet tests
fa10f193b5
test: Set default in add_wallet_options if only one type can be chosen (MacroFake)555519d082
test: Remove wallet option from non-wallet tests (MacroFake)fac8d59d31
test: Set -disablewallet when no wallet has been compiled (MacroFake)fa68937b89
test: Make requires_wallet private (MacroFake) Pull request description: The tests have several issues: * Some tests that are wallet-type specific offer the option to run the test with the incompatible type For example, `wallet_dump.py` offers `--descriptors` and on current master fails with `JSONRPCException: Invalid public key`. After the changes here, it fails with a clear error: `unrecognized arguments: --descriptors`. * Tests that don't use the wallet at all offer the option to run it with a wallet type. This is confusing and wastes developers time if they are "tricked" into running the test for both wallet types, even though no wallet code is executed at all. For example, `feature_addrman.py` will happily accept and run with `--descriptors` or `--legacy-wallet`. After the changes here, it no longer silently ignores the flag, but reports a clear error: `unrecognized arguments`. ACKs for top commit: achow101: ACKfa10f193b5
Tree-SHA512: a5784da7305f4ec58c0013f433289000d94fc3d434b00fc329ffa37b812e2cd1da0071e34c3462bf79d904808564f2ae6d3d582f6b86b26215f9b07391b58460
This commit is contained in:
commit
8597260872
81 changed files with 259 additions and 20 deletions
|
@ -79,6 +79,9 @@ class ExampleTest(BitcoinTestFramework):
|
|||
# Override the set_test_params(), skip_test_if_missing_module(), add_options(), setup_chain(), setup_network()
|
||||
# and setup_nodes() methods to customize the test setup as required.
|
||||
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
"""Override test parameters for your individual test.
|
||||
|
||||
|
|
|
@ -32,6 +32,9 @@ from test_framework.util import (
|
|||
|
||||
|
||||
class BackwardsCompatibilityTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 10
|
||||
|
|
|
@ -44,6 +44,9 @@ SEQUENCE_LOCKTIME_MASK = 0x0000ffff
|
|||
NOT_FINAL_ERROR = "non-BIP68-final"
|
||||
|
||||
class BIP68Test(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
self.extra_args = [
|
||||
|
|
|
@ -12,6 +12,9 @@ from test_framework import util
|
|||
|
||||
|
||||
class ConfArgsTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 1
|
||||
|
|
|
@ -11,6 +11,9 @@ from test_framework.test_framework import BitcoinTestFramework
|
|||
from test_framework.test_node import ErrorMatch
|
||||
|
||||
class FilelockTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 2
|
||||
|
|
|
@ -17,6 +17,9 @@ class InitStressTest(BitcoinTestFramework):
|
|||
subsequent starts.
|
||||
"""
|
||||
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = False
|
||||
self.num_nodes = 1
|
||||
|
|
|
@ -24,6 +24,9 @@ def notify_outputname(walletname, txid):
|
|||
|
||||
|
||||
class NotificationsTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
self.setup_clean_chain = True
|
||||
|
|
|
@ -76,6 +76,9 @@ def calc_usage(blockdir):
|
|||
return sum(os.path.getsize(blockdir + f) for f in os.listdir(blockdir) if os.path.isfile(os.path.join(blockdir, f))) / (1024. * 1024.)
|
||||
|
||||
class PruneTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 6
|
||||
|
|
|
@ -21,6 +21,9 @@ from test_framework.address import ADDRESS_BCRT1_UNSPENDABLE
|
|||
|
||||
MAX_REPLACEMENT_LIMIT = 100
|
||||
class ReplaceByFeeTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
self.extra_args = [
|
||||
|
|
|
@ -78,6 +78,9 @@ txs_mined = {} # txindex from txid to blockhash
|
|||
|
||||
|
||||
class SegWitTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 3
|
||||
|
|
|
@ -1274,6 +1274,7 @@ UTXOData = namedtuple('UTXOData', 'outpoint,output,spender')
|
|||
|
||||
class TaprootTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
parser.add_argument("--dumptests", dest="dump_tests", default=False, action="store_true",
|
||||
help="Dump generated test cases to directory set by TEST_DUMP_DIR environment variable")
|
||||
|
||||
|
|
|
@ -66,11 +66,12 @@ def cli_get_info_string_to_dict(cli_get_info_string):
|
|||
|
||||
|
||||
class TestBitcoinCli(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 1
|
||||
if self.is_specified_wallet_compiled():
|
||||
self.requires_wallet = True
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_cli()
|
||||
|
@ -114,6 +115,7 @@ class TestBitcoinCli(BitcoinTestFramework):
|
|||
|
||||
self.log.info("Test -getinfo returns expected network and blockchain info")
|
||||
if self.is_specified_wallet_compiled():
|
||||
self.import_deterministic_coinbase_privkeys()
|
||||
self.nodes[0].encryptwallet(password)
|
||||
cli_get_info_string = self.nodes[0].cli('-getinfo').send_cli()
|
||||
cli_get_info = cli_get_info_string_to_dict(cli_get_info_string)
|
||||
|
|
|
@ -97,6 +97,9 @@ int trace_aps_create_tx(struct pt_regs *ctx) {
|
|||
|
||||
|
||||
class CoinSelectionTracepointTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
self.setup_clean_chain = True
|
||||
|
|
|
@ -21,6 +21,9 @@ from test_framework.wallet import (
|
|||
|
||||
|
||||
class MempoolCompatibilityTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
self.wallet_names = [None]
|
||||
|
|
|
@ -28,6 +28,9 @@ assert CUSTOM_DESCENDANT_LIMIT >= CUSTOM_ANCESTOR_LIMIT
|
|||
|
||||
|
||||
class MempoolPackagesTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
self.extra_args = [
|
||||
|
|
|
@ -50,6 +50,9 @@ from test_framework.wallet import MiniWallet
|
|||
|
||||
|
||||
class MempoolPersistTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, legacy=False)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 3
|
||||
self.extra_args = [[], ["-persistmempool=0"], []]
|
||||
|
|
|
@ -15,10 +15,11 @@ from test_framework.wallet import MiniWallet
|
|||
MAX_INITIAL_BROADCAST_DELAY = 15 * 60 # 15 minutes in seconds
|
||||
|
||||
class MempoolUnbroadcastTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
if self.is_wallet_compiled():
|
||||
self.requires_wallet = True
|
||||
|
||||
def run_test(self):
|
||||
self.wallet = MiniWallet(self.nodes[0])
|
||||
|
@ -35,6 +36,7 @@ class MempoolUnbroadcastTest(BitcoinTestFramework):
|
|||
self.log.info("Generate transactions that only node 0 knows about")
|
||||
|
||||
if self.is_wallet_compiled():
|
||||
self.import_deterministic_coinbase_privkeys()
|
||||
# generate a wallet txn
|
||||
addr = node.getnewaddress()
|
||||
wallet_tx_hsh = node.sendtoaddress(addr, 0.0001)
|
||||
|
|
|
@ -24,12 +24,13 @@ from test_framework.wallet import (
|
|||
)
|
||||
|
||||
class RpcCreateMultiSigTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 3
|
||||
self.supports_cli = False
|
||||
if self.is_bdb_compiled():
|
||||
self.requires_wallet = True
|
||||
|
||||
def get_keys(self):
|
||||
self.pub = []
|
||||
|
@ -50,6 +51,7 @@ class RpcCreateMultiSigTest(BitcoinTestFramework):
|
|||
self.wallet = MiniWallet(test_node=node0)
|
||||
|
||||
if self.is_bdb_compiled():
|
||||
self.import_deterministic_coinbase_privkeys()
|
||||
self.check_addmultisigaddress_errors()
|
||||
|
||||
self.log.info('Generating blocks ...')
|
||||
|
|
|
@ -35,6 +35,9 @@ def get_unspent(listunspent, amount):
|
|||
raise AssertionError('Could not find unspent with amount={}'.format(amount))
|
||||
|
||||
class RawTransactionsTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 4
|
||||
self.setup_clean_chain = True
|
||||
|
|
|
@ -43,6 +43,9 @@ def process_mapping(fname):
|
|||
|
||||
|
||||
class HelpRpcTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
self.supports_cli = False
|
||||
|
|
|
@ -39,6 +39,9 @@ INVALID_ADDRESS = 'asfah14i8fajz0123f'
|
|||
INVALID_ADDRESS_2 = '1q049ldschfnwystcqnsvyfpj23mpsg3jcedq9xv'
|
||||
|
||||
class InvalidAddressErrorMessageTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 1
|
||||
|
|
|
@ -47,8 +47,9 @@ import json
|
|||
import os
|
||||
|
||||
|
||||
# Create one-input, one-output, no-fee transaction:
|
||||
class PSBTTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 3
|
||||
|
|
|
@ -54,6 +54,9 @@ class multidict(dict):
|
|||
|
||||
|
||||
class RawTransactionsTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, descriptors=False)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 3
|
||||
|
@ -65,8 +68,6 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||
# whitelist all peers to speed up tx relay / mempool sync
|
||||
for args in self.extra_args:
|
||||
args.append("-whitelist=noban@127.0.0.1")
|
||||
self.requires_wallet = self.is_specified_wallet_compiled()
|
||||
|
||||
self.supports_cli = False
|
||||
|
||||
def setup_network(self):
|
||||
|
@ -85,7 +86,8 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||
self.sendrawtransaction_testmempoolaccept_tests()
|
||||
self.decoderawtransaction_tests()
|
||||
self.transaction_version_number_tests()
|
||||
if self.requires_wallet and not self.options.descriptors:
|
||||
if self.is_specified_wallet_compiled() and not self.options.descriptors:
|
||||
self.import_deterministic_coinbase_privkeys()
|
||||
self.raw_multisig_transaction_legacy_tests()
|
||||
|
||||
def getrawtransaction_tests(self):
|
||||
|
|
|
@ -113,7 +113,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
|||
self.wallet_names = None
|
||||
# By default the wallet is not required. Set to true by skip_if_no_wallet().
|
||||
# When False, we ignore wallet_names regardless of what it is.
|
||||
self.requires_wallet = False
|
||||
self._requires_wallet = False
|
||||
# Disable ThreadOpenConnections by default, so that adding entries to
|
||||
# addrman will not result in automatic connections to them.
|
||||
self.disable_autoconnect = True
|
||||
|
@ -194,12 +194,6 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
|||
help="set a random seed for deterministically reproducing a previous test run")
|
||||
parser.add_argument('--timeout-factor', dest="timeout_factor", type=float, default=1.0, help='adjust test timeouts by a factor. Setting it to 0 disables all timeouts')
|
||||
|
||||
group = parser.add_mutually_exclusive_group()
|
||||
group.add_argument("--descriptors", action='store_const', const=True,
|
||||
help="Run test using a descriptor wallet", dest='descriptors')
|
||||
group.add_argument("--legacy-wallet", action='store_const', const=False,
|
||||
help="Run test using legacy wallets", dest='descriptors')
|
||||
|
||||
self.add_options(parser)
|
||||
# Running TestShell in a Jupyter notebook causes an additional -f argument
|
||||
# To keep TestShell from failing with an "unrecognized argument" error, we add a dummy "-f" argument
|
||||
|
@ -212,7 +206,13 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
|||
config.read_file(open(self.options.configfile))
|
||||
self.config = config
|
||||
|
||||
if self.options.descriptors is None:
|
||||
if "descriptors" not in self.options:
|
||||
# Wallet is not required by the test at all and the value of self.options.descriptors won't matter.
|
||||
# It still needs to exist and be None in order for tests to work however.
|
||||
# So set it to None to force -disablewallet, because the wallet is not needed.
|
||||
self.options.descriptors = None
|
||||
elif self.options.descriptors is None:
|
||||
# Some wallet is either required or optionally used by the test.
|
||||
# Prefer BDB unless it isn't available
|
||||
if self.is_bdb_compiled():
|
||||
self.options.descriptors = False
|
||||
|
@ -221,6 +221,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
|||
else:
|
||||
# If neither are compiled, tests requiring a wallet will be skipped and the value of self.options.descriptors won't matter
|
||||
# It still needs to exist and be None in order for tests to work however.
|
||||
# So set it to None, which will also set -disablewallet.
|
||||
self.options.descriptors = None
|
||||
|
||||
PortSeed.n = self.options.port_seed
|
||||
|
@ -412,7 +413,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
|||
extra_args = self.extra_args
|
||||
self.add_nodes(self.num_nodes, extra_args)
|
||||
self.start_nodes()
|
||||
if self.requires_wallet:
|
||||
if self._requires_wallet:
|
||||
self.import_deterministic_coinbase_privkeys()
|
||||
if not self.setup_clean_chain:
|
||||
for n in self.nodes:
|
||||
|
@ -446,6 +447,19 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
|||
|
||||
# Public helper methods. These can be accessed by the subclass test scripts.
|
||||
|
||||
def add_wallet_options(self, parser, *, descriptors=True, legacy=True):
|
||||
group = parser.add_mutually_exclusive_group()
|
||||
kwargs = {}
|
||||
if descriptors + legacy == 1:
|
||||
# If only one type can be chosen, set it as default
|
||||
kwargs["default"] = descriptors
|
||||
if descriptors:
|
||||
group.add_argument("--descriptors", action='store_const', const=True, **kwargs,
|
||||
help="Run test using a descriptor wallet", dest='descriptors')
|
||||
if legacy:
|
||||
group.add_argument("--legacy-wallet", action='store_const', const=False, **kwargs,
|
||||
help="Run test using legacy wallets", dest='descriptors')
|
||||
|
||||
def add_nodes(self, num_nodes: int, extra_args=None, *, rpchost=None, binary=None, binary_cli=None, versions=None):
|
||||
"""Instantiate TestNode objects.
|
||||
|
||||
|
@ -866,7 +880,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
|||
|
||||
def skip_if_no_wallet(self):
|
||||
"""Skip the running test if wallet has not been compiled."""
|
||||
self.requires_wallet = True
|
||||
self._requires_wallet = True
|
||||
if not self.is_wallet_compiled():
|
||||
raise SkipTest("wallet has not been compiled.")
|
||||
if self.options.descriptors:
|
||||
|
|
|
@ -105,6 +105,9 @@ class TestNode():
|
|||
"-debugexclude=rand",
|
||||
"-uacomment=testnode%d" % i,
|
||||
]
|
||||
if self.descriptors is None:
|
||||
self.args.append("-disablewallet")
|
||||
|
||||
if use_valgrind:
|
||||
default_suppressions_file = os.path.join(
|
||||
os.path.dirname(os.path.realpath(__file__)),
|
||||
|
|
|
@ -20,6 +20,9 @@ CHALLENGE_PRIVATE_KEY = (42).to_bytes(32, 'big')
|
|||
|
||||
|
||||
class SignetMinerTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.chain = "signet"
|
||||
self.setup_clean_chain = True
|
||||
|
|
|
@ -19,6 +19,9 @@ BUFFER_SIZE = 16 * 1024
|
|||
|
||||
|
||||
class ToolWalletTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
self.setup_clean_chain = True
|
||||
|
|
|
@ -21,6 +21,9 @@ from test_framework.util import (
|
|||
|
||||
|
||||
class AbandonConflictTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
self.extra_args = [["-minrelaytxfee=0.00001"], []]
|
||||
|
|
|
@ -66,6 +66,9 @@ from test_framework.util import (
|
|||
)
|
||||
|
||||
class AddressTypeTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 6
|
||||
self.extra_args = [
|
||||
|
|
|
@ -106,6 +106,9 @@ def generate_payment_values(n, m):
|
|||
|
||||
|
||||
class AddressInputTypeGrouping(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, legacy=False)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 2
|
||||
|
|
|
@ -63,6 +63,8 @@ def assert_balances(node, mine, margin=0.001):
|
|||
assert_approx(got[k], v, margin)
|
||||
|
||||
class AvoidReuseTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
|
|
|
@ -44,6 +44,9 @@ from test_framework.util import (
|
|||
|
||||
|
||||
class WalletBackupTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 4
|
||||
self.setup_clean_chain = True
|
||||
|
|
|
@ -46,6 +46,9 @@ def create_transactions(node, address, amt, fees):
|
|||
return txs
|
||||
|
||||
class WalletTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
self.setup_clean_chain = True
|
||||
|
|
|
@ -23,6 +23,9 @@ OUT_OF_RANGE = "Amount out of range"
|
|||
|
||||
|
||||
class WalletTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 4
|
||||
self.extra_args = [[
|
||||
|
|
|
@ -46,6 +46,9 @@ TOO_HIGH = 100000
|
|||
|
||||
|
||||
class BumpFeeTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
self.setup_clean_chain = True
|
||||
|
|
|
@ -13,6 +13,9 @@ from test_framework.util import (
|
|||
)
|
||||
|
||||
class CoinbaseCategoryTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
self.setup_clean_chain = True
|
||||
|
|
|
@ -14,6 +14,9 @@ from test_framework.blocktools import (
|
|||
|
||||
|
||||
class CreateTxWalletTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 1
|
||||
|
|
|
@ -16,6 +16,9 @@ from test_framework.util import (
|
|||
from test_framework.wallet_util import bytes_to_wif, generate_wif_key
|
||||
|
||||
class CreateWalletTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
|
||||
|
|
|
@ -9,6 +9,9 @@ from test_framework.test_framework import BitcoinTestFramework
|
|||
from test_framework.util import assert_raises_rpc_error
|
||||
|
||||
class WalletCrossChain(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
self.setup_clean_chain = True
|
||||
|
|
|
@ -13,6 +13,9 @@ from test_framework.util import (
|
|||
|
||||
|
||||
class WalletDescriptorTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, legacy=False)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 1
|
||||
|
|
|
@ -93,6 +93,9 @@ def read_dump(file_name, addrs, script_addrs, hd_master_addr_old):
|
|||
|
||||
|
||||
class WalletDumpTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, descriptors=False)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
self.extra_args = [["-keypool=90", "-addresstype=legacy"]]
|
||||
|
|
|
@ -14,6 +14,9 @@ from test_framework.util import (
|
|||
|
||||
|
||||
class WalletEncryptionTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 1
|
||||
|
|
|
@ -9,6 +9,9 @@ from test_framework.test_framework import BitcoinTestFramework
|
|||
from test_framework.util import assert_raises_rpc_error
|
||||
|
||||
class WalletRBFTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
self.setup_clean_chain = True
|
||||
|
|
|
@ -21,6 +21,9 @@ NUM_BLOCKS = 6 # number of blocks to mine
|
|||
|
||||
|
||||
class WalletFastRescanTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, legacy=False)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
self.extra_args = [[f'-keypool={KEYPOOL_SIZE}', '-blockfilterindex=1']]
|
||||
|
|
|
@ -16,6 +16,9 @@ from test_framework.util import (
|
|||
|
||||
|
||||
class WalletGroupTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 5
|
||||
|
|
|
@ -16,6 +16,9 @@ from test_framework.util import (
|
|||
|
||||
|
||||
class WalletHDTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 2
|
||||
|
|
|
@ -39,6 +39,9 @@ def check_implicit_transactions(implicit_keys, implicit_node):
|
|||
assert(('receive', b_address) in tuple((tx['category'], tx['address']) for tx in txs))
|
||||
|
||||
class ImplicitSegwitTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, descriptors=False)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
self.supports_cli = False
|
||||
|
|
|
@ -147,6 +147,9 @@ def get_rand_amount():
|
|||
|
||||
|
||||
class ImportRescanTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, descriptors=False)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2 + len(IMPORT_NODES)
|
||||
self.supports_cli = False
|
||||
|
|
|
@ -15,6 +15,9 @@ from test_framework.wallet_util import test_address
|
|||
|
||||
|
||||
class ImportWithLabel(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, descriptors=False)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
self.setup_clean_chain = True
|
||||
|
|
|
@ -30,6 +30,9 @@ from test_framework.wallet_util import (
|
|||
)
|
||||
|
||||
class ImportDescriptorsTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, legacy=False)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
self.extra_args = [["-addresstype=legacy"],
|
||||
|
|
|
@ -35,6 +35,9 @@ from test_framework.wallet_util import (
|
|||
|
||||
|
||||
class ImportMultiTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, descriptors=False)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
self.extra_args = [["-addresstype=legacy"], ["-addresstype=legacy"]]
|
||||
|
|
|
@ -21,6 +21,9 @@ from test_framework.wallet_util import bytes_to_wif
|
|||
|
||||
|
||||
class ImportPrunedFundsTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 2
|
||||
|
|
|
@ -17,6 +17,9 @@ from test_framework.wallet_util import (
|
|||
|
||||
|
||||
class InactiveHDChainsTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, descriptors=False)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 2
|
||||
|
|
|
@ -11,6 +11,9 @@ from test_framework.test_framework import BitcoinTestFramework
|
|||
from test_framework.util import assert_equal, assert_raises_rpc_error
|
||||
|
||||
class KeyPoolTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
|
||||
|
|
|
@ -21,6 +21,9 @@ from test_framework.util import (
|
|||
|
||||
|
||||
class KeypoolRestoreTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 4
|
||||
|
|
|
@ -18,6 +18,9 @@ from test_framework.wallet_util import test_address
|
|||
|
||||
|
||||
class WalletLabelsTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 1
|
||||
|
|
|
@ -15,6 +15,9 @@ from test_framework.util import (
|
|||
|
||||
|
||||
class ListDescriptorsTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, legacy=False)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
|
||||
|
|
|
@ -16,6 +16,9 @@ from test_framework.wallet_util import test_address
|
|||
|
||||
|
||||
class ReceivedByTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
# whitelist peers to speed up tx relay / mempool sync
|
||||
|
|
|
@ -20,6 +20,9 @@ from test_framework.wallet_util import bytes_to_wif
|
|||
from decimal import Decimal
|
||||
|
||||
class ListSinceBlockTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 4
|
||||
self.setup_clean_chain = True
|
||||
|
|
|
@ -21,6 +21,9 @@ from test_framework.util import (
|
|||
|
||||
|
||||
class ListTransactionsTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 3
|
||||
# This test isn't testing txn relay/timing, so set whitelist on the
|
||||
|
|
|
@ -19,6 +19,9 @@ from test_framework.wallet_util import (
|
|||
|
||||
|
||||
class WalletMigrationTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 1
|
||||
|
|
|
@ -22,6 +22,9 @@ MINISCRIPTS = [
|
|||
|
||||
|
||||
class WalletMiniscriptTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, legacy=False)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
|
||||
|
|
|
@ -16,6 +16,9 @@ from test_framework.util import (
|
|||
|
||||
|
||||
class WalletMultisigDescriptorPSBTTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, legacy=False)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 3
|
||||
self.setup_clean_chain = True
|
||||
|
|
|
@ -52,6 +52,7 @@ class MultiWalletTest(BitcoinTestFramework):
|
|||
self.skip_if_no_wallet()
|
||||
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
parser.add_argument(
|
||||
'--data_wallets_dir',
|
||||
default=os.path.join(os.path.dirname(os.path.realpath(__file__)), 'data/wallets/'),
|
||||
|
|
|
@ -8,6 +8,9 @@ from test_framework.test_framework import BitcoinTestFramework
|
|||
from test_framework.util import assert_equal
|
||||
|
||||
class OrphanedBlockRewardTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 2
|
||||
|
|
|
@ -23,6 +23,9 @@ from test_framework.util import (
|
|||
)
|
||||
|
||||
class ReorgsRestoreTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 3
|
||||
|
||||
|
|
|
@ -18,6 +18,9 @@ from test_framework.util import (
|
|||
)
|
||||
|
||||
class ResendWalletTransactionsTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
|
||||
|
|
|
@ -25,6 +25,9 @@ from test_framework.util import (
|
|||
from test_framework.wallet_util import bytes_to_wif
|
||||
|
||||
class WalletSendTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
# whitelist all peers to speed up tx relay / mempool sync
|
||||
|
|
|
@ -26,6 +26,9 @@ def cleanup(func):
|
|||
|
||||
class SendallTest(BitcoinTestFramework):
|
||||
# Setup and helpers
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def skip_test_if_missing_module(self):
|
||||
self.skip_if_no_wallet()
|
||||
|
||||
|
|
|
@ -18,6 +18,9 @@ from test_framework.util import (
|
|||
|
||||
|
||||
class WalletSignerTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, legacy=False)
|
||||
|
||||
def mock_signer_path(self):
|
||||
path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'mocks', 'signer.py')
|
||||
if platform.system() == "Windows":
|
||||
|
|
|
@ -10,6 +10,9 @@ from test_framework.util import (
|
|||
)
|
||||
|
||||
class SignMessagesWithAddressTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 1
|
||||
|
|
|
@ -34,6 +34,9 @@ from decimal import (
|
|||
)
|
||||
|
||||
class SignRawTransactionWithWalletTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 2
|
||||
|
|
|
@ -15,6 +15,9 @@ from test_framework.util import (
|
|||
)
|
||||
|
||||
class SimulateTxTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 1
|
||||
|
|
|
@ -13,6 +13,9 @@ from test_framework.util import (
|
|||
|
||||
|
||||
class WalletStartupTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 1
|
||||
|
|
|
@ -187,6 +187,9 @@ def compute_raw_taproot_address(pubkey):
|
|||
class WalletTaprootTest(BitcoinTestFramework):
|
||||
"""Test generation and spending of P2TR address outputs."""
|
||||
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, legacy=False)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 2
|
||||
self.setup_clean_chain = True
|
||||
|
|
|
@ -8,6 +8,9 @@ from test_framework.util import assert_equal
|
|||
|
||||
|
||||
class WalletLocktimeTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
|
||||
|
|
|
@ -17,6 +17,9 @@ from test_framework.util import (
|
|||
|
||||
|
||||
class TransactionTimeRescanTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = False
|
||||
self.num_nodes = 3
|
||||
|
|
|
@ -24,6 +24,7 @@ class TxnMallTest(BitcoinTestFramework):
|
|||
self.skip_if_no_wallet()
|
||||
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
parser.add_argument("--mineblock", dest="mine_block", default=False, action="store_true",
|
||||
help="Test double-spend of 1-confirmed transaction")
|
||||
parser.add_argument("--segwit", dest="segwit", default=False, action="store_true",
|
||||
|
|
|
@ -22,6 +22,7 @@ class TxnMallTest(BitcoinTestFramework):
|
|||
self.skip_if_no_wallet()
|
||||
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
parser.add_argument("--mineblock", dest="mine_block", default=False, action="store_true",
|
||||
help="Test double-spend of 1-confirmed transaction")
|
||||
|
||||
|
|
|
@ -45,6 +45,9 @@ def deser_keymeta(f):
|
|||
return ver, create_time, kp_str, seed_id, fpr, path_len, path, has_key_orig
|
||||
|
||||
class UpgradeWalletTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser, descriptors=False)
|
||||
|
||||
def set_test_params(self):
|
||||
self.setup_clean_chain = True
|
||||
self.num_nodes = 3
|
||||
|
|
|
@ -14,6 +14,9 @@ from test_framework.util import (
|
|||
|
||||
|
||||
class CreateWalletWatchonlyTest(BitcoinTestFramework):
|
||||
def add_options(self, parser):
|
||||
self.add_wallet_options(parser)
|
||||
|
||||
def set_test_params(self):
|
||||
self.num_nodes = 1
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue