|
|
|
@ -8,6 +8,8 @@ rpc-tests.py - run regression test suite
@@ -8,6 +8,8 @@ rpc-tests.py - run regression test suite
|
|
|
|
|
This module calls down into individual test cases via subprocess. It will |
|
|
|
|
forward all unrecognized arguments onto the individual test scripts. |
|
|
|
|
|
|
|
|
|
RPC tests are disabled on Windows by default. Use --force to run them anyway. |
|
|
|
|
|
|
|
|
|
For a description of arguments recognized by test scripts, see |
|
|
|
|
`qa/pull-tester/test_framework/test_framework.py:BitcoinTestFramework.main`. |
|
|
|
|
|
|
|
|
@ -24,8 +26,8 @@ import tempfile
@@ -24,8 +26,8 @@ import tempfile
|
|
|
|
|
import re |
|
|
|
|
|
|
|
|
|
BASE_SCRIPTS= [ |
|
|
|
|
# Scripts that are run by the travis build process |
|
|
|
|
# longest test should go first, to favor running tests in parallel |
|
|
|
|
# Scripts that are run by the travis build process. |
|
|
|
|
# Longest test should go first, to favor running tests in parallel |
|
|
|
|
'wallet-hd.py', |
|
|
|
|
'walletbackup.py', |
|
|
|
|
# vv Tests less than 5m vv |
|
|
|
@ -130,11 +132,11 @@ def main():
@@ -130,11 +132,11 @@ def main():
|
|
|
|
|
formatter_class=argparse.RawTextHelpFormatter) |
|
|
|
|
parser.add_argument('--coverage', action='store_true', help='generate a basic coverage report for the RPC interface') |
|
|
|
|
parser.add_argument('--extended', action='store_true', help='run the extended test suite in addition to the basic tests') |
|
|
|
|
parser.add_argument('--force', '-f', action='store_true', help='run tests even on platforms where they are disabled by default (e.g. windows).') |
|
|
|
|
parser.add_argument('--help', '-h', '-?', action='store_true', help='print help text and exit') |
|
|
|
|
parser.add_argument('--nozmq', action='store_true', help='do not run the zmq tests') |
|
|
|
|
parser.add_argument('--jobs', '-j', type=int, default=4, help='how many test scripts to run in parallel. Default=4.') |
|
|
|
|
parser.add_argument('--win', action='store_true', help='signal that this is running in a Windows environment and that we should run the tests') |
|
|
|
|
(args, unknown_args) = parser.parse_known_args() |
|
|
|
|
parser.add_argument('--nozmq', action='store_true', help='do not run the zmq tests') |
|
|
|
|
args, unknown_args = parser.parse_known_args() |
|
|
|
|
|
|
|
|
|
# Create a set to store arguments and create the passon string |
|
|
|
|
tests = set(arg for arg in unknown_args if arg[:2] != "--") |
|
|
|
@ -144,15 +146,15 @@ def main():
@@ -144,15 +146,15 @@ def main():
|
|
|
|
|
config = configparser.ConfigParser() |
|
|
|
|
config.read_file(open(os.path.dirname(__file__) + "/tests_config.ini")) |
|
|
|
|
|
|
|
|
|
enable_wallet = config["components"]["ENABLE_WALLET"] == "True" |
|
|
|
|
enable_utils = config["components"]["ENABLE_UTILS"] == "True" |
|
|
|
|
enable_bitcoind = config["components"]["ENABLE_BITCOIND"] == "True" |
|
|
|
|
enable_zmq = config["components"]["ENABLE_ZMQ"] == "True" and not args.nozmq |
|
|
|
|
enable_wallet = config["components"].getboolean("ENABLE_WALLET") |
|
|
|
|
enable_utils = config["components"].getboolean("ENABLE_UTILS") |
|
|
|
|
enable_bitcoind = config["components"].getboolean("ENABLE_BITCOIND") |
|
|
|
|
enable_zmq = config["components"].getboolean("ENABLE_ZMQ") and not args.nozmq |
|
|
|
|
|
|
|
|
|
if config["environment"]["EXEEXT"] == ".exe" and not args.win: |
|
|
|
|
if config["environment"]["EXEEXT"] == ".exe" and not args.force: |
|
|
|
|
# https://github.com/bitcoin/bitcoin/commit/d52802551752140cf41f0d9a225a43e84404d3e9 |
|
|
|
|
# https://github.com/bitcoin/bitcoin/pull/5677#issuecomment-136646964 |
|
|
|
|
print("Win tests currently disabled by default. Use --win option to enable") |
|
|
|
|
print("Tests currently disabled on Windows by default. Use --force option to enable") |
|
|
|
|
sys.exit(0) |
|
|
|
|
|
|
|
|
|
if not (enable_wallet and enable_utils and enable_bitcoind): |
|
|
|
@ -170,12 +172,12 @@ def main():
@@ -170,12 +172,12 @@ def main():
|
|
|
|
|
raise |
|
|
|
|
|
|
|
|
|
# Build list of tests |
|
|
|
|
if len(tests) != 0: |
|
|
|
|
if tests: |
|
|
|
|
# Individual tests have been specified. Run specified tests that exist |
|
|
|
|
# in the ALL_SCRIPTS list. Accept the name with or without .py extension. |
|
|
|
|
test_list = [t for t in ALL_SCRIPTS if |
|
|
|
|
(t in tests or re.sub(".py$", "", t) in tests)] |
|
|
|
|
if len(test_list) == 0: |
|
|
|
|
if not test_list: |
|
|
|
|
print("No valid test scripts specified. Check that your test is in one " |
|
|
|
|
"of the test lists in rpc-tests.py or run rpc-tests.py with no arguments to run all tests") |
|
|
|
|
print("Scripts not found:") |
|
|
|
@ -200,9 +202,9 @@ def main():
@@ -200,9 +202,9 @@ def main():
|
|
|
|
|
subprocess.check_call((config["environment"]["SRCDIR"] + '/qa/rpc-tests/' + test_list[0]).split() + ['-h']) |
|
|
|
|
sys.exit(0) |
|
|
|
|
|
|
|
|
|
runtests(test_list, config["environment"]["SRCDIR"], config["environment"]["BUILDDIR"], config["environment"]["EXEEXT"], args.jobs, args.coverage, passon_args) |
|
|
|
|
run_tests(test_list, config["environment"]["SRCDIR"], config["environment"]["BUILDDIR"], config["environment"]["EXEEXT"], args.jobs, args.coverage, passon_args) |
|
|
|
|
|
|
|
|
|
def runtests(test_list, src_dir, build_dir, exeext, jobs=1, enable_coverage=False, args=[]): |
|
|
|
|
def run_tests(test_list, src_dir, build_dir, exeext, jobs=1, enable_coverage=False, args=[]): |
|
|
|
|
BOLD = ("","") |
|
|
|
|
if os.name == 'posix': |
|
|
|
|
# primitive formatting on supported |
|
|
|
|