Skip to content

Commit d20d6ac

Browse files
author
MarcoFalke
committed
Merge bitcoin/bitcoin#23672: tests: Add data-driven testcases to rpc_decodescript.py
b35942e tests: Add data-driven testcases to rpc_decodescript.py (Dimitri) Pull request description: closes #23641 Top commit has no ACKs. Tree-SHA512: 2f494c78ad085d523fae15befaadb9e0fc382b5310e3a95395ecf06a90968b15b6d232f7564098ed0a68419e27aa2e5260fe691cf2ce84af9fb6b65634e54d77
2 parents 42b35f1 + b35942e commit d20d6ac

File tree

2 files changed

+133
-0
lines changed

2 files changed

+133
-0
lines changed
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
[
2+
[
3+
"5120eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
4+
{
5+
"asm": "1 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
6+
"address": "bcrt1pamhwamhwamhwamhwamhwamhwamhwamhwamhwamhwamhwamhwamhqz6nvlh",
7+
"type": "witness_v1_taproot",
8+
"p2sh": "2Mt5gBng2UVL3xX4FUQinSBthq8gWQqs37g"
9+
}
10+
],
11+
[
12+
"5102eeee",
13+
{
14+
"asm": "1 -28398",
15+
"address": "bcrt1pamhqk96edn",
16+
"type": "witness_unknown",
17+
"p2sh": "2ND89Zqxi19tq7AjL5Y3un8fDWRwpwrk4tf"
18+
}
19+
],
20+
[
21+
"0020eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
22+
{
23+
"asm": "0 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
24+
"address": "bcrt1qamhwamhwamhwamhwamhwamhwamhwamhwamhwamhwamhwamhwamhqgdn98t",
25+
"type": "witness_v0_scripthash",
26+
"p2sh": "2MwGk8mw1GBP6U9D5X8gTvgvXpuknmAK3fo"
27+
}
28+
],
29+
[
30+
"a914eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee87",
31+
{
32+
"asm": "OP_HASH160 eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee OP_EQUAL",
33+
"address": "2NF2b3KS8xXb9XHvbRMXdZh8s5g92rUZHtp",
34+
"type": "scripthash"
35+
}
36+
],
37+
[
38+
"6a00",
39+
{
40+
"asm": "OP_RETURN 0",
41+
"type": "nulldata",
42+
"p2sh": "2NG8CqGyR16jkZU5H7J9WM5xpCT6Fpw6bww"
43+
}
44+
],
45+
[
46+
"6aee",
47+
{
48+
"asm": "OP_RETURN OP_UNKNOWN",
49+
"type": "nonstandard",
50+
"p2sh": "2NGU1bmCBhSooc3vkPYdea2ngDcwhNx8CeF",
51+
"segwit": {
52+
"asm": "0 44358a3abb4cc9f635f459edffb2a1210f849857aaf12106a1af645e034faa95",
53+
"hex": "002044358a3abb4cc9f635f459edffb2a1210f849857aaf12106a1af645e034faa95",
54+
"address": "bcrt1qgs6c5w4mfnylvd05t8kllv4pyy8cfxzh4tcjzp4p4aj9uq60422sw9mgmf",
55+
"type": "witness_v0_scripthash",
56+
"p2sh-segwit": "2N9xFeGJC4Z2BQcVEq7vyeNUZiVoANFbrX1"
57+
}
58+
}
59+
],
60+
[
61+
"6a02ee",
62+
{
63+
"asm": "OP_RETURN [error]",
64+
"type": "nonstandard",
65+
"p2sh": "2N9JFV56rrkTYVnrJTMFSpKNsq6j5NbAdQr",
66+
"segwit": {
67+
"asm": "0 6f3d493995bda1f72a8f4de96663be22b583623a05f5ae98f38c45b8e03ca5da",
68+
"hex": "00206f3d493995bda1f72a8f4de96663be22b583623a05f5ae98f38c45b8e03ca5da",
69+
"address": "bcrt1qdu75jwv4hkslw250fh5kvca7y26cxc36qh66ax8n33zm3cpu5hdqdtm4gp",
70+
"type": "witness_v0_scripthash",
71+
"p2sh-segwit": "2N3TqW8vuVr987Z695CmLNmLLXobBRMmqho"
72+
}
73+
}
74+
],
75+
[
76+
"02eeee",
77+
{
78+
"asm": "-28398",
79+
"type": "nonstandard",
80+
"p2sh": "2N34iiGoUUkVSPiaaTFpJjB1FR9TXQu3PGM",
81+
"segwit": {
82+
"asm": "0 96c2368fc30514a438a8bd909f93c49a1549d77198ccbdb792043b666cb24f42",
83+
"hex": "002096c2368fc30514a438a8bd909f93c49a1549d77198ccbdb792043b666cb24f42",
84+
"address": "bcrt1qjmprdr7rq522gw9ghkgfly7yng25n4m3nrxtmdujqsakvm9jfapqk795l5",
85+
"type": "witness_v0_scripthash",
86+
"p2sh-segwit": "2MtoejEictTQ6XtmHYzoYttt35Ec6krqFKN"
87+
}
88+
}
89+
],
90+
[
91+
"ba",
92+
{
93+
"asm": "OP_CHECKSIGADD",
94+
"type": "nonstandard",
95+
"p2sh": "2MyX11u6v747zcKHTJMjXFgkj1vYZgHr4i1",
96+
"segwit": {
97+
"asm": "0 281c93990bac2c69cf372c9a3b66c406c86cca826d6407b68e644da22eef8186",
98+
"hex": "0020281c93990bac2c69cf372c9a3b66c406c86cca826d6407b68e644da22eef8186",
99+
"address": "bcrt1q9qwf8xgt4skxnneh9jdrkekyqmyxej5zd4jq0d5wv3x6yth0sxrqe2wl7r",
100+
"type": "witness_v0_scripthash",
101+
"p2sh-segwit": "2NBoeWVFMmZdEhLzP5kpvjnJ8c1GucsCbFK"
102+
}
103+
}
104+
],
105+
[
106+
"50",
107+
{
108+
"asm": "OP_RESERVED",
109+
"type": "nonstandard",
110+
"p2sh": "2NEqnmDnSWcfTRBG2t6M53ey6mjc8ncHesN",
111+
"segwit": {
112+
"asm": "0 5c62e091b8c0565f1bafad0dad5934276143ae2ccef7a5381e8ada5b1a8d26d2",
113+
"hex": "00205c62e091b8c0565f1bafad0dad5934276143ae2ccef7a5381e8ada5b1a8d26d2",
114+
"address": "bcrt1qt33wpydccpt97xa045x66kf5yas58t3vemm62wq73td9kx5dymfqknplwh",
115+
"type": "witness_v0_scripthash",
116+
"p2sh-segwit": "2NEtjT3ku2KjZo53bnwKX2v928Mzx5sjdUh"
117+
}
118+
}
119+
]
120+
]

test/functional/rpc_decodescript.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
55
"""Test decoding scripts via decodescript RPC command."""
66

7+
import json
8+
import os
9+
710
from test_framework.messages import (
811
sha256,
912
tx_from_hex,
@@ -252,13 +255,23 @@ def decoderawtransaction_asm_sighashtype(self):
252255
rpc_result = self.nodes[0].decoderawtransaction(txSave.serialize().hex())
253256
assert_equal('OP_RETURN 3011020701010101010101020601010101010101', rpc_result['vin'][0]['scriptSig']['asm'])
254257

258+
def decodescript_datadriven_tests(self):
259+
with open(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'data/rpc_decodescript.json'), encoding='utf-8') as f:
260+
dd_tests = json.load(f)
261+
262+
for script, result in dd_tests:
263+
rpc_result = self.nodes[0].decodescript(script)
264+
assert_equal(result, rpc_result)
265+
255266
def run_test(self):
256267
self.log.info("Test decoding of standard input scripts [scriptSig]")
257268
self.decodescript_script_sig()
258269
self.log.info("Test decoding of standard output scripts [scriptPubKey]")
259270
self.decodescript_script_pub_key()
260271
self.log.info("Test 'asm' script decoding of transactions")
261272
self.decoderawtransaction_asm_sighashtype()
273+
self.log.info("Data-driven tests")
274+
self.decodescript_datadriven_tests()
262275

263276
if __name__ == '__main__':
264277
DecodeScriptTest().main()

0 commit comments

Comments
 (0)