-
Notifications
You must be signed in to change notification settings - Fork 37.7k
Regression Tests: Migrated rpc-tests.sh to all Python rpc-tests.py #6616
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
#!/usr/bin/env python2 | ||
|
||
# Copyright (c) 2014 The Bitcoin Core developers | ||
# Distributed under the MIT software license, see the accompanying | ||
# file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||
|
||
# | ||
# Run Regression Test Suite | ||
# | ||
|
||
import os | ||
import sys | ||
import subprocess | ||
import re | ||
from tests_config import * | ||
from sets import Set | ||
|
||
#If imported values are not defined then set to zero (or disabled) | ||
if not vars().has_key('ENABLE_WALLET'): | ||
ENABLE_WALLET=0 | ||
if not vars().has_key('ENABLE_BITCOIND'): | ||
ENABLE_BITCOIND=0 | ||
if not vars().has_key('ENABLE_UTILS'): | ||
ENABLE_UTILS=0 | ||
if not vars().has_key('ENABLE_ZMQ'): | ||
ENABLE_ZMQ=0 | ||
|
||
#Create a set to store arguments and create the passOn string | ||
opts = Set() | ||
passOn = "" | ||
p = re.compile("^--") | ||
for i in range(1,len(sys.argv)): | ||
if (p.match(sys.argv[i]) or sys.argv[i] == "-h"): | ||
passOn += " " + sys.argv[i] | ||
else: | ||
opts.add(sys.argv[i]) | ||
|
||
#Set env vars | ||
buildDir = BUILDDIR | ||
os.environ["BITCOIND"] = buildDir + '/src/bitcoind' + EXEEXT | ||
os.environ["BITCOINCLI"] = buildDir + '/src/bitcoin-cli' + EXEEXT | ||
|
||
#Disable Windows tests by default | ||
if EXEEXT == ".exe" and "-win" not in opts: | ||
print "Win tests currently disabled. Use -win option to enable" | ||
sys.exit(0) | ||
|
||
#Tests | ||
testScripts = [ | ||
'wallet.py', | ||
'listtransactions.py', | ||
'mempool_resurrect_test.py', | ||
'txn_doublespend.py --mineblock', | ||
'txn_clone.py', | ||
'getchaintips.py', | ||
'rawtransactions.py', | ||
'rest.py', | ||
'mempool_spendcoinbase.py', | ||
'mempool_coinbase_spends.py', | ||
'httpbasics.py', | ||
'zapwallettxes.py', | ||
'proxy_test.py', | ||
'merkle_blocks.py', | ||
'fundrawtransaction.py', | ||
'signrawtransactions.py', | ||
'walletbackup.py', | ||
'nodehandling.py', | ||
'reindex.py', | ||
'decodescript.py', | ||
'p2p-fullblocktest.py', | ||
] | ||
testScriptsExt = [ | ||
'bipdersig-p2p.py', | ||
'bipdersig.py', | ||
'getblocktemplate_longpoll.py', | ||
'getblocktemplate_proposals.py', | ||
'txn_doublespend.py', | ||
'txn_clone.py --mineblock', | ||
'pruning.py', | ||
'forknotify.py', | ||
'invalidateblock.py', | ||
'keypool.py', | ||
'receivedby.py', | ||
'rpcbind_test.py', | ||
# 'script_test.py', | ||
'smartfees.py', | ||
'maxblocksinflight.py', | ||
'invalidblockrequest.py', | ||
# 'forknotify.py', | ||
'p2p-acceptblock.py', | ||
'mempool_packages.py', | ||
] | ||
|
||
#Enable ZMQ tests | ||
if ENABLE_ZMQ == 1: | ||
testScripts.append('zmq_test.py') | ||
|
||
if(ENABLE_WALLET == 1 and ENABLE_UTILS == 1 and ENABLE_BITCOIND == 1): | ||
rpcTestDir = buildDir + '/qa/rpc-tests/' | ||
#Run Tests | ||
for i in range(len(testScripts)): | ||
if (len(opts) == 0 or (len(opts) == 1 and "-win" in opts ) or '-extended' in opts | ||
or testScripts[i] in opts or re.sub(".py$", "", testScripts[i]) in opts ): | ||
print "Running testscript " + testScripts[i] + "..." | ||
subprocess.call(rpcTestDir + testScripts[i] + " --srcdir " + buildDir + '/src ' + passOn,shell=True) | ||
#exit if help is called so we print just one set of instructions | ||
p = re.compile(" -h| --help") | ||
if p.match(passOn): | ||
sys.exit(0) | ||
|
||
#Run Extended Tests | ||
for i in range(len(testScriptsExt)): | ||
if ('-extended' in opts or testScriptsExt[i] in opts | ||
or re.sub(".py$", "", testScriptsExt[i]) in opts): | ||
print "Running 2nd level testscript " + testScriptsExt[i] + "..." | ||
subprocess.call(rpcTestDir + testScriptsExt[i] + " --srcdir " + buildDir + '/src ' + passOn,shell=True) | ||
else: | ||
print "No rpc tests to run. Wallet, utils, and bitcoind must all be enabled" |
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -37,9 +37,13 @@ Helper functions for creating blocks and transactions. | |
Notes | ||
===== | ||
|
||
You can run a single test by calling `qa/pull-tester/rpc-tests.sh <testname>`. | ||
You can run any single test by calling qa/pull-tester/rpc-tests.py <testname> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Make sure to get the backticks ` right. (L44 as well) Also, https://github.com/ptschip/bitcoin/blob/all_python/README.md#automated-testing needs update? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. thanks, done both On 03/09/2015 11:08 AM, MarcoFalke wrote:
|
||
|
||
Run all possible tests with `qa/pull-tester/rpc-tests.sh -extended`. | ||
Or you can run any combination of tests by calling `qa/pull-tester/rpc-tests.py <testname1> <testname2> <testname3> ...` | ||
|
||
Run the regression test suite with `qa/pull-tester/rpc-tests.py' | ||
|
||
Run all possible tests with `qa/pull-tester/rpc-tests.py -extended` | ||
|
||
Possible options: | ||
|
||
|
@@ -53,7 +57,7 @@ Possible options: | |
--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`). | ||
If you set the environment variable `PYTHON_DEBUG=1` you will get some debug output (example: `PYTHON_DEBUG=1 qa/pull-tester/rpc-tests.py wallet`). | ||
|
||
A 200-block -regtest blockchain and wallets for four nodes | ||
is created the first time a regression test is run and | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: I think having the testscript name in bold was nice:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've tried, tried double and triple and quadruple escaping that python
usually needs, and also tried the termcolor module. It doesn't work
from python and in a "mingw" shell. It will probably work on a native
unix shell but I can't test that out as I'm on Windows. Any suggestions
welcome...
On 01/10/2015 11:09 AM, Wladimir J. van der Laan wrote:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, no problem, then leave it like this. Escape-code based formatting probably doesn't work on windows at all.
If we want this it needs to be conditional on the terminal type, which is too much bother...