diff --git a/contrib/devtools/circular-dependencies.py b/contrib/devtools/circular-dependencies.py old mode 100644 new mode 100755 diff --git a/src/qt/palladiumgui.cpp b/src/qt/palladiumgui.cpp index 68b6bff..c327283 100644 --- a/src/qt/palladiumgui.cpp +++ b/src/qt/palladiumgui.cpp @@ -70,7 +70,7 @@ #include #include #include // Falls Qt Version >= 5.6, sonst String-Vergleich -#include "clientversion.h" // Wichtig um die eigene Version zu kennen +#include // Wichtig um die eigene Version zu kennen const std::string PalladiumGUI::DEFAULT_UIPLATFORM = #if defined(Q_OS_MAC) @@ -470,7 +470,7 @@ void PalladiumGUI::createActions() themeAction = new QAction(tr("&Dark Mode"), this); themeAction->setCheckable(true); - connect(themeAction, SIGNAL(triggered()), this, SLOT(toggleTheme())); + connect(themeAction, &QAction::triggered, this, &PalladiumGUI::toggleTheme); } void PalladiumGUI::createMenuBar() diff --git a/test/README.md b/test/README.md index 00556cc..0359203 100644 --- a/test/README.md +++ b/test/README.md @@ -92,6 +92,96 @@ options. Run `test/functional/test_runner.py -h` to see them all. #### Troubleshooting and debugging test failures +##### Palladium consensus differences and their impact on tests + +Palladium diverges from Bitcoin Core in several consensus parameters. The test +framework has been adapted accordingly, but some tests could not be fully +ported yet. This section documents what changed and what to expect. + +**Key parameters (regtest)** + +| Parameter | Bitcoin Core | Palladium | +|-----------|:------------:|:---------:| +| `COINBASE_MATURITY` | 100 | 120 | +| P2PKH version (mainnet) | 0 | 55 | +| P2PKH version (testnet) | 111 | 127 | +| P2SH version (testnet) | 196 | 115 | +| Bech32 HRP (mainnet) | `bc` | `plm` | +| Bech32 HRP (regtest) | `bcrt` | `rplm` | +| BIP34 / BIP66 / BIP65 / CSV | activated at specific heights | active from height 0 | + +Because `COINBASE_MATURITY` is 120 instead of 100, the pre-mined cache chain +is extended beyond the original 199 blocks to `COINBASE_MATURITY + 99 = 219` +blocks so that each test node still has enough mature coinbase outputs available +at startup. Any test that previously hardcoded `generate(101)` or compared +against a fixed block height of 200 has been updated to use the +`COINBASE_MATURITY` constant exported by `test_framework.util`. + +**Skipped tests and known issues** + +The following tests are currently skipped or conditionally bypassed. Each entry +explains *why* and what would be needed to re-enable it: + +- `feature_assumevalid.py` — **skipped entirely**. The test builds blocks in + Python and submits them via P2P. Palladium's PoW validation rejects these + blocks because the nonce/nBits do not satisfy the chain's difficulty target. + Re-enabling requires either a PoW-aware block solver in the test framework or + a full rewrite that mines blocks via `generatetoaddress` RPC and then + replays the chain. + +- `feature_block.py` — **skipped entirely**. Same root cause: the full-block + P2P test constructs blocks manually and they do not pass Palladium's + consensus rules. + +- `p2p_unrequested_blocks.py` — **skipped entirely**. The test relies on + specific difficulty-rule behaviour that does not apply to the current + Palladium regtest chain. + +- `feature_backwards_compatibility.py` — **skipped entirely**. Requires + compiled binaries from previous Palladium releases, which are not yet + available. + +- `feature_versionbits_warning.py` — **skipped at runtime** if the node does + not emit the expected versionbits warning. This can happen when soft-forks are + already active from genesis on regtest. + +- `feature_reindex.py` — **skipped at runtime** if reindex fails to start + cleanly. On some Palladium regtest configurations this is a known issue. + +- `p2p_dos_header_tree.py` — **skipped at runtime** if the required header-data + file is not available for the current chain. + +- Several tests in `feature_bip68_sequence.py`, `feature_csv_activation.py`, + `feature_cltv.py`, `feature_dersig.py`, and `feature_segwit.py` contain + conditional blocks that **skip sub-tests** when the relevant soft-fork is + already active at the starting height. On Palladium regtest BIP34/66/65/CSV + and SegWit are active from height 0, so their pre-activation test paths are + bypassed automatically. + +- `wallet_basic.py` — the `-reindex` argument is commented out in one sub-test + because reindex crashes on Palladium regtest under certain conditions. + +If the full suite appears to stall near the end, run the remaining tests +separately with `-j1` and allow extra time for completion. + +##### Local test updates (Palladium) + +Summary of recent test-specific changes in this fork: + +- `feature_proxy.py` was made tolerant to non-deterministic SOCKS5 command + ordering and onion/DNS timing. The test now matches proxy commands by the + expected destination and allows timeouts for onion/DNS checks to avoid hangs. +- `feature_assumevalid.py` is skipped because Python-constructed blocks do not + currently satisfy Palladium's PoW validation, triggering `bad-diffbits` / + incorrect proof-of-work. + +What still needs to be fixed: + +- Implement a PoW-aware block solver in the Python test framework for + Palladium, or +- Rewrite `feature_assumevalid.py` to mine via `generatetoaddress` and rebuild + the chain for P2P delivery while keeping the invalid-signature block logic. + ##### Resource contention The P2P and RPC ports used by the palladiumd nodes-under-test are chosen to make @@ -122,12 +212,14 @@ pkill -9 palladiumd ##### Data directory cache -A pre-mined blockchain with 200 blocks is generated the first time a -functional test is run and is stored in test/cache. This speeds up -test startup times since new blockchains don't need to be generated for -each test. However, the cache may get into a bad state, in which case -tests will fail. If this happens, remove the cache directory (and make -sure palladiumd processes are stopped as above): +A pre-mined blockchain is generated the first time a functional test is run +and is stored in `test/cache`. The chain length is +`COINBASE_MATURITY + 99` blocks (currently 219) so that every test node has +enough mature coinbase outputs available immediately. This speeds up test +startup times since new blockchains don't need to be generated for each test. +However, the cache may get into a bad state, in which case tests will fail. +If this happens, remove the cache directory (and make sure palladiumd +processes are stopped as above): ```bash rm -rf test/cache diff --git a/test/lint/lint-format-strings.py b/test/lint/lint-format-strings.py old mode 100644 new mode 100755 diff --git a/test/util/data/palladium-util-test.json b/test/util/data/palladium-util-test.json index 2a687ef..b597afb 100644 --- a/test/util/data/palladium-util-test.json +++ b/test/util/data/palladium-util-test.json @@ -154,7 +154,7 @@ { "exec": "./palladium-tx", "args": ["-create", - "outaddr=1:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o:garbage"], + "outaddr=1:PBV5TGcG5MAMqcMSGAcyHLc8GKssjQ9SJN:garbage"], "return_code": 1, "error_txt": "error: TX output missing or too many separators", "description": "Malformed outaddr argument (too many separators). Expected to fail." @@ -181,8 +181,8 @@ "in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0", "in=bf829c6bcf84579331337659d31f89dfd138f7f7785802d5501c92333145ca7c:18", "in=22a6f904655d53ae2ff70e701a0bbd90aa3975c0f40bfc6cc996a9049e31cdfc:1", - "outaddr=0.18:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o", - "outaddr=4:1P8yWvZW8jVihP1bzHeqfE4aoXNX8AVa46"], + "outaddr=0.18:PBV5TGcG5MAMqcMSGAcyHLc8GKssjQ9SJN", + "outaddr=4:PWj9ftxMBeyugDgNLMyNL82rRGYQJEKpEC"], "output_cmp": "txcreate1.hex", "description": "Creates a new transaction with three inputs and two outputs" }, @@ -193,8 +193,8 @@ "in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0", "in=bf829c6bcf84579331337659d31f89dfd138f7f7785802d5501c92333145ca7c:18", "in=22a6f904655d53ae2ff70e701a0bbd90aa3975c0f40bfc6cc996a9049e31cdfc:1", - "outaddr=0.18:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o", - "outaddr=4:1P8yWvZW8jVihP1bzHeqfE4aoXNX8AVa46"], + "outaddr=0.18:PBV5TGcG5MAMqcMSGAcyHLc8GKssjQ9SJN", + "outaddr=4:PWj9ftxMBeyugDgNLMyNL82rRGYQJEKpEC"], "output_cmp": "txcreate1.json", "description": "Creates a new transaction with three inputs and two outputs (output in json)" }, @@ -305,7 +305,7 @@ "set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]", "set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485\",\"vout\":0,\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]", "sign=ALL", - "outaddr=0.001:193P6LtvS4nCnkDvM9uXn1gsSRqh4aDAz7"], + "outaddr=0.001:PGdZFKHmUzGPmatghEE4Suf94B1a9ey8gS"], "output_cmp": "txcreatesignv1.hex", "description": "Creates a new v1 transaction with a single input and a single output, and then signs the transaction" }, @@ -317,7 +317,7 @@ "set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]", "set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485\",\"vout\":0,\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]", "sign=ALL", - "outaddr=0.001:193P6LtvS4nCnkDvM9uXn1gsSRqh4aDAz7"], + "outaddr=0.001:PGdZFKHmUzGPmatghEE4Suf94B1a9ey8gS"], "output_cmp": "txcreatesignv1.json", "description": "Creates a new v1 transaction with a single input and a single output, and then signs the transaction (output in json)" }, @@ -328,7 +328,7 @@ "set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]", "set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485\",\"vout\":0,\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]", "sign=ALL", - "outaddr=0.001:193P6LtvS4nCnkDvM9uXn1gsSRqh4aDAz7"], + "outaddr=0.001:PGdZFKHmUzGPmatghEE4Suf94B1a9ey8gS"], "output_cmp": "txcreatesignv2.hex", "description": "Creates a new transaction with a single input and a single output, and then signs the transaction" }, @@ -339,7 +339,7 @@ "set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]", "set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485\",\"vout\":\"0foo\",\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]", "sign=ALL", - "outaddr=0.001:193P6LtvS4nCnkDvM9uXn1gsSRqh4aDAz7"], + "outaddr=0.001:PGdZFKHmUzGPmatghEE4Suf94B1a9ey8gS"], "return_code": 1, "error_txt": "error: prevtxs internal object typecheck fail", "description": "Tests the check for invalid vout index in prevtxs for sign" @@ -351,7 +351,7 @@ "set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]", "set=prevtxs:[{\"txid\":\"Zd49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59412\",\"vout\":0,\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]", "sign=ALL", - "outaddr=0.001:193P6LtvS4nCnkDvM9uXn1gsSRqh4aDAz7"], + "outaddr=0.001:PGdZFKHmUzGPmatghEE4Suf94B1a9ey8gS"], "return_code": 1, "error_txt": "error: txid must be hexadecimal string (not 'Zd49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59412')", "description": "Tests the check for invalid txid due to invalid hex" @@ -363,7 +363,7 @@ "set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]", "set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc594\",\"vout\":0,\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]", "sign=ALL", - "outaddr=0.001:193P6LtvS4nCnkDvM9uXn1gsSRqh4aDAz7"], + "outaddr=0.001:PGdZFKHmUzGPmatghEE4Suf94B1a9ey8gS"], "return_code": 1, "error_txt": "error: txid must be hexadecimal string (not '4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc594')", "description": "Tests the check for invalid txid valid hex, but too short" @@ -375,7 +375,7 @@ "set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]", "set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc5948512\",\"vout\":0,\"scriptPubKey\":\"76a91491b24bf9f5288532960ac687abb035127b1d28a588ac\"}]", "sign=ALL", - "outaddr=0.001:193P6LtvS4nCnkDvM9uXn1gsSRqh4aDAz7"], + "outaddr=0.001:PGdZFKHmUzGPmatghEE4Suf94B1a9ey8gS"], "return_code": 1, "error_txt": "error: txid must be hexadecimal string (not '4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc5948512')", "description": "Tests the check for invalid txid valid hex, but too long" @@ -445,7 +445,7 @@ "args": ["-create", "in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0", - "outaddr=0.18:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o", + "outaddr=0.18:PBV5TGcG5MAMqcMSGAcyHLc8GKssjQ9SJN", "outdata=4:54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e"], "output_cmp": "txcreatedata1.hex", "description": "Creates a new transaction with one input, one address output and one data output" @@ -455,7 +455,7 @@ ["-json", "-create", "nversion=1", "in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0", - "outaddr=0.18:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o", + "outaddr=0.18:PBV5TGcG5MAMqcMSGAcyHLc8GKssjQ9SJN", "outdata=4:54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e"], "output_cmp": "txcreatedata1.json", "description": "Creates a new v1 transaction with one input, one address output and one data output (output in json)" @@ -464,7 +464,7 @@ "args": ["-create", "in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0", - "outaddr=0.18:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o", + "outaddr=0.18:PBV5TGcG5MAMqcMSGAcyHLc8GKssjQ9SJN", "outdata=54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e"], "output_cmp": "txcreatedata2.hex", "description": "Creates a new transaction with one input, one address output and one data (zero value) output" @@ -474,7 +474,7 @@ ["-json", "-create", "in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0", - "outaddr=0.18:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o", + "outaddr=0.18:PBV5TGcG5MAMqcMSGAcyHLc8GKssjQ9SJN", "outdata=54686973204f505f52455455524e207472616e73616374696f6e206f7574707574207761732063726561746564206279206d6f646966696564206372656174657261777472616e73616374696f6e2e"], "output_cmp": "txcreatedata2.json", "description": "Creates a new transaction with one input, one address output and one data (zero value) output (output in json)" @@ -483,7 +483,7 @@ "args": ["-create", "in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0:4294967293", - "outaddr=0.18:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o"], + "outaddr=0.18:PBV5TGcG5MAMqcMSGAcyHLc8GKssjQ9SJN"], "output_cmp": "txcreatedata_seq0.hex", "description": "Creates a new transaction with one input with sequence number and one address output" }, @@ -492,7 +492,7 @@ ["-json", "-create", "in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0:4294967293", - "outaddr=0.18:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o"], + "outaddr=0.18:PBV5TGcG5MAMqcMSGAcyHLc8GKssjQ9SJN"], "output_cmp": "txcreatedata_seq0.json", "description": "Creates a new transaction with one input with sequence number and one address output (output in json)" }, diff --git a/test/util/data/tt-delin1-out.json b/test/util/data/tt-delin1-out.json index 9fc2ddc..2b4e1c8 100644 --- a/test/util/data/tt-delin1-out.json +++ b/test/util/data/tt-delin1-out.json @@ -198,7 +198,7 @@ "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "1E7SGgAZFCHDnVZLuRViX3gUmxpMfdvd2o" + "PMhcReZQJ7mQmLE7FVpFBwekPhzEkR6bvS" ] } }, @@ -211,7 +211,7 @@ "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "1AtWkdmfmYkErU16d3KYykJUbEp9MAj9Sb" + "PJUgucAWpUERqJfry7e5eeGkCyz2RJun4p" ] } } diff --git a/test/util/data/tt-delout1-out.json b/test/util/data/tt-delout1-out.json index 922d048..600d8ac 100644 --- a/test/util/data/tt-delout1-out.json +++ b/test/util/data/tt-delout1-out.json @@ -207,7 +207,7 @@ "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "1E7SGgAZFCHDnVZLuRViX3gUmxpMfdvd2o" + "PMhcReZQJ7mQmLE7FVpFBwekPhzEkR6bvS" ] } } diff --git a/test/util/data/tt-locktime317000-out.json b/test/util/data/tt-locktime317000-out.json index c97206f..a127ca8 100644 --- a/test/util/data/tt-locktime317000-out.json +++ b/test/util/data/tt-locktime317000-out.json @@ -207,7 +207,7 @@ "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "1E7SGgAZFCHDnVZLuRViX3gUmxpMfdvd2o" + "PMhcReZQJ7mQmLE7FVpFBwekPhzEkR6bvS" ] } }, @@ -220,7 +220,7 @@ "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "1AtWkdmfmYkErU16d3KYykJUbEp9MAj9Sb" + "PJUgucAWpUERqJfry7e5eeGkCyz2RJun4p" ] } } diff --git a/test/util/data/txcreate1.json b/test/util/data/txcreate1.json index ca9eacd..fb42ce6 100644 --- a/test/util/data/txcreate1.json +++ b/test/util/data/txcreate1.json @@ -45,7 +45,7 @@ "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "13tuJJDR2RgArmgfv6JScSdreahzgc4T6o" + "PBV5TGcG5MAMqcMSGAcyHLc8GKssjQ9SJN" ] } }, @@ -58,7 +58,7 @@ "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "1P8yWvZW8jVihP1bzHeqfE4aoXNX8AVa46" + "PWj9ftxMBeyugDgNLMyNL82rRGYQJEKpEC" ] } } diff --git a/test/util/data/txcreatedata1.json b/test/util/data/txcreatedata1.json index 39909c2..6418d37 100644 --- a/test/util/data/txcreatedata1.json +++ b/test/util/data/txcreatedata1.json @@ -27,7 +27,7 @@ "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "13tuJJDR2RgArmgfv6JScSdreahzgc4T6o" + "PBV5TGcG5MAMqcMSGAcyHLc8GKssjQ9SJN" ] } }, diff --git a/test/util/data/txcreatedata2.json b/test/util/data/txcreatedata2.json index 2958006..ce5ea51 100644 --- a/test/util/data/txcreatedata2.json +++ b/test/util/data/txcreatedata2.json @@ -27,7 +27,7 @@ "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "13tuJJDR2RgArmgfv6JScSdreahzgc4T6o" + "PBV5TGcG5MAMqcMSGAcyHLc8GKssjQ9SJN" ] } }, diff --git a/test/util/data/txcreatedata_seq0.json b/test/util/data/txcreatedata_seq0.json index a6656b5..51b661c 100644 --- a/test/util/data/txcreatedata_seq0.json +++ b/test/util/data/txcreatedata_seq0.json @@ -27,7 +27,7 @@ "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "13tuJJDR2RgArmgfv6JScSdreahzgc4T6o" + "PBV5TGcG5MAMqcMSGAcyHLc8GKssjQ9SJN" ] } } diff --git a/test/util/data/txcreatedata_seq1.json b/test/util/data/txcreatedata_seq1.json index e598042..a87dd92 100644 --- a/test/util/data/txcreatedata_seq1.json +++ b/test/util/data/txcreatedata_seq1.json @@ -36,7 +36,7 @@ "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "13tuJJDR2RgArmgfv6JScSdreahzgc4T6o" + "PBV5TGcG5MAMqcMSGAcyHLc8GKssjQ9SJN" ] } } diff --git a/test/util/data/txcreatemultisig1.json b/test/util/data/txcreatemultisig1.json index c32e755..ca31d6b 100644 --- a/test/util/data/txcreatemultisig1.json +++ b/test/util/data/txcreatemultisig1.json @@ -18,9 +18,9 @@ "reqSigs": 2, "type": "multisig", "addresses": [ - "1FoG2386FG2tAJS9acMuiDsKy67aGg9MKz", - "1FXtz9KU8JNmQDyHdiEm5HDiALuP3zdHvV", - "14LuavcBbXZYJ6Tsz3cAUQj9SuQoL2xCQX" + "PPPSB1WwJBX5996uvggSP7qbaqHTMvKjPP", + "PP8597iKBDrxP4e3ynZHkBByn65GDgZysa", + "PBw5ju12eT3jGw8eL7vh9JhR4eagRCFwqz" ] } } diff --git a/test/util/data/txcreatemultisig3.json b/test/util/data/txcreatemultisig3.json index b355d7b..ab2cb7d 100644 --- a/test/util/data/txcreatemultisig3.json +++ b/test/util/data/txcreatemultisig3.json @@ -18,7 +18,7 @@ "reqSigs": 1, "type": "witness_v0_scripthash", "addresses": [ - "bc1qu9dgdg330r6r84g5mw7wqshg04exv2uttmw2elfwx74h5tgntuzs44gyfg" + "plm1qu9dgdg330r6r84g5mw7wqshg04exv2uttmw2elfwx74h5tgntuzsjucj3w" ] } } diff --git a/test/util/data/txcreateoutpubkey2.json b/test/util/data/txcreateoutpubkey2.json index c0ee181..51d8ca5 100644 --- a/test/util/data/txcreateoutpubkey2.json +++ b/test/util/data/txcreateoutpubkey2.json @@ -18,7 +18,7 @@ "reqSigs": 1, "type": "witness_v0_keyhash", "addresses": [ - "bc1q5fgkuac9s2ry56jka5s6zqsyfcugcchry5cwu0" + "plm1q5fgkuac9s2ry56jka5s6zqsyfcugcchrwg20kv" ] } } diff --git a/test/util/data/txcreatescript3.json b/test/util/data/txcreatescript3.json index b9192d9..61ff13d 100644 --- a/test/util/data/txcreatescript3.json +++ b/test/util/data/txcreatescript3.json @@ -18,7 +18,7 @@ "reqSigs": 1, "type": "witness_v0_scripthash", "addresses": [ - "bc1qp0lfxhnscvsu0j36l36uurgv5tuck4pzuqytkvwqp3kh78cupttqyf705v" + "plm1qp0lfxhnscvsu0j36l36uurgv5tuck4pzuqytkvwqp3kh78cupttqrqwev2" ] } } diff --git a/test/util/data/txcreatesignv1.json b/test/util/data/txcreatesignv1.json index 7a06aa9..edae8de 100644 --- a/test/util/data/txcreatesignv1.json +++ b/test/util/data/txcreatesignv1.json @@ -27,7 +27,7 @@ "reqSigs": 1, "type": "pubkeyhash", "addresses": [ - "193P6LtvS4nCnkDvM9uXn1gsSRqh4aDAz7" + "PGdZFKHmUzGPmatghEE4Suf94B1a9ey8gS" ] } } diff --git a/test/util/test_runner.py b/test/util/test_runner.py new file mode 100644 index 0000000..2e7833d --- /dev/null +++ b/test/util/test_runner.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +# Copyright (c) 2026 The Palladium Core developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. +"""Run util test scripts.""" + +import os +import subprocess +import sys + + +def run(cmd): + print("Running:", " ".join(cmd), flush=True) + return subprocess.call(cmd) + + +def main(): + base = os.path.dirname(__file__) + tests = [ + [sys.executable, os.path.join(base, "palladium-util-test.py")], + [sys.executable, os.path.join(base, "rpcauth-test.py")], + ] + + exit_code = 0 + for cmd in tests: + rc = run(cmd) + if rc != 0: + exit_code = rc + + sys.exit(exit_code) + + +if __name__ == "__main__": + main()