Skip to content

Commit fac9095

Browse files
author
MarcoFalke
committed
test: Add feature_taproot.py --previous_release
1 parent 029d2d9 commit fac9095

File tree

2 files changed

+24
-6
lines changed

2 files changed

+24
-6
lines changed

test/functional/feature_taproot.py

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -518,9 +518,9 @@ def random_checksig_style(pubkey):
518518
"""Creates a random CHECKSIG* tapscript that would succeed with only the valid signature on witness stack."""
519519
return bytes(CScript([pubkey, OP_CHECKSIG]))
520520
opcode = random.choice([OP_CHECKSIG, OP_CHECKSIGVERIFY, OP_CHECKSIGADD])
521-
if (opcode == OP_CHECKSIGVERIFY):
521+
if opcode == OP_CHECKSIGVERIFY:
522522
ret = CScript([pubkey, opcode, OP_1])
523-
elif (opcode == OP_CHECKSIGADD):
523+
elif opcode == OP_CHECKSIGADD:
524524
num = random.choice([0, 0x7fffffff, -0x7fffffff])
525525
ret = CScript([num, pubkey, opcode, num + 1, OP_EQUAL])
526526
else:
@@ -1189,19 +1189,36 @@ def dump_witness(wit):
11891189
# Data type to keep track of UTXOs, where they were created, and how to spend them.
11901190
UTXOData = namedtuple('UTXOData', 'outpoint,output,spender')
11911191

1192+
11921193
class TaprootTest(BitcoinTestFramework):
11931194
def add_options(self, parser):
11941195
parser.add_argument("--dumptests", dest="dump_tests", default=False, action="store_true",
11951196
help="Dump generated test cases to directory set by TEST_DUMP_DIR environment variable")
1197+
parser.add_argument("--previous_release", dest="previous_release", default=False, action="store_true",
1198+
help="Use a previous release as taproot-inactive node")
11961199

11971200
def skip_test_if_missing_module(self):
11981201
self.skip_if_no_wallet()
1202+
if self.options.previous_release:
1203+
self.skip_if_no_previous_releases()
11991204

12001205
def set_test_params(self):
12011206
self.num_nodes = 2
12021207
self.setup_clean_chain = True
12031208
# Node 0 has Taproot inactive, Node 1 active.
1204-
self.extra_args = [["-par=1", "-vbparams=taproot:1:1"], ["-par=1"]]
1209+
self.extra_args = [["-par=1"], ["-par=1"]]
1210+
if self.options.previous_release:
1211+
self.wallet_names = [None, self.default_wallet_name]
1212+
else:
1213+
self.extra_args[0].append("-vbparams=taproot:1:1")
1214+
1215+
def setup_nodes(self):
1216+
self.add_nodes(self.num_nodes, self.extra_args, versions=[
1217+
170200 if self.options.previous_release else None,
1218+
None,
1219+
])
1220+
self.start_nodes()
1221+
self.import_deterministic_coinbase_privkeys()
12051222

12061223
def block_submit(self, node, txs, msg, err_msg, cb_pubkey=None, fees=0, sigops_weight=0, witness=False, accept=False):
12071224

@@ -1223,7 +1240,7 @@ def block_submit(self, node, txs, msg, err_msg, cb_pubkey=None, fees=0, sigops_w
12231240
block_response = node.submitblock(block.serialize(True).hex())
12241241
if err_msg is not None:
12251242
assert block_response is not None and err_msg in block_response, "Missing error message '%s' from block response '%s': %s" % (err_msg, "(None)" if block_response is None else block_response, msg)
1226-
if (accept):
1243+
if accept:
12271244
assert node.getbestblockhash() == block.hash, "Failed to accept: %s (response: %s)" % (msg, block_response)
12281245
self.tip = block.sha256
12291246
self.lastblockhash = block.hash
@@ -1422,10 +1439,10 @@ def test_spenders(self, node, spenders, input_counts):
14221439
tx.rehash()
14231440
msg = ','.join(utxo.spender.comment + ("*" if n == fail_input else "") for n, utxo in enumerate(input_utxos))
14241441
if is_standard_tx:
1425-
node.sendrawtransaction(tx.serialize().hex(), 0)
1442+
node.sendrawtransaction(tx.serialize().hex(), True if node.version else 0)
14261443
assert node.getmempoolentry(tx.hash) is not None, "Failed to accept into mempool: " + msg
14271444
else:
1428-
assert_raises_rpc_error(-26, None, node.sendrawtransaction, tx.serialize().hex(), 0)
1445+
assert_raises_rpc_error(-26, None, node.sendrawtransaction, tx.serialize().hex(), True if node.version else 0)
14291446
# Submit in a block
14301447
self.block_submit(node, [tx], msg, witness=True, accept=fail_input is None, cb_pubkey=cb_pubkey, fees=fee, sigops_weight=sigops_weight, err_msg=expected_fail_msg)
14311448

test/functional/test_runner.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@
109109
'wallet_dump.py',
110110
'wallet_listtransactions.py',
111111
'feature_taproot.py',
112+
'feature_taproot.py --previous_release',
112113
# vv Tests less than 60s vv
113114
'p2p_sendheaders.py',
114115
'wallet_importmulti.py',

0 commit comments

Comments
 (0)