Merge pull request #6097
7b7f258
rpc-tests: remove python-bitcoinrpc directory (Jonas Schnelli)a85b2e2
pull-tester/rpc-tests.sh: disable script_test.py test (Jonas Schnelli)3e875b1
pull-tester/rpc-tests.sh: allow passing throug of arguments (Jonas Schnelli)00706a5
update rpc-tests readme.md (Jonas Schnelli)344e08e
extend rpc-tests.sh control script with non-travis tests (Jonas Schnelli)64937fe
[QA] restructure rpc tests directory (Jonas Schnelli)
This commit is contained in:
commit
c608b6daf9
45 changed files with 125 additions and 124 deletions
|
@ -31,18 +31,45 @@ testScripts=(
|
|||
'proxy_test.py'
|
||||
'merkle_blocks.py'
|
||||
'signrawtransactions.py'
|
||||
);
|
||||
testScriptsExt=(
|
||||
'bipdersig-p2p.py'
|
||||
'bipdersig.py'
|
||||
'getblocktemplate_longpoll.py'
|
||||
'getblocktemplate_proposals.py'
|
||||
'pruning.py'
|
||||
'forknotify.py'
|
||||
'invalidateblock.py'
|
||||
'keypool.py'
|
||||
'receivedby.py'
|
||||
'reindex.py'
|
||||
'rpcbind_test.py'
|
||||
# 'script_test.py'
|
||||
'smartfees.py'
|
||||
'maxblocksinflight.py'
|
||||
'invalidblockrequest.py'
|
||||
'rawtransactions.py'
|
||||
# 'forknotify.py'
|
||||
);
|
||||
|
||||
extArg="-extended"
|
||||
passOn=${@#$extArg}
|
||||
|
||||
if [ "x${ENABLE_BITCOIND}${ENABLE_UTILS}${ENABLE_WALLET}" = "x111" ]; then
|
||||
for (( i = 0; i < ${#testScripts[@]}; i++ ))
|
||||
do
|
||||
if [ -z "$1" ] || [ "$1" == "${testScripts[$i]}" ] || [ "$1.py" == "${testScripts[$i]}" ]
|
||||
if [ -z "$1" ] || [ "${1:0:1}" == "-" ] || [ "$1" == "${testScripts[$i]}" ] || [ "$1.py" == "${testScripts[$i]}" ]
|
||||
then
|
||||
echo -e "Running testscript \033[1m${testScripts[$i]}...\033[0m"
|
||||
${BUILDDIR}/qa/rpc-tests/${testScripts[$i]} --srcdir "${BUILDDIR}/src"
|
||||
${BUILDDIR}/qa/rpc-tests/${testScripts[$i]} --srcdir "${BUILDDIR}/src" ${passOn}
|
||||
fi
|
||||
done
|
||||
for (( i = 0; i < ${#testScriptsExt[@]}; i++ ))
|
||||
do
|
||||
if [ "$1" == $extArg ] || [ "$1" == "${testScriptsExt[$i]}" ] || [ "$1.py" == "${testScriptsExt[$i]}" ]
|
||||
then
|
||||
echo -e "Running \033[1m2nd level\033[0m testscript \033[1m${testScriptsExt[$i]}...\033[0m"
|
||||
${BUILDDIR}/qa/rpc-tests/${testScriptsExt[$i]} --srcdir "${BUILDDIR}/src" ${passOn}
|
||||
fi
|
||||
done
|
||||
else
|
||||
|
|
|
@ -6,25 +6,37 @@ Git subtree of [https://github.com/jgarzik/python-bitcoinrpc](https://github.com
|
|||
Changes to python-bitcoinrpc should be made upstream, and then
|
||||
pulled here using git subtree.
|
||||
|
||||
### [test_framework.py](test_framework.py)
|
||||
### [test_framework/test_framework.py](test_framework/test_framework.py)
|
||||
Base class for new regression tests.
|
||||
|
||||
### [listtransactions.py](listtransactions.py)
|
||||
Tests for the listtransactions RPC call.
|
||||
|
||||
### [util.py](util.py)
|
||||
### [test_framework/util.py](test_framework/util.py)
|
||||
Generally useful functions.
|
||||
|
||||
Bash-based tests, to be ported to Python:
|
||||
-----------------------------------------
|
||||
- wallet.sh : Exercise wallet send/receive code.
|
||||
- walletbackup.sh : Exercise wallet backup / dump / import
|
||||
- txnmall.sh : Test proper accounting of malleable transactions
|
||||
- conflictedbalance.sh : More testing of malleable transaction handling
|
||||
|
||||
Notes
|
||||
=====
|
||||
|
||||
You can run a single test by calling `qa/pull-tester/rpc-tests.sh <testname>`.
|
||||
|
||||
Run all possible tests with `qa/pull-tester/rpc-tests.sh -extended`.
|
||||
|
||||
Possible options:
|
||||
|
||||
````
|
||||
-h, --help show this help message and exit
|
||||
--nocleanup Leave bitcoinds and test.* datadir on exit or error
|
||||
--noshutdown Don't stop bitcoinds after the test execution
|
||||
--srcdir=SRCDIR Source directory containing bitcoind/bitcoin-cli (default:
|
||||
../../src)
|
||||
--tmpdir=TMPDIR Root directory for datadirs
|
||||
--tracerpc Print out all RPC calls as they are made
|
||||
```
|
||||
|
||||
If you set the environment variable `PYTHON_DEBUG=1` you will get some debug output (example: `PYTHON_DEBUG=1 qa/pull-tester/rpc-tests.sh wallet`).
|
||||
|
||||
A 200-block -regtest blockchain and wallets for four nodes
|
||||
is created the first time a regression test is run and
|
||||
is stored in the cache/ directory. Each node has 25 mature
|
||||
|
|
|
@ -4,14 +4,14 @@
|
|||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
#
|
||||
|
||||
from test_framework import ComparisonTestFramework
|
||||
from util import *
|
||||
from mininode import CTransaction, NetworkThread
|
||||
from blocktools import create_coinbase, create_block
|
||||
from test_framework.test_framework import ComparisonTestFramework
|
||||
from test_framework.util import *
|
||||
from test_framework.mininode import CTransaction, NetworkThread
|
||||
from test_framework.blocktools import create_coinbase, create_block
|
||||
from test_framework.comptool import TestInstance, TestManager
|
||||
from test_framework.script import CScript
|
||||
from binascii import hexlify, unhexlify
|
||||
import cStringIO
|
||||
from comptool import TestInstance, TestManager
|
||||
from script import CScript
|
||||
import time
|
||||
|
||||
# A canonical signature consists of:
|
||||
|
|
|
@ -7,9 +7,8 @@
|
|||
# Test the BIP66 changeover logic
|
||||
#
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
import os
|
||||
import shutil
|
||||
|
||||
|
|
|
@ -7,9 +7,8 @@
|
|||
# Test -alertnotify
|
||||
#
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
import os
|
||||
import shutil
|
||||
|
||||
|
|
|
@ -3,9 +3,8 @@
|
|||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
|
||||
|
||||
def check_array_result(object_array, to_match, expected):
|
||||
|
|
|
@ -3,9 +3,8 @@
|
|||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
|
||||
from binascii import a2b_hex, b2a_hex
|
||||
from hashlib import sha256
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
# on chains of different lengths, and join the network together again.
|
||||
# This gives us two tips, verify that it works.
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from util import assert_equal
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import assert_equal
|
||||
|
||||
class GetChainTipsTest (BitcoinTestFramework):
|
||||
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
# Test REST interface
|
||||
#
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
import base64
|
||||
|
||||
try:
|
||||
|
|
|
@ -7,9 +7,8 @@
|
|||
# Test InvalidateBlock code
|
||||
#
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
|
||||
class InvalidateTest(BitcoinTestFramework):
|
||||
|
||||
|
|
|
@ -4,11 +4,11 @@
|
|||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
#
|
||||
|
||||
from test_framework import ComparisonTestFramework
|
||||
from util import *
|
||||
from comptool import TestManager, TestInstance
|
||||
from mininode import *
|
||||
from blocktools import *
|
||||
from test_framework.test_framework import ComparisonTestFramework
|
||||
from test_framework.util import *
|
||||
from test_framework.comptool import TestManager, TestInstance
|
||||
from test_framework.mininode import *
|
||||
from test_framework.blocktools import *
|
||||
import logging
|
||||
import copy
|
||||
import time
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
# Add python-bitcoinrpc to module search path:
|
||||
import os
|
||||
import sys
|
||||
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "python-bitcoinrpc"))
|
||||
|
||||
import json
|
||||
import shutil
|
||||
|
@ -16,8 +15,7 @@ import subprocess
|
|||
import tempfile
|
||||
import traceback
|
||||
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
from test_framework.util import *
|
||||
|
||||
|
||||
def check_array_result(object_array, to_match, expected):
|
||||
|
|
|
@ -5,9 +5,8 @@
|
|||
|
||||
# Exercise the listtransactions API
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
|
||||
|
||||
def check_array_result(object_array, to_match, expected):
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
#
|
||||
|
||||
from mininode import *
|
||||
from test_framework import BitcoinTestFramework
|
||||
from util import *
|
||||
from test_framework.mininode import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
import logging
|
||||
|
||||
'''
|
||||
|
|
|
@ -8,9 +8,8 @@
|
|||
# that spend (directly or indirectly) coinbase transactions.
|
||||
#
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
import os
|
||||
import shutil
|
||||
|
||||
|
|
|
@ -8,9 +8,8 @@
|
|||
# the blockchain is re-organized.
|
||||
#
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
import os
|
||||
import shutil
|
||||
|
||||
|
@ -34,7 +33,6 @@ class MempoolCoinbaseTest(BitcoinTestFramework):
|
|||
|
||||
def run_test(self):
|
||||
node0_address = self.nodes[0].getnewaddress()
|
||||
|
||||
# Spend block 1/2/3's coinbase transactions
|
||||
# Mine a block.
|
||||
# Create three more transactions, spending the spends
|
||||
|
|
|
@ -13,9 +13,8 @@
|
|||
# but less mature coinbase spends are NOT.
|
||||
#
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
import os
|
||||
import shutil
|
||||
|
||||
|
|
|
@ -7,9 +7,8 @@
|
|||
# Test merkleblock fetch/validation
|
||||
#
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
import os
|
||||
import shutil
|
||||
|
||||
|
|
|
@ -7,9 +7,9 @@ import traceback, sys
|
|||
from binascii import hexlify
|
||||
import time, os
|
||||
|
||||
from socks5 import Socks5Configuration, Socks5Command, Socks5Server, AddressType
|
||||
from test_framework import BitcoinTestFramework
|
||||
from util import *
|
||||
from test_framework.socks5 import Socks5Configuration, Socks5Command, Socks5Server, AddressType
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
'''
|
||||
Test plan:
|
||||
- Start bitcoind's with different proxy configurations
|
||||
|
|
|
@ -11,9 +11,8 @@
|
|||
# This test takes 30 mins or more (up to 2 hours)
|
||||
# ********
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
import os.path
|
||||
|
||||
def calc_usage(blockdir):
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
*.pyc
|
|
@ -1,15 +0,0 @@
|
|||
#!/usr/bin/env python2
|
||||
|
||||
from distutils.core import setup
|
||||
|
||||
setup(name='python-bitcoinrpc',
|
||||
version='0.1',
|
||||
description='Enhanced version of python-jsonrpc for use with Bitcoin',
|
||||
long_description=open('README').read(),
|
||||
author='Jeff Garzik',
|
||||
author_email='<jgarzik@exmulti.com>',
|
||||
maintainer='Jeff Garzik',
|
||||
maintainer_email='<jgarzik@exmulti.com>',
|
||||
url='http://www.github.com/jgarzik/python-bitcoinrpc',
|
||||
packages=['bitcoinrpc'],
|
||||
classifiers=['License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)', 'Operating System :: OS Independent'])
|
|
@ -8,8 +8,8 @@
|
|||
# that spend (directly or indirectly) coinbase transactions.
|
||||
#
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
from pprint import pprint
|
||||
from time import sleep
|
||||
|
||||
|
|
|
@ -5,9 +5,8 @@
|
|||
|
||||
# Exercise the listreceivedbyaddress API
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
|
||||
|
||||
def get_sub_array_from_array(object_array, to_match):
|
||||
|
|
|
@ -6,9 +6,8 @@
|
|||
#
|
||||
# Test -reindex with CheckBlockIndex
|
||||
#
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
import os.path
|
||||
|
||||
class ReindexTest(BitcoinTestFramework):
|
||||
|
|
|
@ -7,8 +7,9 @@
|
|||
# Test REST interface
|
||||
#
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from util import *
|
||||
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
from struct import *
|
||||
import binascii
|
||||
import json
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
# Add python-bitcoinrpc to module search path:
|
||||
import os
|
||||
import sys
|
||||
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "python-bitcoinrpc"))
|
||||
|
||||
import json
|
||||
import shutil
|
||||
|
@ -16,9 +15,8 @@ import subprocess
|
|||
import tempfile
|
||||
import traceback
|
||||
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
from netutil import *
|
||||
from test_framework.util import *
|
||||
from test_framework.netutil import *
|
||||
|
||||
def run_bind_test(tmpdir, allow_ips, connect_to, addresses, expected):
|
||||
'''
|
||||
|
|
|
@ -19,12 +19,12 @@ that flag, we use a block time before the switchover date).
|
|||
NOTE: This test is very slow and may take more than 40 minutes to run.
|
||||
'''
|
||||
|
||||
from test_framework import ComparisonTestFramework
|
||||
from util import *
|
||||
from comptool import TestInstance, TestManager
|
||||
from mininode import *
|
||||
from blocktools import *
|
||||
from script import *
|
||||
from test_framework.test_framework import ComparisonTestFramework
|
||||
from test_framework.util import *
|
||||
from test_framework.comptool import TestInstance, TestManager
|
||||
from test_framework.mininode import *
|
||||
from test_framework.blocktools import *
|
||||
from test_framework.script import *
|
||||
import logging
|
||||
import copy
|
||||
import json
|
||||
|
@ -42,7 +42,7 @@ class ScriptTestFile(object):
|
|||
|
||||
def load_files(self):
|
||||
for f in self.files:
|
||||
self.data.extend(json.loads(open(f).read()))
|
||||
self.data.extend(json.loads(open(os.path.dirname(os.path.abspath(__file__))+"/"+f).read()))
|
||||
|
||||
# Skip over records that are not long enough to be tests
|
||||
def get_records(self):
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
|
||||
|
||||
class SignRawTransactionsTest(BitcoinTestFramework):
|
||||
|
|
|
@ -7,9 +7,8 @@
|
|||
# Test fee estimation code
|
||||
#
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
|
||||
# Construct 2 trivial P2SH's and the ScriptSigs that spend them
|
||||
# So we can create many many transactions without needing to spend
|
||||
|
|
|
@ -14,7 +14,7 @@ Functionality to build scripts, as well as SignatureHash().
|
|||
|
||||
from __future__ import absolute_import, division, print_function, unicode_literals
|
||||
|
||||
from mininode import CTransaction, CTxOut, hash256
|
||||
from test_framework.mininode import CTransaction, CTxOut, hash256
|
||||
|
||||
import sys
|
||||
bchr = chr
|
||||
|
@ -27,7 +27,7 @@ if sys.version > '3':
|
|||
import copy
|
||||
import struct
|
||||
|
||||
import bignum
|
||||
import test_framework.bignum
|
||||
|
||||
MAX_SCRIPT_SIZE = 10000
|
||||
MAX_SCRIPT_ELEMENT_SIZE = 520
|
|
@ -8,13 +8,12 @@
|
|||
# Add python-bitcoinrpc to module search path:
|
||||
import os
|
||||
import sys
|
||||
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "python-bitcoinrpc"))
|
||||
|
||||
import shutil
|
||||
import tempfile
|
||||
import traceback
|
||||
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
|
||||
|
|
@ -8,7 +8,6 @@
|
|||
# Add python-bitcoinrpc to module search path:
|
||||
import os
|
||||
import sys
|
||||
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "python-bitcoinrpc"))
|
||||
|
||||
from decimal import Decimal, ROUND_DOWN
|
||||
import json
|
||||
|
@ -18,7 +17,7 @@ import subprocess
|
|||
import time
|
||||
import re
|
||||
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from authproxy import AuthServiceProxy, JSONRPCException
|
||||
from util import *
|
||||
|
||||
def p2p_port(n):
|
|
@ -7,10 +7,9 @@
|
|||
# Test proper accounting with malleable transactions
|
||||
#
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from bitcoinrpc.authproxy import AuthServiceProxy, JSONRPCException
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
from decimal import Decimal
|
||||
from util import *
|
||||
import os
|
||||
import shutil
|
||||
|
||||
|
|
|
@ -19,9 +19,8 @@
|
|||
# k) test ResendWalletTransactions - create transactions, startup fourth node, make sure it syncs
|
||||
#
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from util import *
|
||||
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
|
||||
class WalletTest (BitcoinTestFramework):
|
||||
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
# Distributed under the MIT software license, see the accompanying
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
from test_framework import BitcoinTestFramework
|
||||
from util import *
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import *
|
||||
|
||||
|
||||
class ZapWalletTXesTest (BitcoinTestFramework):
|
||||
|
|
Loading…
Reference in a new issue