mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-12-03 01:09:14 +01:00
Merge #20267: Disable and fix tests for when BDB is not compiled
49797c3ccftests: Disable bdb dump test when no bdb (Andrew Chow)1194cf9269Fix wallet_send.py wallet setup to work with descriptors (Andrew Chow)fbaea7bfe4Require legacy wallet for wallet_upgradewallet.py (Andrew Chow)b1b679e0abExplicitly mark legacy wallet tests as such (Andrew Chow)09514e1befSetup wallets for interface_zmq.py (Andrew Chow)4d03ef9a73Use MiniWallet in rpc_net.py (Andrew Chow)4de23824b0Setup wallets for interface_bitcoin_cli.py (Andrew Chow)7c71c627d2Setup wallets with descriptors for feature_notifications (Andrew Chow)1f1bef8dbaHave feature_filelock.py test both bdb and sqlite, depending on compiled (Andrew Chow)c77975abc0Disable upgrades tests that require BDB if BDB is not compiled (Andrew Chow)1f20cac9d4Disable wallet_descriptor.py bdb format check if BDB is not compiled (Andrew Chow)3641597d7etests: Don't make any wallets unless wallet is required (Andrew Chow)b9b88f57a9Skip legacy wallet reliant tests if BDB is not compiled (Andrew Chow)6f36242389tests: Set descriptors default based on compilation (Andrew Chow) Pull request description: This PR fixes tests for when BDB is not compiled. Tests which rely on or test legacy wallet behavior are disabled and skipped when BDB is not compiled. For the components of some tests that are for legacy wallet things, those parts of the tests are skipped. For the majority of tests, changes are made so that they can be run with either legacy wallets or descriptor wallets without materially effecting the test. Most tests only need the wallet for balance and transactions, so the type of wallet is not an important part of those tests. Additionally, some tests are wallet agnostic and modified to instead use the test framework's MiniWallet. ACKs for top commit: laanwj: ACK49797c3ccfryanofsky: Code review ACK49797c3ccf. Only change since last review is dropping last commit. Previous review w/ suggestions for future followup is https://github.com/bitcoin/bitcoin/pull/20267#pullrequestreview-581508843 Tree-SHA512: 69659f8a81fb437ecbca962f4082c12835282dbf1fba7d9952f727a49e01981d749af9b09feda1c8ca737516c7d7a08ef17e782795df3fa69892d5021b41c1ed
This commit is contained in:
@@ -108,6 +108,9 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||
# skipped. If list is truncated, wallet creation is skipped and keys
|
||||
# are not imported.
|
||||
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.set_test_params()
|
||||
assert self.wallet_names is None or len(self.wallet_names) <= self.num_nodes
|
||||
if self.options.timeout_factor == 0 :
|
||||
@@ -184,15 +187,30 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||
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", default=False, action="store_true",
|
||||
group.add_argument("--descriptors", action='store_const', const=True,
|
||||
help="Run test using a descriptor wallet", dest='descriptors')
|
||||
group.add_argument("--legacy-wallet", default=False, action="store_false",
|
||||
group.add_argument("--legacy-wallet", action='store_const', const=False,
|
||||
help="Run test using legacy wallets", dest='descriptors')
|
||||
|
||||
self.add_options(parser)
|
||||
self.options = parser.parse_args()
|
||||
self.options.previous_releases_path = previous_releases_path
|
||||
|
||||
config = configparser.ConfigParser()
|
||||
config.read_file(open(self.options.configfile))
|
||||
self.config = config
|
||||
|
||||
if self.options.descriptors is None:
|
||||
# Prefer BDB unless it isn't available
|
||||
if self.is_bdb_compiled():
|
||||
self.options.descriptors = False
|
||||
elif self.is_sqlite_compiled():
|
||||
self.options.descriptors = True
|
||||
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.
|
||||
self.options.descriptors = None
|
||||
|
||||
def setup(self):
|
||||
"""Call this method to start up the test framework object with options set."""
|
||||
|
||||
@@ -202,9 +220,8 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||
|
||||
self.options.cachedir = os.path.abspath(self.options.cachedir)
|
||||
|
||||
config = configparser.ConfigParser()
|
||||
config.read_file(open(self.options.configfile))
|
||||
self.config = config
|
||||
config = self.config
|
||||
|
||||
fname_bitcoind = os.path.join(
|
||||
config["environment"]["BUILDDIR"],
|
||||
"src",
|
||||
@@ -377,7 +394,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||
extra_args = self.extra_args
|
||||
self.add_nodes(self.num_nodes, extra_args)
|
||||
self.start_nodes()
|
||||
if self.is_wallet_compiled():
|
||||
if self.requires_wallet:
|
||||
self.import_deterministic_coinbase_privkeys()
|
||||
if not self.setup_clean_chain:
|
||||
for n in self.nodes:
|
||||
@@ -769,10 +786,13 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
|
||||
|
||||
def skip_if_no_wallet(self):
|
||||
"""Skip the running test if wallet has not been compiled."""
|
||||
self.requires_wallet = True
|
||||
if not self.is_wallet_compiled():
|
||||
raise SkipTest("wallet has not been compiled.")
|
||||
if self.options.descriptors:
|
||||
self.skip_if_no_sqlite()
|
||||
else:
|
||||
self.skip_if_no_bdb()
|
||||
|
||||
def skip_if_no_sqlite(self):
|
||||
"""Skip the running test if sqlite has not been compiled."""
|
||||
|
||||
Reference in New Issue
Block a user