diff options
author | MarcoFalke <falke.marco@gmail.com> | 2017-03-21 00:10:53 +0100 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2017-03-21 00:11:14 +0100 |
commit | 3192e5278abca7c1f3b4a2a7f77a0ce941c73985 (patch) | |
tree | 826cfa504915d204ce8f6a414d50ed0ffbf7003f | |
parent | 0c17afcbe73ec546bc63aea34639fa0f4ea45c37 (diff) | |
parent | 63d66ba20a634b54f6d5e8b051fb4a106f2cef6c (diff) |
Merge #9956: Reorganise qa directory
63d66ba Move src/test/bitcoin-util-test.py to test/util/bitcoin-util-test.py (John Newbery)
5b0bff4 Rename --enable-extended-rpc-tests to --enable-extended-functional-tests (John Newbery)
a9bd622 Rename test/pull-tester/rpc-tests.py to test/functional/test_runner.py (John Newbery)
c28ee91 Rename rpc-tests directory to functional (John Newbery)
00902c4 Rename qa directory to test (John Newbery)
Tree-SHA512: ee7125c0c647d81590177beef2c8852c4ef76fdcf888096d9d4d360562a01d8d3b453345c3040487b2a043935bd1e7e80018f34462d6e02262bedbe23edcc576
-rw-r--r-- | .gitignore | 6 | ||||
-rw-r--r-- | .travis.yml | 2 | ||||
-rw-r--r-- | Makefile.am | 76 | ||||
-rw-r--r-- | README.md | 4 | ||||
-rw-r--r-- | configure.ac | 24 | ||||
-rwxr-xr-x | contrib/devtools/copyright_header.py | 2 | ||||
-rw-r--r-- | contrib/rpm/bitcoin.spec | 6 | ||||
-rw-r--r-- | doc/developer-notes.md | 4 | ||||
-rw-r--r-- | qa/README.md | 87 | ||||
-rw-r--r-- | src/Makefile.test.include | 61 | ||||
-rw-r--r-- | src/test/README.md | 9 | ||||
-rwxr-xr-x | src/test/bitcoin-util-test.py | 45 | ||||
-rw-r--r-- | src/test/buildenv.py.in | 2 | ||||
-rw-r--r-- | test/README.md | 97 | ||||
-rw-r--r-- | test/functional/.gitignore (renamed from qa/rpc-tests/.gitignore) | 0 | ||||
-rw-r--r-- | test/functional/README.md (renamed from qa/rpc-tests/README.md) | 0 | ||||
-rwxr-xr-x | test/functional/abandonconflict.py (renamed from qa/rpc-tests/abandonconflict.py) | 0 | ||||
-rwxr-xr-x | test/functional/assumevalid.py (renamed from qa/rpc-tests/assumevalid.py) | 0 | ||||
-rwxr-xr-x | test/functional/bip65-cltv-p2p.py (renamed from qa/rpc-tests/bip65-cltv-p2p.py) | 0 | ||||
-rwxr-xr-x | test/functional/bip65-cltv.py (renamed from qa/rpc-tests/bip65-cltv.py) | 0 | ||||
-rwxr-xr-x | test/functional/bip68-112-113-p2p.py (renamed from qa/rpc-tests/bip68-112-113-p2p.py) | 0 | ||||
-rwxr-xr-x | test/functional/bip68-sequence.py (renamed from qa/rpc-tests/bip68-sequence.py) | 0 | ||||
-rwxr-xr-x | test/functional/bip9-softforks.py (renamed from qa/rpc-tests/bip9-softforks.py) | 0 | ||||
-rwxr-xr-x | test/functional/bipdersig-p2p.py (renamed from qa/rpc-tests/bipdersig-p2p.py) | 0 | ||||
-rwxr-xr-x | test/functional/bipdersig.py (renamed from qa/rpc-tests/bipdersig.py) | 0 | ||||
-rwxr-xr-x | test/functional/blockchain.py (renamed from qa/rpc-tests/blockchain.py) | 0 | ||||
-rwxr-xr-x | test/functional/bumpfee.py (renamed from qa/rpc-tests/bumpfee.py) | 0 | ||||
-rw-r--r-- | test/functional/config.ini.in (renamed from qa/pull-tester/tests_config.ini.in) | 2 | ||||
-rwxr-xr-x | test/functional/create_cache.py (renamed from qa/rpc-tests/create_cache.py) | 2 | ||||
-rwxr-xr-x | test/functional/decodescript.py (renamed from qa/rpc-tests/decodescript.py) | 0 | ||||
-rwxr-xr-x | test/functional/disablewallet.py (renamed from qa/rpc-tests/disablewallet.py) | 0 | ||||
-rwxr-xr-x | test/functional/forknotify.py (renamed from qa/rpc-tests/forknotify.py) | 0 | ||||
-rwxr-xr-x | test/functional/fundrawtransaction.py (renamed from qa/rpc-tests/fundrawtransaction.py) | 0 | ||||
-rwxr-xr-x | test/functional/getblocktemplate_longpoll.py (renamed from qa/rpc-tests/getblocktemplate_longpoll.py) | 0 | ||||
-rwxr-xr-x | test/functional/getblocktemplate_proposals.py (renamed from qa/rpc-tests/getblocktemplate_proposals.py) | 0 | ||||
-rwxr-xr-x | test/functional/getchaintips.py (renamed from qa/rpc-tests/getchaintips.py) | 0 | ||||
-rwxr-xr-x | test/functional/httpbasics.py (renamed from qa/rpc-tests/httpbasics.py) | 0 | ||||
-rwxr-xr-x | test/functional/import-rescan.py (renamed from qa/rpc-tests/import-rescan.py) | 0 | ||||
-rwxr-xr-x | test/functional/importmulti.py (renamed from qa/rpc-tests/importmulti.py) | 0 | ||||
-rwxr-xr-x | test/functional/importprunedfunds.py (renamed from qa/rpc-tests/importprunedfunds.py) | 0 | ||||
-rwxr-xr-x | test/functional/invalidateblock.py (renamed from qa/rpc-tests/invalidateblock.py) | 0 | ||||
-rwxr-xr-x | test/functional/invalidblockrequest.py (renamed from qa/rpc-tests/invalidblockrequest.py) | 0 | ||||
-rwxr-xr-x | test/functional/invalidtxrequest.py (renamed from qa/rpc-tests/invalidtxrequest.py) | 0 | ||||
-rwxr-xr-x | test/functional/keypool.py (renamed from qa/rpc-tests/keypool.py) | 0 | ||||
-rwxr-xr-x | test/functional/listsinceblock.py (renamed from qa/rpc-tests/listsinceblock.py) | 0 | ||||
-rwxr-xr-x | test/functional/listtransactions.py (renamed from qa/rpc-tests/listtransactions.py) | 0 | ||||
-rwxr-xr-x | test/functional/maxblocksinflight.py (renamed from qa/rpc-tests/maxblocksinflight.py) | 0 | ||||
-rwxr-xr-x | test/functional/maxuploadtarget.py (renamed from qa/rpc-tests/maxuploadtarget.py) | 0 | ||||
-rwxr-xr-x | test/functional/mempool_limit.py (renamed from qa/rpc-tests/mempool_limit.py) | 0 | ||||
-rwxr-xr-x | test/functional/mempool_packages.py (renamed from qa/rpc-tests/mempool_packages.py) | 0 | ||||
-rwxr-xr-x | test/functional/mempool_reorg.py (renamed from qa/rpc-tests/mempool_reorg.py) | 0 | ||||
-rwxr-xr-x | test/functional/mempool_resurrect_test.py (renamed from qa/rpc-tests/mempool_resurrect_test.py) | 0 | ||||
-rwxr-xr-x | test/functional/mempool_spendcoinbase.py (renamed from qa/rpc-tests/mempool_spendcoinbase.py) | 0 | ||||
-rwxr-xr-x | test/functional/merkle_blocks.py (renamed from qa/rpc-tests/merkle_blocks.py) | 0 | ||||
-rwxr-xr-x | test/functional/multi_rpc.py (renamed from qa/rpc-tests/multi_rpc.py) | 0 | ||||
-rwxr-xr-x | test/functional/nodehandling.py (renamed from qa/rpc-tests/nodehandling.py) | 0 | ||||
-rwxr-xr-x | test/functional/nulldummy.py (renamed from qa/rpc-tests/nulldummy.py) | 0 | ||||
-rwxr-xr-x | test/functional/p2p-acceptblock.py (renamed from qa/rpc-tests/p2p-acceptblock.py) | 0 | ||||
-rwxr-xr-x | test/functional/p2p-compactblocks.py (renamed from qa/rpc-tests/p2p-compactblocks.py) | 0 | ||||
-rwxr-xr-x | test/functional/p2p-feefilter.py (renamed from qa/rpc-tests/p2p-feefilter.py) | 0 | ||||
-rwxr-xr-x | test/functional/p2p-fullblocktest.py (renamed from qa/rpc-tests/p2p-fullblocktest.py) | 0 | ||||
-rwxr-xr-x | test/functional/p2p-leaktests.py (renamed from qa/rpc-tests/p2p-leaktests.py) | 0 | ||||
-rwxr-xr-x | test/functional/p2p-mempool.py (renamed from qa/rpc-tests/p2p-mempool.py) | 0 | ||||
-rwxr-xr-x | test/functional/p2p-segwit.py (renamed from qa/rpc-tests/p2p-segwit.py) | 0 | ||||
-rwxr-xr-x | test/functional/p2p-timeouts.py (renamed from qa/rpc-tests/p2p-timeouts.py) | 0 | ||||
-rwxr-xr-x | test/functional/p2p-versionbits-warning.py (renamed from qa/rpc-tests/p2p-versionbits-warning.py) | 0 | ||||
-rwxr-xr-x | test/functional/preciousblock.py (renamed from qa/rpc-tests/preciousblock.py) | 0 | ||||
-rwxr-xr-x | test/functional/prioritise_transaction.py (renamed from qa/rpc-tests/prioritise_transaction.py) | 0 | ||||
-rwxr-xr-x | test/functional/proxy_test.py (renamed from qa/rpc-tests/proxy_test.py) | 0 | ||||
-rwxr-xr-x | test/functional/pruning.py (renamed from qa/rpc-tests/pruning.py) | 0 | ||||
-rwxr-xr-x | test/functional/rawtransactions.py (renamed from qa/rpc-tests/rawtransactions.py) | 0 | ||||
-rwxr-xr-x | test/functional/receivedby.py (renamed from qa/rpc-tests/receivedby.py) | 0 | ||||
-rwxr-xr-x | test/functional/reindex.py (renamed from qa/rpc-tests/reindex.py) | 0 | ||||
-rwxr-xr-x | test/functional/replace-by-fee.py (renamed from qa/rpc-tests/replace-by-fee.py) | 0 | ||||
-rwxr-xr-x | test/functional/rest.py (renamed from qa/rpc-tests/rest.py) | 0 | ||||
-rwxr-xr-x | test/functional/rpcbind_test.py (renamed from qa/rpc-tests/rpcbind_test.py) | 0 | ||||
-rwxr-xr-x | test/functional/rpcnamedargs.py (renamed from qa/rpc-tests/rpcnamedargs.py) | 0 | ||||
-rwxr-xr-x | test/functional/segwit.py (renamed from qa/rpc-tests/segwit.py) | 0 | ||||
-rwxr-xr-x | test/functional/sendheaders.py (renamed from qa/rpc-tests/sendheaders.py) | 0 | ||||
-rwxr-xr-x | test/functional/signmessages.py (renamed from qa/rpc-tests/signmessages.py) | 0 | ||||
-rwxr-xr-x | test/functional/signrawtransactions.py (renamed from qa/rpc-tests/signrawtransactions.py) | 0 | ||||
-rwxr-xr-x | test/functional/smartfees.py (renamed from qa/rpc-tests/smartfees.py) | 0 | ||||
-rw-r--r-- | test/functional/test_framework/__init__.py (renamed from qa/rpc-tests/test_framework/__init__.py) | 0 | ||||
-rw-r--r-- | test/functional/test_framework/address.py (renamed from qa/rpc-tests/test_framework/address.py) | 0 | ||||
-rw-r--r-- | test/functional/test_framework/authproxy.py (renamed from qa/rpc-tests/test_framework/authproxy.py) | 0 | ||||
-rw-r--r-- | test/functional/test_framework/bignum.py (renamed from qa/rpc-tests/test_framework/bignum.py) | 0 | ||||
-rw-r--r-- | test/functional/test_framework/blockstore.py (renamed from qa/rpc-tests/test_framework/blockstore.py) | 0 | ||||
-rw-r--r-- | test/functional/test_framework/blocktools.py (renamed from qa/rpc-tests/test_framework/blocktools.py) | 0 | ||||
-rwxr-xr-x | test/functional/test_framework/comptool.py (renamed from qa/rpc-tests/test_framework/comptool.py) | 0 | ||||
-rw-r--r-- | test/functional/test_framework/coverage.py (renamed from qa/rpc-tests/test_framework/coverage.py) | 0 | ||||
-rw-r--r-- | test/functional/test_framework/key.py (renamed from qa/rpc-tests/test_framework/key.py) | 0 | ||||
-rwxr-xr-x | test/functional/test_framework/mininode.py (renamed from qa/rpc-tests/test_framework/mininode.py) | 0 | ||||
-rw-r--r-- | test/functional/test_framework/netutil.py (renamed from qa/rpc-tests/test_framework/netutil.py) | 0 | ||||
-rw-r--r-- | test/functional/test_framework/script.py (renamed from qa/rpc-tests/test_framework/script.py) | 0 | ||||
-rw-r--r-- | test/functional/test_framework/siphash.py (renamed from qa/rpc-tests/test_framework/siphash.py) | 0 | ||||
-rw-r--r-- | test/functional/test_framework/socks5.py (renamed from qa/rpc-tests/test_framework/socks5.py) | 0 | ||||
-rwxr-xr-x | test/functional/test_framework/test_framework.py (renamed from qa/rpc-tests/test_framework/test_framework.py) | 0 | ||||
-rw-r--r-- | test/functional/test_framework/util.py (renamed from qa/rpc-tests/test_framework/util.py) | 0 | ||||
-rwxr-xr-x | test/functional/test_runner.py (renamed from qa/pull-tester/rpc-tests.py) | 37 | ||||
-rwxr-xr-x | test/functional/txn_clone.py (renamed from qa/rpc-tests/txn_clone.py) | 0 | ||||
-rwxr-xr-x | test/functional/txn_doublespend.py (renamed from qa/rpc-tests/txn_doublespend.py) | 0 | ||||
-rwxr-xr-x | test/functional/wallet-accounts.py (renamed from qa/rpc-tests/wallet-accounts.py) | 0 | ||||
-rwxr-xr-x | test/functional/wallet-dump.py (renamed from qa/rpc-tests/wallet-dump.py) | 0 | ||||
-rwxr-xr-x | test/functional/wallet-hd.py (renamed from qa/rpc-tests/wallet-hd.py) | 0 | ||||
-rwxr-xr-x | test/functional/wallet.py (renamed from qa/rpc-tests/wallet.py) | 0 | ||||
-rwxr-xr-x | test/functional/walletbackup.py (renamed from qa/rpc-tests/walletbackup.py) | 0 | ||||
-rwxr-xr-x | test/functional/zapwallettxes.py (renamed from qa/rpc-tests/zapwallettxes.py) | 0 | ||||
-rwxr-xr-x | test/functional/zmq_test.py (renamed from qa/rpc-tests/zmq_test.py) | 0 | ||||
-rw-r--r-- | test/util/bctest.py (renamed from src/test/bctest.py) | 6 | ||||
-rwxr-xr-x | test/util/bitcoin-util-test.py | 36 | ||||
-rw-r--r-- | test/util/buildenv.py.in | 4 | ||||
-rw-r--r-- | test/util/data/bitcoin-util-test.json (renamed from src/test/data/bitcoin-util-test.json) | 0 | ||||
-rw-r--r-- | test/util/data/blanktxv1.hex (renamed from src/test/data/blanktxv1.hex) | 0 | ||||
-rw-r--r-- | test/util/data/blanktxv1.json (renamed from src/test/data/blanktxv1.json) | 0 | ||||
-rw-r--r-- | test/util/data/blanktxv2.hex (renamed from src/test/data/blanktxv2.hex) | 0 | ||||
-rw-r--r-- | test/util/data/blanktxv2.json (renamed from src/test/data/blanktxv2.json) | 0 | ||||
-rw-r--r-- | test/util/data/tt-delin1-out.hex (renamed from src/test/data/tt-delin1-out.hex) | 0 | ||||
-rw-r--r-- | test/util/data/tt-delin1-out.json (renamed from src/test/data/tt-delin1-out.json) | 0 | ||||
-rw-r--r-- | test/util/data/tt-delout1-out.hex (renamed from src/test/data/tt-delout1-out.hex) | 0 | ||||
-rw-r--r-- | test/util/data/tt-delout1-out.json (renamed from src/test/data/tt-delout1-out.json) | 0 | ||||
-rw-r--r-- | test/util/data/tt-locktime317000-out.hex (renamed from src/test/data/tt-locktime317000-out.hex) | 0 | ||||
-rw-r--r-- | test/util/data/tt-locktime317000-out.json (renamed from src/test/data/tt-locktime317000-out.json) | 0 | ||||
-rw-r--r-- | test/util/data/tx394b54bb.hex (renamed from src/test/data/tx394b54bb.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreate1.hex (renamed from src/test/data/txcreate1.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreate1.json (renamed from src/test/data/txcreate1.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreate2.hex (renamed from src/test/data/txcreate2.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreate2.json (renamed from src/test/data/txcreate2.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatedata1.hex (renamed from src/test/data/txcreatedata1.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatedata1.json (renamed from src/test/data/txcreatedata1.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatedata2.hex (renamed from src/test/data/txcreatedata2.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatedata2.json (renamed from src/test/data/txcreatedata2.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatedata_seq0.hex (renamed from src/test/data/txcreatedata_seq0.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatedata_seq0.json (renamed from src/test/data/txcreatedata_seq0.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatedata_seq1.hex (renamed from src/test/data/txcreatedata_seq1.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatedata_seq1.json (renamed from src/test/data/txcreatedata_seq1.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatemultisig1.hex (renamed from src/test/data/txcreatemultisig1.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatemultisig1.json (renamed from src/test/data/txcreatemultisig1.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatemultisig2.hex (renamed from src/test/data/txcreatemultisig2.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatemultisig2.json (renamed from src/test/data/txcreatemultisig2.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatemultisig3.hex (renamed from src/test/data/txcreatemultisig3.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatemultisig3.json (renamed from src/test/data/txcreatemultisig3.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatemultisig4.hex (renamed from src/test/data/txcreatemultisig4.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatemultisig4.json (renamed from src/test/data/txcreatemultisig4.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreateoutpubkey1.hex (renamed from src/test/data/txcreateoutpubkey1.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreateoutpubkey1.json (renamed from src/test/data/txcreateoutpubkey1.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreateoutpubkey2.hex (renamed from src/test/data/txcreateoutpubkey2.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreateoutpubkey2.json (renamed from src/test/data/txcreateoutpubkey2.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreateoutpubkey3.hex (renamed from src/test/data/txcreateoutpubkey3.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreateoutpubkey3.json (renamed from src/test/data/txcreateoutpubkey3.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatescript1.hex (renamed from src/test/data/txcreatescript1.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatescript1.json (renamed from src/test/data/txcreatescript1.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatescript2.hex (renamed from src/test/data/txcreatescript2.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatescript2.json (renamed from src/test/data/txcreatescript2.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatescript3.hex (renamed from src/test/data/txcreatescript3.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatescript3.json (renamed from src/test/data/txcreatescript3.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatescript4.hex (renamed from src/test/data/txcreatescript4.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatescript4.json (renamed from src/test/data/txcreatescript4.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatesignv1.hex (renamed from src/test/data/txcreatesignv1.hex) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatesignv1.json (renamed from src/test/data/txcreatesignv1.json) | 0 | ||||
-rw-r--r-- | test/util/data/txcreatesignv2.hex (renamed from src/test/data/txcreatesignv2.hex) | 0 |
160 files changed, 252 insertions, 260 deletions
diff --git a/.gitignore b/.gitignore index 479889cb78..f1e9ca20c1 100644 --- a/.gitignore +++ b/.gitignore @@ -101,9 +101,9 @@ coverage_percent.txt linux-coverage-build linux-build win32-build -qa/pull-tester/tests_config.py -qa/pull-tester/tests_config.ini -qa/cache/* +test/functional/config.ini +test/util/buildenv.py +test/cache/* !src/leveldb*/Makefile diff --git a/.travis.yml b/.travis.yml index ba250ec83b..f57a19c4ca 100644 --- a/.travis.yml +++ b/.travis.yml @@ -70,7 +70,7 @@ script: - make $MAKEJOBS $GOAL || ( echo "Build failure. Verbose build follows." && make $GOAL V=1 ; false ) - export LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/depends/$HOST/lib - if [ "$RUN_TESTS" = "true" ]; then make $MAKEJOBS check VERBOSE=1; fi - - if [ "$RUN_TESTS" = "true" ]; then qa/pull-tester/rpc-tests.py --coverage; fi + - if [ "$RUN_TESTS" = "true" ]; then test/functional/test_runner.py --coverage; fi after_script: - echo $TRAVIS_COMMIT_RANGE - echo $TRAVIS_COMMIT_LOG diff --git a/Makefile.am b/Makefile.am index 1ee2dfb734..e82704dbdf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -61,7 +61,7 @@ OSX_PACKAGING = $(OSX_DEPLOY_SCRIPT) $(OSX_FANCY_PLIST) $(OSX_INSTALLER_ICONS) \ COVERAGE_INFO = baseline_filtered_combined.info baseline.info \ leveldb_baseline.info test_bitcoin_filtered.info total_coverage.info \ - baseline_filtered.info rpc_test.info rpc_test_filtered.info \ + baseline_filtered.info functional_test.info functional_test_filtered.info \ leveldb_baseline_filtered.info test_bitcoin_coverage.info test_bitcoin.info dist-hook: @@ -194,20 +194,20 @@ test_bitcoin.info: baseline_filtered_combined.info test_bitcoin_filtered.info: test_bitcoin.info $(LCOV) -r $< "/usr/include/*" -o $@ -rpc_test.info: test_bitcoin_filtered.info - -@TIMEOUT=15 python qa/pull-tester/rpc-tests.py $(EXTENDED_RPC_TESTS) - $(LCOV) -c -d $(abs_builddir)/src --t rpc-tests -o $@ +functional_test.info: test_bitcoin_filtered.info + -@TIMEOUT=15 python test/functional/test_runner.py $(EXTENDED_FUNCTIONAL_TESTS) + $(LCOV) -c -d $(abs_builddir)/src --t functional-tests -o $@ $(LCOV) -z -d $(abs_builddir)/src $(LCOV) -z -d $(abs_builddir)/src/leveldb -rpc_test_filtered.info: rpc_test.info +functional_test_filtered.info: functional_test.info $(LCOV) -r $< "/usr/include/*" -o $@ test_bitcoin_coverage.info: baseline_filtered_combined.info test_bitcoin_filtered.info $(LCOV) -a baseline_filtered.info -a leveldb_baseline_filtered.info -a test_bitcoin_filtered.info -o $@ -total_coverage.info: baseline_filtered_combined.info test_bitcoin_filtered.info rpc_test_filtered.info - $(LCOV) -a baseline_filtered.info -a leveldb_baseline_filtered.info -a test_bitcoin_filtered.info -a rpc_test_filtered.info -o $@ | $(GREP) "\%" | $(AWK) '{ print substr($$3,2,50) "/" $$5 }' > coverage_percent.txt +total_coverage.info: baseline_filtered_combined.info test_bitcoin_filtered.info functional_test_filtered.info + $(LCOV) -a baseline_filtered.info -a leveldb_baseline_filtered.info -a test_bitcoin_filtered.info -a functional_test_filtered.info -o $@ | $(GREP) "\%" | $(AWK) '{ print substr($$3,2,50) "/" $$5 }' > coverage_percent.txt test_bitcoin.coverage/.dirstamp: test_bitcoin_coverage.info $(GENHTML) -s $< -o $(@D) @@ -223,14 +223,70 @@ endif dist_noinst_SCRIPTS = autogen.sh -EXTRA_DIST = $(top_srcdir)/share/genbuild.sh qa/pull-tester/rpc-tests.py qa/rpc-tests $(DIST_CONTRIB) $(DIST_DOCS) $(WINDOWS_PACKAGING) $(OSX_PACKAGING) $(BIN_CHECKS) +EXTRA_DIST = $(top_srcdir)/share/genbuild.sh test/functional/test_runner.py test/functional $(DIST_CONTRIB) $(DIST_DOCS) $(WINDOWS_PACKAGING) $(OSX_PACKAGING) $(BIN_CHECKS) + +EXTRA_DIST += \ + test/util/bctest.py \ + test/util/bitcoin-util-test.py \ + test/util/data/bitcoin-util-test.json \ + test/util/data/blanktxv1.hex \ + test/util/data/blanktxv1.json \ + test/util/data/blanktxv2.hex \ + test/util/data/blanktxv2.json \ + test/util/data/tt-delin1-out.hex \ + test/util/data/tt-delin1-out.json \ + test/util/data/tt-delout1-out.hex \ + test/util/data/tt-delout1-out.json \ + test/util/data/tt-locktime317000-out.hex \ + test/util/data/tt-locktime317000-out.json \ + test/util/data/tx394b54bb.hex \ + test/util/data/txcreate1.hex \ + test/util/data/txcreate1.json \ + test/util/data/txcreate2.hex \ + test/util/data/txcreate2.json \ + test/util/data/txcreatedata1.hex \ + test/util/data/txcreatedata1.json \ + test/util/data/txcreatedata2.hex \ + test/util/data/txcreatedata2.json \ + test/util/data/txcreatedata_seq0.hex \ + test/util/data/txcreatedata_seq0.json \ + test/util/data/txcreatedata_seq1.hex \ + test/util/data/txcreatedata_seq1.json \ + test/util/data/txcreatemultisig1.hex \ + test/util/data/txcreatemultisig1.json \ + test/util/data/txcreatemultisig2.hex \ + test/util/data/txcreatemultisig2.json \ + test/util/data/txcreatemultisig3.hex \ + test/util/data/txcreatemultisig3.json \ + test/util/data/txcreatemultisig4.hex \ + test/util/data/txcreatemultisig4.json \ + test/util/data/txcreateoutpubkey1.hex \ + test/util/data/txcreateoutpubkey1.json \ + test/util/data/txcreateoutpubkey2.hex \ + test/util/data/txcreateoutpubkey2.json \ + test/util/data/txcreateoutpubkey3.hex \ + test/util/data/txcreateoutpubkey3.json \ + test/util/data/txcreatescript1.hex \ + test/util/data/txcreatescript1.json \ + test/util/data/txcreatescript2.hex \ + test/util/data/txcreatescript2.json \ + test/util/data/txcreatescript3.hex \ + test/util/data/txcreatescript3.json \ + test/util/data/txcreatescript4.hex \ + test/util/data/txcreatescript4.json \ + test/util/data/txcreatesignv1.hex \ + test/util/data/txcreatesignv1.json \ + test/util/data/txcreatesignv2.hex CLEANFILES = $(OSX_DMG) $(BITCOIN_WIN_INSTALLER) +# This file is problematic for out-of-tree builds if it exists. +DISTCLEANFILES = test/util/buildenv.pyc + .INTERMEDIATE: $(COVERAGE_INFO) DISTCHECK_CONFIGURE_FLAGS = --enable-man clean-local: - rm -rf coverage_percent.txt test_bitcoin.coverage/ total.coverage/ qa/tmp/ cache/ $(OSX_APP) - rm -rf qa/pull-tester/__pycache__ + rm -rf coverage_percent.txt test_bitcoin.coverage/ total.coverage/ test/tmp/ cache/ $(OSX_APP) + rm -rf test/functional/__pycache__ @@ -54,9 +54,9 @@ submit new unit tests for old code. Unit tests can be compiled and run (assuming they weren't disabled in configure) with: `make check`. Further details on running and extending unit tests can be found in [/src/test/README.md](/src/test/README.md). -There are also [regression and integration tests](/qa) of the RPC interface, written +There are also [regression and integration tests](/test), written in Python, that are run automatically on the build server. -These tests can be run (if the [test dependencies](/qa) are installed) with: `qa/pull-tester/rpc-tests.py` +These tests can be run (if the [test dependencies](/test) are installed) with: `test/functional/test_runner.py` The Travis CI system makes sure that every pull request is built for Windows, Linux, and OS X, and that unit/sanity tests are run automatically. diff --git a/configure.ac b/configure.ac index 41634e035b..2a9ee018a0 100644 --- a/configure.ac +++ b/configure.ac @@ -124,10 +124,10 @@ AC_ARG_ENABLE(bench, [use_bench=$enableval], [use_bench=yes]) -AC_ARG_ENABLE([extended-rpc-tests], - AS_HELP_STRING([--enable-extended-rpc-tests],[enable expensive RPC tests when using lcov (default no)]), - [use_extended_rpc_tests=$enableval], - [use_extended_rpc_tests=no]) +AC_ARG_ENABLE([extended-functional-tests], + AS_HELP_STRING([--enable-extended-functional-tests],[enable expensive functional tests when using lcov (default no)]), + [use_extended_functional_tests=$enableval], + [use_extended_functional_tests=no]) AC_ARG_WITH([qrencode], [AS_HELP_STRING([--with-qrencode], @@ -414,8 +414,8 @@ if test x$use_pkgconfig = xyes; then ]) fi -if test x$use_extended_rpc_tests != xno; then - AC_SUBST(EXTENDED_RPC_TESTS, -extended) +if test x$use_extended_functional_tests != xno; then + AC_SUBST(EXTENDED_FUNCTIONAL_TESTS, --extended) fi if test x$use_lcov = xyes; then @@ -1147,10 +1147,12 @@ AC_SUBST(EVENT_PTHREADS_LIBS) AC_SUBST(ZMQ_LIBS) AC_SUBST(PROTOBUF_LIBS) AC_SUBST(QR_LIBS) -AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile share/setup.nsi share/qt/Info.plist src/test/buildenv.py]) -AC_CONFIG_FILES([qa/pull-tester/tests_config.ini],[chmod +x qa/pull-tester/tests_config.ini]) +AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile share/setup.nsi share/qt/Info.plist test/functional/config.ini]) +AC_CONFIG_FILES([test/util/buildenv.py],[chmod +x test/util/buildenv.py]) AC_CONFIG_FILES([contrib/devtools/split-debug.sh],[chmod +x contrib/devtools/split-debug.sh]) -AC_CONFIG_LINKS([qa/pull-tester/rpc-tests.py:qa/pull-tester/rpc-tests.py]) +AC_CONFIG_LINKS([test/functional/test_runner.py:test/functional/test_runner.py]) +AC_CONFIG_LINKS([test/util/bitcoin-util-test.py:test/util/bitcoin-util-test.py]) +AC_CONFIG_LINKS([test/util/bctest.py:test/util/bctest.py]) dnl boost's m4 checks do something really nasty: they export these vars. As a dnl result, they leak into secp256k1's configure and crazy things happen. @@ -1198,8 +1200,8 @@ esac dnl Replace the BUILDDIR path with the correct Windows path if compiling on Native Windows case ${OS} in *Windows*) - sed 's/BUILDDIR="\/\([[a-z]]\)/BUILDDIR="\1:/' qa/pull-tester/tests_config.py > qa/pull-tester/tests_config-2.py - mv qa/pull-tester/tests_config-2.py qa/pull-tester/tests_config.py + sed 's/BUILDDIR="\/\([[a-z]]\)/BUILDDIR="\1:/' test/functional/config.ini > test/functional/config-2.ini + mv test/functional/config-2.ini test/functional/config.ini ;; esac diff --git a/contrib/devtools/copyright_header.py b/contrib/devtools/copyright_header.py index 9f35c378bf..6d801d3ac7 100755 --- a/contrib/devtools/copyright_header.py +++ b/contrib/devtools/copyright_header.py @@ -32,7 +32,7 @@ EXCLUDE = [ 'src/tinyformat.h', 'src/leveldb/util/env_win.cc', 'src/crypto/ctaes/bench.c', - 'qa/rpc-tests/test_framework/bignum.py', + 'test/functional/test_framework/bignum.py', # python init: '*__init__.py', ] diff --git a/contrib/rpm/bitcoin.spec b/contrib/rpm/bitcoin.spec index 516f42334e..cc54fcaf3d 100644 --- a/contrib/rpm/bitcoin.spec +++ b/contrib/rpm/bitcoin.spec @@ -311,10 +311,8 @@ rm -f %{buildroot}%{_bindir}/test_* %check make check -pushd src -srcdir=. test/bitcoin-util-test.py -popd -qa/pull-tester/rpc-tests.py -extended +srcdir=src test/bitcoin-util-test.py +test/functional/test_runner.py --extended %post libs -p /sbin/ldconfig diff --git a/doc/developer-notes.md b/doc/developer-notes.md index 3a7e4f73b3..797507cd3e 100644 --- a/doc/developer-notes.md +++ b/doc/developer-notes.md @@ -132,7 +132,7 @@ Run with the -testnet option to run with "play bitcoins" on the test network, if are testing multi-machine code that needs to operate across the internet. If you are testing something that can run on one machine, run with the -regtest option. -In regression test mode, blocks can be created on-demand; see qa/rpc-tests/ for tests +In regression test mode, blocks can be created on-demand; see test/functional/ for tests that run in -regtest mode. **DEBUG_LOCKORDER** @@ -252,7 +252,7 @@ Wallet - *Rationale*: In RPC code that conditionally uses the wallet (such as `validateaddress`) it is easy to forget that global pointer `pwalletMain` - can be NULL. See `qa/rpc-tests/disablewallet.py` for functional tests + can be NULL. See `test/functional/disablewallet.py` for functional tests exercising the API with `-disablewallet` - Include `db_cxx.h` (BerkeleyDB header) only when `ENABLE_WALLET` is set diff --git a/qa/README.md b/qa/README.md deleted file mode 100644 index f4dce7af5c..0000000000 --- a/qa/README.md +++ /dev/null @@ -1,87 +0,0 @@ -The [pull-tester](/qa/pull-tester/) folder contains a script to call -multiple tests from the [rpc-tests](/qa/rpc-tests/) folder. - -Every pull request to the bitcoin repository is built and run through -the regression test suite. You can also run all or only individual -tests locally. - -Test dependencies -================= -Before running the tests, the following must be installed. - -Unix ----- -The python3-zmq library is required. On Ubuntu or Debian it can be installed via: -``` -sudo apt-get install python3-zmq -``` - -OS X ------- -``` -pip3 install pyzmq -``` - -Running tests -============= - -You can run any single test by calling - - qa/pull-tester/rpc-tests.py <testname> - -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 - -By default, tests will be run in parallel. To specify how many jobs to run, -append `--jobs=n` (default n=4). - -If you want to create a basic coverage report for the RPC test suite, append `--coverage`. - -Possible options, which apply to each individual test run: - -``` - -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 - --coveragedir=COVERAGEDIR - Write tested RPC commands into this directory -``` - -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 -is stored in the cache/ directory. Each node has 25 mature -blocks (25*50=1250 BTC) in its wallet. - -After the first run, the cache/ blockchain and wallets are -copied into a temporary directory and used as the initial -test state. - -If you get into a bad state, you should be able -to recover with: - -```bash -rm -rf cache -killall bitcoind -``` - -Writing tests -============= -You are encouraged to write tests for new or existing features. -Further information about the test framework and individual RPC -tests is found in [qa/rpc-tests](/qa/rpc-tests). diff --git a/src/Makefile.test.include b/src/Makefile.test.include index cfd08b8238..fe0ed59fe2 100644 --- a/src/Makefile.test.include +++ b/src/Makefile.test.include @@ -8,60 +8,6 @@ noinst_PROGRAMS += test/test_bitcoin_fuzzy TEST_SRCDIR = test TEST_BINARY=test/test_bitcoin$(EXEEXT) - -EXTRA_DIST += \ - test/bctest.py \ - test/bitcoin-util-test.py \ - test/data/bitcoin-util-test.json \ - test/data/blanktxv1.hex \ - test/data/blanktxv1.json \ - test/data/blanktxv2.hex \ - test/data/blanktxv2.json \ - test/data/tt-delin1-out.hex \ - test/data/tt-delin1-out.json \ - test/data/tt-delout1-out.hex \ - test/data/tt-delout1-out.json \ - test/data/tt-locktime317000-out.hex \ - test/data/tt-locktime317000-out.json \ - test/data/tx394b54bb.hex \ - test/data/txcreate1.hex \ - test/data/txcreate1.json \ - test/data/txcreate2.hex \ - test/data/txcreate2.json \ - test/data/txcreatedata1.hex \ - test/data/txcreatedata1.json \ - test/data/txcreatedata2.hex \ - test/data/txcreatedata2.json \ - test/data/txcreatedata_seq0.hex \ - test/data/txcreatedata_seq0.json \ - test/data/txcreatedata_seq1.hex \ - test/data/txcreatedata_seq1.json \ - test/data/txcreatemultisig1.hex \ - test/data/txcreatemultisig1.json \ - test/data/txcreatemultisig2.hex \ - test/data/txcreatemultisig2.json \ - test/data/txcreatemultisig3.hex \ - test/data/txcreatemultisig3.json \ - test/data/txcreatemultisig4.hex \ - test/data/txcreatemultisig4.json \ - test/data/txcreateoutpubkey1.hex \ - test/data/txcreateoutpubkey1.json \ - test/data/txcreateoutpubkey2.hex \ - test/data/txcreateoutpubkey2.json \ - test/data/txcreateoutpubkey3.hex \ - test/data/txcreateoutpubkey3.json \ - test/data/txcreatescript1.hex \ - test/data/txcreatescript1.json \ - test/data/txcreatescript2.hex \ - test/data/txcreatescript2.json \ - test/data/txcreatescript3.hex \ - test/data/txcreatescript3.json \ - test/data/txcreatescript4.hex \ - test/data/txcreatescript4.json \ - test/data/txcreatesignv1.hex \ - test/data/txcreatesignv1.json \ - test/data/txcreatesignv2.hex - JSON_TEST_FILES = \ test/data/script_tests.json \ test/data/base58_keys_valid.json \ @@ -191,9 +137,6 @@ CLEAN_BITCOIN_TEST = test/*.gcda test/*.gcno $(GENERATED_TEST_FILES) CLEANFILES += $(CLEAN_BITCOIN_TEST) -# This file is problematic for out-of-tree builds if it exists. -DISTCLEANFILES += test/buildenv.pyc - bitcoin_test: $(TEST_BINARY) bitcoin_test_check: $(TEST_BINARY) FORCE @@ -203,8 +146,8 @@ bitcoin_test_clean : FORCE rm -f $(CLEAN_BITCOIN_TEST) $(test_test_bitcoin_OBJECTS) $(TEST_BINARY) check-local: - @echo "Running test/bitcoin-util-test.py..." - $(AM_V_at)srcdir=$(srcdir) PYTHONPATH=$(builddir)/test $(PYTHON) $(srcdir)/test/bitcoin-util-test.py + @echo "Running test/util/bitcoin-util-test.py..." + $(PYTHON) $(top_builddir)/test/util/bitcoin-util-test.py $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C secp256k1 check if EMBEDDED_UNIVALUE $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C univalue check diff --git a/src/test/README.md b/src/test/README.md index 8f99804e10..eeb04c6ffa 100644 --- a/src/test/README.md +++ b/src/test/README.md @@ -50,12 +50,3 @@ examine `uint256_tests.cpp`. For further reading, I found the following website to be helpful in explaining how the boost unit test framework works: [http://www.alittlemadness.com/2009/03/31/c-unit-testing-with-boosttest/](http://www.alittlemadness.com/2009/03/31/c-unit-testing-with-boosttest/). - -### bitcoin-util-test.py - -The test directory also contains the bitcoin-util-test.py tool, which tests bitcoin utils (currently just bitcoin-tx). This test gets run automatically during the `make check` build process. It is also possible to run the test manually from the src directory: - -``` -test/bitcoin-util-test.py --srcdir=[current directory] - -``` diff --git a/src/test/bitcoin-util-test.py b/src/test/bitcoin-util-test.py deleted file mode 100755 index e2087187aa..0000000000 --- a/src/test/bitcoin-util-test.py +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env python -# Copyright 2014 BitPay Inc. -# Copyright 2016 The Bitcoin Core developers -# Distributed under the MIT software license, see the accompanying -# file COPYING or http://www.opensource.org/licenses/mit-license.php. -from __future__ import division,print_function,unicode_literals -import os -import bctest -import buildenv -import argparse -import logging - -help_text="""Test framework for bitcoin utils. - -Runs automatically during `make check`. - -Can also be run manually from the src directory by specifying the source directory: - -test/bitcoin-util-test.py --srcdir='srcdir' [--verbose] -""" - -if __name__ == '__main__': - # Try to get the source directory from the environment variables. This will - # be set for `make check` automated runs. If environment variable is not set, - # then get the source directory from command line args. - try: - srcdir = os.environ["srcdir"] - verbose = False - except: - parser = argparse.ArgumentParser(description=help_text) - parser.add_argument('-s', '--srcdir') - parser.add_argument('-v', '--verbose', action='store_true') - args = parser.parse_args() - srcdir = args.srcdir - verbose = args.verbose - - if verbose: - level = logging.DEBUG - else: - level = logging.ERROR - formatter = '%(asctime)s - %(levelname)s - %(message)s' - # Add the format/level to the logger - logging.basicConfig(format = formatter, level=level) - - bctest.bctester(srcdir + "/test/data", "bitcoin-util-test.json", buildenv) diff --git a/src/test/buildenv.py.in b/src/test/buildenv.py.in deleted file mode 100644 index 153f34a3db..0000000000 --- a/src/test/buildenv.py.in +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env python -exeext="@EXEEXT@" diff --git a/test/README.md b/test/README.md new file mode 100644 index 0000000000..dec8db960d --- /dev/null +++ b/test/README.md @@ -0,0 +1,97 @@ +This directory contains integration tests that test bitcoind and its +utilities in their entirety. It does not contain unit tests, which +can be found in [/src/test](/src/test), [/src/wallet/test](/src/wallet/test), +etc. + +There are currently two sets of tests in this directory: + +- [functional](/test/functional) which test the functionality of +bitcoind and bitcoin-qt by interacting with them through the RPC and P2P +interfaces. +- [util](test/util) which tests the bitcoin utilities, currently only +bitcoin-tx. + +The util tests are run as part of `make check` target. The functional +tests are run by the travis continuous build process whenever a pull +request is opened. Both sets of tests can also be run locally. + +Functional Test dependencies +============================ +The ZMQ functional test requires a python ZMQ library. To install it: + +- on Unix, run `sudo apt-get install python3-zmq` +- on mac OS, run `pip3 install pyzmq` + +Running tests locally +===================== + +Functional tests +---------------- + +You can run any single test by calling + + test/functional/test_runner.py <testname> + +Or you can run any combination of tests by calling + + test/functional/test_runner.py <testname1> <testname2> <testname3> ... + +Run the regression test suite with + + test/functional/test_runner.py + +Run all possible tests with + + test/functional/test_runner.py --extended + +By default, tests will be run in parallel. To specify how many jobs to run, +append `--jobs=n` (default n=4). + +If you want to create a basic coverage report for the RPC test suite, append `--coverage`. + +Possible options, which apply to each individual test run: + +``` + -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 + --coveragedir=COVERAGEDIR + Write tested RPC commands into this directory +``` + +If you set the environment variable `PYTHON_DEBUG=1` you will get some debug +output (example: `PYTHON_DEBUG=1 test/functional/test_runner.py 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 +blocks (25*50=1250 BTC) in its wallet. + +After the first run, the cache/ blockchain and wallets are +copied into a temporary directory and used as the initial +test state. + +If you get into a bad state, you should be able +to recover with: + +```bash +rm -rf cache +killall bitcoind +``` + +Util tests +---------- + +Util tests can be run locally by running `test/util/bitcoin-util-test.py`. +Use the `-v` option for verbose output. + +Writing functional tests +======================== + +You are encouraged to write functional tests for new or existing features. +Further information about the functional test framework and individual +tests is found in [test/functional](/test/functional). diff --git a/qa/rpc-tests/.gitignore b/test/functional/.gitignore index cb41d94423..cb41d94423 100644 --- a/qa/rpc-tests/.gitignore +++ b/test/functional/.gitignore diff --git a/qa/rpc-tests/README.md b/test/functional/README.md index 651b01f18a..651b01f18a 100644 --- a/qa/rpc-tests/README.md +++ b/test/functional/README.md diff --git a/qa/rpc-tests/abandonconflict.py b/test/functional/abandonconflict.py index 887dbebd4f..887dbebd4f 100755 --- a/qa/rpc-tests/abandonconflict.py +++ b/test/functional/abandonconflict.py diff --git a/qa/rpc-tests/assumevalid.py b/test/functional/assumevalid.py index c60c8e6d1a..c60c8e6d1a 100755 --- a/qa/rpc-tests/assumevalid.py +++ b/test/functional/assumevalid.py diff --git a/qa/rpc-tests/bip65-cltv-p2p.py b/test/functional/bip65-cltv-p2p.py index 63d05e8fc9..63d05e8fc9 100755 --- a/qa/rpc-tests/bip65-cltv-p2p.py +++ b/test/functional/bip65-cltv-p2p.py diff --git a/qa/rpc-tests/bip65-cltv.py b/test/functional/bip65-cltv.py index 7f13bb9952..7f13bb9952 100755 --- a/qa/rpc-tests/bip65-cltv.py +++ b/test/functional/bip65-cltv.py diff --git a/qa/rpc-tests/bip68-112-113-p2p.py b/test/functional/bip68-112-113-p2p.py index 0867f42585..0867f42585 100755 --- a/qa/rpc-tests/bip68-112-113-p2p.py +++ b/test/functional/bip68-112-113-p2p.py diff --git a/qa/rpc-tests/bip68-sequence.py b/test/functional/bip68-sequence.py index 3ed6ebe044..3ed6ebe044 100755 --- a/qa/rpc-tests/bip68-sequence.py +++ b/test/functional/bip68-sequence.py diff --git a/qa/rpc-tests/bip9-softforks.py b/test/functional/bip9-softforks.py index 0dffd06e1a..0dffd06e1a 100755 --- a/qa/rpc-tests/bip9-softforks.py +++ b/test/functional/bip9-softforks.py diff --git a/qa/rpc-tests/bipdersig-p2p.py b/test/functional/bipdersig-p2p.py index 22bd39fbe5..22bd39fbe5 100755 --- a/qa/rpc-tests/bipdersig-p2p.py +++ b/test/functional/bipdersig-p2p.py diff --git a/qa/rpc-tests/bipdersig.py b/test/functional/bipdersig.py index 371cc41bb7..371cc41bb7 100755 --- a/qa/rpc-tests/bipdersig.py +++ b/test/functional/bipdersig.py diff --git a/qa/rpc-tests/blockchain.py b/test/functional/blockchain.py index 596aed50ec..596aed50ec 100755 --- a/qa/rpc-tests/blockchain.py +++ b/test/functional/blockchain.py diff --git a/qa/rpc-tests/bumpfee.py b/test/functional/bumpfee.py index 8f75e9ed4d..8f75e9ed4d 100755 --- a/qa/rpc-tests/bumpfee.py +++ b/test/functional/bumpfee.py diff --git a/qa/pull-tester/tests_config.ini.in b/test/functional/config.ini.in index e3e457d0b1..29586c555d 100644 --- a/qa/pull-tester/tests_config.ini.in +++ b/test/functional/config.ini.in @@ -3,7 +3,7 @@ # file COPYING or http://www.opensource.org/licenses/mit-license.php. # These environment variables are set by the build process and read by -# rpc-tests.py +# test/functional/test_runner.py [environment] SRCDIR=@abs_top_srcdir@ diff --git a/qa/rpc-tests/create_cache.py b/test/functional/create_cache.py index 13eac92bbc..39c4c0f47e 100755 --- a/qa/rpc-tests/create_cache.py +++ b/test/functional/create_cache.py @@ -5,7 +5,7 @@ """Create a blockchain cache. Creating a cache of the blockchain speeds up test execution when running -multiple qa tests. This helper script is executed by rpc-tests when multiple +multiple functional tests. This helper script is executed by test_runner when multiple tests are being run in parallel. """ diff --git a/qa/rpc-tests/decodescript.py b/test/functional/decodescript.py index 5555e96c44..5555e96c44 100755 --- a/qa/rpc-tests/decodescript.py +++ b/test/functional/decodescript.py diff --git a/qa/rpc-tests/disablewallet.py b/test/functional/disablewallet.py index 2f729e19bf..2f729e19bf 100755 --- a/qa/rpc-tests/disablewallet.py +++ b/test/functional/disablewallet.py diff --git a/qa/rpc-tests/forknotify.py b/test/functional/forknotify.py index c2724ba5df..c2724ba5df 100755 --- a/qa/rpc-tests/forknotify.py +++ b/test/functional/forknotify.py diff --git a/qa/rpc-tests/fundrawtransaction.py b/test/functional/fundrawtransaction.py index fd330ef277..fd330ef277 100755 --- a/qa/rpc-tests/fundrawtransaction.py +++ b/test/functional/fundrawtransaction.py diff --git a/qa/rpc-tests/getblocktemplate_longpoll.py b/test/functional/getblocktemplate_longpoll.py index bbe1dda5f7..bbe1dda5f7 100755 --- a/qa/rpc-tests/getblocktemplate_longpoll.py +++ b/test/functional/getblocktemplate_longpoll.py diff --git a/qa/rpc-tests/getblocktemplate_proposals.py b/test/functional/getblocktemplate_proposals.py index 67745f77d1..67745f77d1 100755 --- a/qa/rpc-tests/getblocktemplate_proposals.py +++ b/test/functional/getblocktemplate_proposals.py diff --git a/qa/rpc-tests/getchaintips.py b/test/functional/getchaintips.py index 14222334a6..14222334a6 100755 --- a/qa/rpc-tests/getchaintips.py +++ b/test/functional/getchaintips.py diff --git a/qa/rpc-tests/httpbasics.py b/test/functional/httpbasics.py index 8f35f0ab87..8f35f0ab87 100755 --- a/qa/rpc-tests/httpbasics.py +++ b/test/functional/httpbasics.py diff --git a/qa/rpc-tests/import-rescan.py b/test/functional/import-rescan.py index 0218a46168..0218a46168 100755 --- a/qa/rpc-tests/import-rescan.py +++ b/test/functional/import-rescan.py diff --git a/qa/rpc-tests/importmulti.py b/test/functional/importmulti.py index aa03c6780a..aa03c6780a 100755 --- a/qa/rpc-tests/importmulti.py +++ b/test/functional/importmulti.py diff --git a/qa/rpc-tests/importprunedfunds.py b/test/functional/importprunedfunds.py index b4c8ee6c70..b4c8ee6c70 100755 --- a/qa/rpc-tests/importprunedfunds.py +++ b/test/functional/importprunedfunds.py diff --git a/qa/rpc-tests/invalidateblock.py b/test/functional/invalidateblock.py index 8c80b64003..8c80b64003 100755 --- a/qa/rpc-tests/invalidateblock.py +++ b/test/functional/invalidateblock.py diff --git a/qa/rpc-tests/invalidblockrequest.py b/test/functional/invalidblockrequest.py index eabc0db8df..eabc0db8df 100755 --- a/qa/rpc-tests/invalidblockrequest.py +++ b/test/functional/invalidblockrequest.py diff --git a/qa/rpc-tests/invalidtxrequest.py b/test/functional/invalidtxrequest.py index a9ac231f09..a9ac231f09 100755 --- a/qa/rpc-tests/invalidtxrequest.py +++ b/test/functional/invalidtxrequest.py diff --git a/qa/rpc-tests/keypool.py b/test/functional/keypool.py index cee58563f0..cee58563f0 100755 --- a/qa/rpc-tests/keypool.py +++ b/test/functional/keypool.py diff --git a/qa/rpc-tests/listsinceblock.py b/test/functional/listsinceblock.py index a75e66c8c4..a75e66c8c4 100755 --- a/qa/rpc-tests/listsinceblock.py +++ b/test/functional/listsinceblock.py diff --git a/qa/rpc-tests/listtransactions.py b/test/functional/listtransactions.py index 68d14093ce..68d14093ce 100755 --- a/qa/rpc-tests/listtransactions.py +++ b/test/functional/listtransactions.py diff --git a/qa/rpc-tests/maxblocksinflight.py b/test/functional/maxblocksinflight.py index 2c3766125a..2c3766125a 100755 --- a/qa/rpc-tests/maxblocksinflight.py +++ b/test/functional/maxblocksinflight.py diff --git a/qa/rpc-tests/maxuploadtarget.py b/test/functional/maxuploadtarget.py index 40cd85c9ec..40cd85c9ec 100755 --- a/qa/rpc-tests/maxuploadtarget.py +++ b/test/functional/maxuploadtarget.py diff --git a/qa/rpc-tests/mempool_limit.py b/test/functional/mempool_limit.py index a7ca576aee..a7ca576aee 100755 --- a/qa/rpc-tests/mempool_limit.py +++ b/test/functional/mempool_limit.py diff --git a/qa/rpc-tests/mempool_packages.py b/test/functional/mempool_packages.py index 17e3a9a967..17e3a9a967 100755 --- a/qa/rpc-tests/mempool_packages.py +++ b/test/functional/mempool_packages.py diff --git a/qa/rpc-tests/mempool_reorg.py b/test/functional/mempool_reorg.py index 812b54ffcb..812b54ffcb 100755 --- a/qa/rpc-tests/mempool_reorg.py +++ b/test/functional/mempool_reorg.py diff --git a/qa/rpc-tests/mempool_resurrect_test.py b/test/functional/mempool_resurrect_test.py index 727892d1f2..727892d1f2 100755 --- a/qa/rpc-tests/mempool_resurrect_test.py +++ b/test/functional/mempool_resurrect_test.py diff --git a/qa/rpc-tests/mempool_spendcoinbase.py b/test/functional/mempool_spendcoinbase.py index f562a93d86..f562a93d86 100755 --- a/qa/rpc-tests/mempool_spendcoinbase.py +++ b/test/functional/mempool_spendcoinbase.py diff --git a/qa/rpc-tests/merkle_blocks.py b/test/functional/merkle_blocks.py index 5963f2e7b6..5963f2e7b6 100755 --- a/qa/rpc-tests/merkle_blocks.py +++ b/test/functional/merkle_blocks.py diff --git a/qa/rpc-tests/multi_rpc.py b/test/functional/multi_rpc.py index 3b74bf1c46..3b74bf1c46 100755 --- a/qa/rpc-tests/multi_rpc.py +++ b/test/functional/multi_rpc.py diff --git a/qa/rpc-tests/nodehandling.py b/test/functional/nodehandling.py index a6b10a0d83..a6b10a0d83 100755 --- a/qa/rpc-tests/nodehandling.py +++ b/test/functional/nodehandling.py diff --git a/qa/rpc-tests/nulldummy.py b/test/functional/nulldummy.py index 369c593a90..369c593a90 100755 --- a/qa/rpc-tests/nulldummy.py +++ b/test/functional/nulldummy.py diff --git a/qa/rpc-tests/p2p-acceptblock.py b/test/functional/p2p-acceptblock.py index e1111da4ae..e1111da4ae 100755 --- a/qa/rpc-tests/p2p-acceptblock.py +++ b/test/functional/p2p-acceptblock.py diff --git a/qa/rpc-tests/p2p-compactblocks.py b/test/functional/p2p-compactblocks.py index 1fc0312c34..1fc0312c34 100755 --- a/qa/rpc-tests/p2p-compactblocks.py +++ b/test/functional/p2p-compactblocks.py diff --git a/qa/rpc-tests/p2p-feefilter.py b/test/functional/p2p-feefilter.py index d8f07700d0..d8f07700d0 100755 --- a/qa/rpc-tests/p2p-feefilter.py +++ b/test/functional/p2p-feefilter.py diff --git a/qa/rpc-tests/p2p-fullblocktest.py b/test/functional/p2p-fullblocktest.py index 274dbb8a92..274dbb8a92 100755 --- a/qa/rpc-tests/p2p-fullblocktest.py +++ b/test/functional/p2p-fullblocktest.py diff --git a/qa/rpc-tests/p2p-leaktests.py b/test/functional/p2p-leaktests.py index 3a843197fb..3a843197fb 100755 --- a/qa/rpc-tests/p2p-leaktests.py +++ b/test/functional/p2p-leaktests.py diff --git a/qa/rpc-tests/p2p-mempool.py b/test/functional/p2p-mempool.py index 0aa9c90e8f..0aa9c90e8f 100755 --- a/qa/rpc-tests/p2p-mempool.py +++ b/test/functional/p2p-mempool.py diff --git a/qa/rpc-tests/p2p-segwit.py b/test/functional/p2p-segwit.py index dcf2b9a7de..dcf2b9a7de 100755 --- a/qa/rpc-tests/p2p-segwit.py +++ b/test/functional/p2p-segwit.py diff --git a/qa/rpc-tests/p2p-timeouts.py b/test/functional/p2p-timeouts.py index 498acb23fe..498acb23fe 100755 --- a/qa/rpc-tests/p2p-timeouts.py +++ b/test/functional/p2p-timeouts.py diff --git a/qa/rpc-tests/p2p-versionbits-warning.py b/test/functional/p2p-versionbits-warning.py index dc714e9a4a..dc714e9a4a 100755 --- a/qa/rpc-tests/p2p-versionbits-warning.py +++ b/test/functional/p2p-versionbits-warning.py diff --git a/qa/rpc-tests/preciousblock.py b/test/functional/preciousblock.py index 30b0b5a301..30b0b5a301 100755 --- a/qa/rpc-tests/preciousblock.py +++ b/test/functional/preciousblock.py diff --git a/qa/rpc-tests/prioritise_transaction.py b/test/functional/prioritise_transaction.py index 0b04ad17ab..0b04ad17ab 100755 --- a/qa/rpc-tests/prioritise_transaction.py +++ b/test/functional/prioritise_transaction.py diff --git a/qa/rpc-tests/proxy_test.py b/test/functional/proxy_test.py index 748e3e69f6..748e3e69f6 100755 --- a/qa/rpc-tests/proxy_test.py +++ b/test/functional/proxy_test.py diff --git a/qa/rpc-tests/pruning.py b/test/functional/pruning.py index cc84c8c085..cc84c8c085 100755 --- a/qa/rpc-tests/pruning.py +++ b/test/functional/pruning.py diff --git a/qa/rpc-tests/rawtransactions.py b/test/functional/rawtransactions.py index 0374d8984a..0374d8984a 100755 --- a/qa/rpc-tests/rawtransactions.py +++ b/test/functional/rawtransactions.py diff --git a/qa/rpc-tests/receivedby.py b/test/functional/receivedby.py index 248bcdbd68..248bcdbd68 100755 --- a/qa/rpc-tests/receivedby.py +++ b/test/functional/receivedby.py diff --git a/qa/rpc-tests/reindex.py b/test/functional/reindex.py index 0cebb0466f..0cebb0466f 100755 --- a/qa/rpc-tests/reindex.py +++ b/test/functional/reindex.py diff --git a/qa/rpc-tests/replace-by-fee.py b/test/functional/replace-by-fee.py index 163c304eba..163c304eba 100755 --- a/qa/rpc-tests/replace-by-fee.py +++ b/test/functional/replace-by-fee.py diff --git a/qa/rpc-tests/rest.py b/test/functional/rest.py index 776211d301..776211d301 100755 --- a/qa/rpc-tests/rest.py +++ b/test/functional/rest.py diff --git a/qa/rpc-tests/rpcbind_test.py b/test/functional/rpcbind_test.py index 8720a345ce..8720a345ce 100755 --- a/qa/rpc-tests/rpcbind_test.py +++ b/test/functional/rpcbind_test.py diff --git a/qa/rpc-tests/rpcnamedargs.py b/test/functional/rpcnamedargs.py index f6175c8ca7..f6175c8ca7 100755 --- a/qa/rpc-tests/rpcnamedargs.py +++ b/test/functional/rpcnamedargs.py diff --git a/qa/rpc-tests/segwit.py b/test/functional/segwit.py index 5b1fba8eec..5b1fba8eec 100755 --- a/qa/rpc-tests/segwit.py +++ b/test/functional/segwit.py diff --git a/qa/rpc-tests/sendheaders.py b/test/functional/sendheaders.py index de7f5e0849..de7f5e0849 100755 --- a/qa/rpc-tests/sendheaders.py +++ b/test/functional/sendheaders.py diff --git a/qa/rpc-tests/signmessages.py b/test/functional/signmessages.py index 91f5abef5d..91f5abef5d 100755 --- a/qa/rpc-tests/signmessages.py +++ b/test/functional/signmessages.py diff --git a/qa/rpc-tests/signrawtransactions.py b/test/functional/signrawtransactions.py index b24162ab97..b24162ab97 100755 --- a/qa/rpc-tests/signrawtransactions.py +++ b/test/functional/signrawtransactions.py diff --git a/qa/rpc-tests/smartfees.py b/test/functional/smartfees.py index 49f2df5c37..49f2df5c37 100755 --- a/qa/rpc-tests/smartfees.py +++ b/test/functional/smartfees.py diff --git a/qa/rpc-tests/test_framework/__init__.py b/test/functional/test_framework/__init__.py index e69de29bb2..e69de29bb2 100644 --- a/qa/rpc-tests/test_framework/__init__.py +++ b/test/functional/test_framework/__init__.py diff --git a/qa/rpc-tests/test_framework/address.py b/test/functional/test_framework/address.py index 96bebe1ea1..96bebe1ea1 100644 --- a/qa/rpc-tests/test_framework/address.py +++ b/test/functional/test_framework/address.py diff --git a/qa/rpc-tests/test_framework/authproxy.py b/test/functional/test_framework/authproxy.py index 9ab3094b06..9ab3094b06 100644 --- a/qa/rpc-tests/test_framework/authproxy.py +++ b/test/functional/test_framework/authproxy.py diff --git a/qa/rpc-tests/test_framework/bignum.py b/test/functional/test_framework/bignum.py index 024611da6e..024611da6e 100644 --- a/qa/rpc-tests/test_framework/bignum.py +++ b/test/functional/test_framework/bignum.py diff --git a/qa/rpc-tests/test_framework/blockstore.py b/test/functional/test_framework/blockstore.py index 4cfd682bb5..4cfd682bb5 100644 --- a/qa/rpc-tests/test_framework/blockstore.py +++ b/test/functional/test_framework/blockstore.py diff --git a/qa/rpc-tests/test_framework/blocktools.py b/test/functional/test_framework/blocktools.py index 2c9a0857df..2c9a0857df 100644 --- a/qa/rpc-tests/test_framework/blocktools.py +++ b/test/functional/test_framework/blocktools.py diff --git a/qa/rpc-tests/test_framework/comptool.py b/test/functional/test_framework/comptool.py index 70d1d700ef..70d1d700ef 100755 --- a/qa/rpc-tests/test_framework/comptool.py +++ b/test/functional/test_framework/comptool.py diff --git a/qa/rpc-tests/test_framework/coverage.py b/test/functional/test_framework/coverage.py index 3f87ef91f6..3f87ef91f6 100644 --- a/qa/rpc-tests/test_framework/coverage.py +++ b/test/functional/test_framework/coverage.py diff --git a/qa/rpc-tests/test_framework/key.py b/test/functional/test_framework/key.py index 85a6158a2f..85a6158a2f 100644 --- a/qa/rpc-tests/test_framework/key.py +++ b/test/functional/test_framework/key.py diff --git a/qa/rpc-tests/test_framework/mininode.py b/test/functional/test_framework/mininode.py index aace17a043..aace17a043 100755 --- a/qa/rpc-tests/test_framework/mininode.py +++ b/test/functional/test_framework/mininode.py diff --git a/qa/rpc-tests/test_framework/netutil.py b/test/functional/test_framework/netutil.py index 45d8e22d22..45d8e22d22 100644 --- a/qa/rpc-tests/test_framework/netutil.py +++ b/test/functional/test_framework/netutil.py diff --git a/qa/rpc-tests/test_framework/script.py b/test/functional/test_framework/script.py index 3d9572788e..3d9572788e 100644 --- a/qa/rpc-tests/test_framework/script.py +++ b/test/functional/test_framework/script.py diff --git a/qa/rpc-tests/test_framework/siphash.py b/test/functional/test_framework/siphash.py index f68ecad36b..f68ecad36b 100644 --- a/qa/rpc-tests/test_framework/siphash.py +++ b/test/functional/test_framework/siphash.py diff --git a/qa/rpc-tests/test_framework/socks5.py b/test/functional/test_framework/socks5.py index dd7624d454..dd7624d454 100644 --- a/qa/rpc-tests/test_framework/socks5.py +++ b/test/functional/test_framework/socks5.py diff --git a/qa/rpc-tests/test_framework/test_framework.py b/test/functional/test_framework/test_framework.py index d7072fa78d..d7072fa78d 100755 --- a/qa/rpc-tests/test_framework/test_framework.py +++ b/test/functional/test_framework/test_framework.py diff --git a/qa/rpc-tests/test_framework/util.py b/test/functional/test_framework/util.py index 23ac324510..23ac324510 100644 --- a/qa/rpc-tests/test_framework/util.py +++ b/test/functional/test_framework/util.py diff --git a/qa/pull-tester/rpc-tests.py b/test/functional/test_runner.py index 68e11b4c2b..12eb92028f 100755 --- a/qa/pull-tester/rpc-tests.py +++ b/test/functional/test_runner.py @@ -2,16 +2,15 @@ # Copyright (c) 2014-2016 The Bitcoin Core developers # Distributed under the MIT software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. -""" -rpc-tests.py - run regression test suite +"""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. +Functional 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`. +`test/functional/test_framework/test_framework.py:BitcoinTestFramework.main`. """ @@ -87,7 +86,7 @@ BASE_SCRIPTS= [ ZMQ_SCRIPTS = [ # ZMQ test can only be run if bitcoin was built with zmq-enabled. - # call rpc_tests.py with -nozmq to explicitly exclude these tests. + # call test_runner.py with -nozmq to explicitly exclude these tests. "zmq_test.py"] EXTENDED_SCRIPTS = [ @@ -127,7 +126,7 @@ ALL_SCRIPTS = BASE_SCRIPTS + ZMQ_SCRIPTS + EXTENDED_SCRIPTS def main(): # Parse arguments and pass through unrecognised args parser = argparse.ArgumentParser(add_help=False, - usage='%(prog)s [rpc-test.py options] [script options] [scripts]', + usage='%(prog)s [test_runner.py options] [script options] [scripts]', description=__doc__, epilog=''' Help text and arguments for individual test script:''', @@ -147,7 +146,7 @@ def main(): # Read config generated by configure. config = configparser.ConfigParser() - config.read_file(open(os.path.dirname(__file__) + "/tests_config.ini")) + config.read_file(open(os.path.dirname(__file__) + "/config.ini")) enable_wallet = config["components"].getboolean("ENABLE_WALLET") enable_utils = config["components"].getboolean("ENABLE_UTILS") @@ -161,7 +160,7 @@ def main(): sys.exit(0) if not (enable_wallet and enable_utils and enable_bitcoind): - print("No rpc tests to run. Wallet, utils, and bitcoind must all be enabled") + print("No functional tests to run. Wallet, utils, and bitcoind must all be enabled") print("Rerun `configure` with -enable-wallet, -with-utils and -with-daemon and rerun make") sys.exit(0) @@ -171,7 +170,7 @@ def main(): import zmq except ImportError: print("ERROR: \"import zmq\" failed. Use -nozmq to run without the ZMQ tests." - "To run zmq tests, see dependency info in /qa/README.md.") + "To run zmq tests, see dependency info in /test/README.md.") raise # Build list of tests @@ -200,13 +199,13 @@ def main(): 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") + "of the test lists in test_runner.py, or run test_runner.py with no arguments to run all tests") sys.exit(0) if args.help: - # Print help for rpc-tests.py, then print help of the first script and exit. + # Print help for test_runner.py, then print help of the first script and exit. parser.print_help() - subprocess.check_call((config["environment"]["SRCDIR"] + '/qa/rpc-tests/' + test_list[0]).split() + ['-h']) + subprocess.check_call((config["environment"]["SRCDIR"] + '/test/functional/' + test_list[0]).split() + ['-h']) sys.exit(0) run_tests(test_list, config["environment"]["SRCDIR"], config["environment"]["BUILDDIR"], config["environment"]["EXEEXT"], args.jobs, args.coverage, passon_args) @@ -222,10 +221,10 @@ def run_tests(test_list, src_dir, build_dir, exeext, jobs=1, enable_coverage=Fal if "BITCOIND" not in os.environ: os.environ["BITCOIND"] = build_dir + '/src/bitcoind' + exeext - tests_dir = src_dir + '/qa/rpc-tests/' + tests_dir = src_dir + '/test/functional/' flags = ["--srcdir={}/src".format(build_dir)] + args - flags.append("--cachedir=%s/qa/cache" % build_dir) + flags.append("--cachedir=%s/test/cache" % build_dir) if enable_coverage: coverage = RPCCoverage() @@ -243,7 +242,7 @@ def run_tests(test_list, src_dir, build_dir, exeext, jobs=1, enable_coverage=Fal time_sum = 0 time0 = time.time() - job_queue = RPCTestHandler(jobs, tests_dir, test_list, flags) + job_queue = TestHandler(jobs, tests_dir, test_list, flags) max_len_name = len(max(test_list, key=len)) results = BOLD[1] + "%s | %s | %s\n\n" % ("TEST".ljust(max_len_name), "PASSED", "DURATION") + BOLD[0] @@ -271,7 +270,7 @@ def run_tests(test_list, src_dir, build_dir, exeext, jobs=1, enable_coverage=Fal sys.exit(not all_passed) -class RPCTestHandler: +class TestHandler: """ Trigger the testscrips passed in via the list. """ @@ -325,7 +324,7 @@ class RPCTestHandler: class RPCCoverage(object): """ - Coverage reporting utilities for pull-tester. + Coverage reporting utilities for test_runner. Coverage calculation works by having each test script subprocess write coverage files into a particular directory. These files contain the RPC @@ -335,7 +334,7 @@ class RPCCoverage(object): After all tests complete, the commands run are combined and diff'd against the complete list to calculate uncovered RPC commands. - See also: qa/rpc-tests/test_framework/coverage.py + See also: test/functional/test_framework/coverage.py """ def __init__(self): @@ -363,7 +362,7 @@ class RPCCoverage(object): Return a set of currently untested RPC commands. """ - # This is shared from `qa/rpc-tests/test-framework/coverage.py` + # This is shared from `test/functional/test-framework/coverage.py` reference_filename = 'rpc_interface.txt' coverage_file_prefix = 'coverage.' diff --git a/qa/rpc-tests/txn_clone.py b/test/functional/txn_clone.py index 7a3b8d3474..7a3b8d3474 100755 --- a/qa/rpc-tests/txn_clone.py +++ b/test/functional/txn_clone.py diff --git a/qa/rpc-tests/txn_doublespend.py b/test/functional/txn_doublespend.py index 5b12cf4c29..5b12cf4c29 100755 --- a/qa/rpc-tests/txn_doublespend.py +++ b/test/functional/txn_doublespend.py diff --git a/qa/rpc-tests/wallet-accounts.py b/test/functional/wallet-accounts.py index ea12d4ec22..ea12d4ec22 100755 --- a/qa/rpc-tests/wallet-accounts.py +++ b/test/functional/wallet-accounts.py diff --git a/qa/rpc-tests/wallet-dump.py b/test/functional/wallet-dump.py index b819b72b75..b819b72b75 100755 --- a/qa/rpc-tests/wallet-dump.py +++ b/test/functional/wallet-dump.py diff --git a/qa/rpc-tests/wallet-hd.py b/test/functional/wallet-hd.py index c40662dc3d..c40662dc3d 100755 --- a/qa/rpc-tests/wallet-hd.py +++ b/test/functional/wallet-hd.py diff --git a/qa/rpc-tests/wallet.py b/test/functional/wallet.py index 80f74fa108..80f74fa108 100755 --- a/qa/rpc-tests/wallet.py +++ b/test/functional/wallet.py diff --git a/qa/rpc-tests/walletbackup.py b/test/functional/walletbackup.py index af1718572f..af1718572f 100755 --- a/qa/rpc-tests/walletbackup.py +++ b/test/functional/walletbackup.py diff --git a/qa/rpc-tests/zapwallettxes.py b/test/functional/zapwallettxes.py index ce446e44a3..ce446e44a3 100755 --- a/qa/rpc-tests/zapwallettxes.py +++ b/test/functional/zapwallettxes.py diff --git a/qa/rpc-tests/zmq_test.py b/test/functional/zmq_test.py index e6f18b0b93..e6f18b0b93 100755 --- a/qa/rpc-tests/zmq_test.py +++ b/test/functional/zmq_test.py diff --git a/src/test/bctest.py b/test/util/bctest.py index c69f52afc3..dfe3a123d1 100644 --- a/src/test/bctest.py +++ b/test/util/bctest.py @@ -23,14 +23,14 @@ def parse_output(a, fmt): else: raise NotImplementedError("Don't know how to compare %s" % fmt) -def bctest(testDir, testObj, exeext): +def bctest(testDir, testObj, buildenv): """Runs a single test, comparing output and RC to expected output and RC. Raises an error if input can't be read, executable fails, or output/RC are not as expected. Error is caught by bctester() and reported. """ # Get the exec names and arguments - execprog = testObj['exec'] + exeext + execprog = buildenv.BUILDDIR + "/src/" + testObj['exec'] + buildenv.exeext execargs = testObj['args'] execrun = [execprog] + execargs @@ -112,7 +112,7 @@ def bctester(testDir, input_basename, buildenv): for testObj in input_data: try: - bctest(testDir, testObj, buildenv.exeext) + bctest(testDir, testObj, buildenv) logging.info("PASSED: " + testObj["description"]) except: logging.info("FAILED: " + testObj["description"]) diff --git a/test/util/bitcoin-util-test.py b/test/util/bitcoin-util-test.py new file mode 100755 index 0000000000..e09a25159d --- /dev/null +++ b/test/util/bitcoin-util-test.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# Copyright 2014 BitPay Inc. +# Copyright 2016 The Bitcoin Core developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. +from __future__ import division,print_function,unicode_literals +import os +import sys +import argparse +import logging + +help_text="""Test framework for bitcoin utils. + +Runs automatically during `make check`. + +Can also be run manually.""" + +if __name__ == '__main__': + sys.path.append(os.path.dirname(os.path.abspath(__file__))) + import buildenv + import bctest + + parser = argparse.ArgumentParser(description=help_text) + parser.add_argument('-v', '--verbose', action='store_true') + args = parser.parse_args() + verbose = args.verbose + + if verbose: + level = logging.DEBUG + else: + level = logging.ERROR + formatter = '%(asctime)s - %(levelname)s - %(message)s' + # Add the format/level to the logger + logging.basicConfig(format = formatter, level=level) + + bctest.bctester(buildenv.SRCDIR + "/test/util/data", "bitcoin-util-test.json", buildenv) diff --git a/test/util/buildenv.py.in b/test/util/buildenv.py.in new file mode 100644 index 0000000000..33030b0348 --- /dev/null +++ b/test/util/buildenv.py.in @@ -0,0 +1,4 @@ +#!/usr/bin/env python +exeext="@EXEEXT@" +SRCDIR="@abs_top_srcdir@" +BUILDDIR="@abs_top_builddir@" diff --git a/src/test/data/bitcoin-util-test.json b/test/util/data/bitcoin-util-test.json index a80ab51901..a80ab51901 100644 --- a/src/test/data/bitcoin-util-test.json +++ b/test/util/data/bitcoin-util-test.json diff --git a/src/test/data/blanktxv1.hex b/test/util/data/blanktxv1.hex index 36b6f00fb6..36b6f00fb6 100644 --- a/src/test/data/blanktxv1.hex +++ b/test/util/data/blanktxv1.hex diff --git a/src/test/data/blanktxv1.json b/test/util/data/blanktxv1.json index 51c25a5a98..51c25a5a98 100644 --- a/src/test/data/blanktxv1.json +++ b/test/util/data/blanktxv1.json diff --git a/src/test/data/blanktxv2.hex b/test/util/data/blanktxv2.hex index 22d830eda1..22d830eda1 100644 --- a/src/test/data/blanktxv2.hex +++ b/test/util/data/blanktxv2.hex diff --git a/src/test/data/blanktxv2.json b/test/util/data/blanktxv2.json index 266919f445..266919f445 100644 --- a/src/test/data/blanktxv2.json +++ b/test/util/data/blanktxv2.json diff --git a/src/test/data/tt-delin1-out.hex b/test/util/data/tt-delin1-out.hex index 42ad840f43..42ad840f43 100644 --- a/src/test/data/tt-delin1-out.hex +++ b/test/util/data/tt-delin1-out.hex diff --git a/src/test/data/tt-delin1-out.json b/test/util/data/tt-delin1-out.json index 712a2c27f8..712a2c27f8 100644 --- a/src/test/data/tt-delin1-out.json +++ b/test/util/data/tt-delin1-out.json diff --git a/src/test/data/tt-delout1-out.hex b/test/util/data/tt-delout1-out.hex index cc60c3fac6..cc60c3fac6 100644 --- a/src/test/data/tt-delout1-out.hex +++ b/test/util/data/tt-delout1-out.hex diff --git a/src/test/data/tt-delout1-out.json b/test/util/data/tt-delout1-out.json index afc4e95762..afc4e95762 100644 --- a/src/test/data/tt-delout1-out.json +++ b/test/util/data/tt-delout1-out.json diff --git a/src/test/data/tt-locktime317000-out.hex b/test/util/data/tt-locktime317000-out.hex index 287f420a40..287f420a40 100644 --- a/src/test/data/tt-locktime317000-out.hex +++ b/test/util/data/tt-locktime317000-out.hex diff --git a/src/test/data/tt-locktime317000-out.json b/test/util/data/tt-locktime317000-out.json index 2b9075f8ac..2b9075f8ac 100644 --- a/src/test/data/tt-locktime317000-out.json +++ b/test/util/data/tt-locktime317000-out.json diff --git a/src/test/data/tx394b54bb.hex b/test/util/data/tx394b54bb.hex index 33f26cb4d6..33f26cb4d6 100644 --- a/src/test/data/tx394b54bb.hex +++ b/test/util/data/tx394b54bb.hex diff --git a/src/test/data/txcreate1.hex b/test/util/data/txcreate1.hex index 9ec6ee3531..9ec6ee3531 100644 --- a/src/test/data/txcreate1.hex +++ b/test/util/data/txcreate1.hex diff --git a/src/test/data/txcreate1.json b/test/util/data/txcreate1.json index f83e036f33..f83e036f33 100644 --- a/src/test/data/txcreate1.json +++ b/test/util/data/txcreate1.json diff --git a/src/test/data/txcreate2.hex b/test/util/data/txcreate2.hex index 38bb7b1046..38bb7b1046 100644 --- a/src/test/data/txcreate2.hex +++ b/test/util/data/txcreate2.hex diff --git a/src/test/data/txcreate2.json b/test/util/data/txcreate2.json index fb5e177db7..fb5e177db7 100644 --- a/src/test/data/txcreate2.json +++ b/test/util/data/txcreate2.json diff --git a/src/test/data/txcreatedata1.hex b/test/util/data/txcreatedata1.hex index cefd1a05a6..cefd1a05a6 100644 --- a/src/test/data/txcreatedata1.hex +++ b/test/util/data/txcreatedata1.hex diff --git a/src/test/data/txcreatedata1.json b/test/util/data/txcreatedata1.json index 760518d30a..760518d30a 100644 --- a/src/test/data/txcreatedata1.json +++ b/test/util/data/txcreatedata1.json diff --git a/src/test/data/txcreatedata2.hex b/test/util/data/txcreatedata2.hex index d69cf58ba1..d69cf58ba1 100644 --- a/src/test/data/txcreatedata2.hex +++ b/test/util/data/txcreatedata2.hex diff --git a/src/test/data/txcreatedata2.json b/test/util/data/txcreatedata2.json index 3c6da40f90..3c6da40f90 100644 --- a/src/test/data/txcreatedata2.json +++ b/test/util/data/txcreatedata2.json diff --git a/src/test/data/txcreatedata_seq0.hex b/test/util/data/txcreatedata_seq0.hex index 54b89d2381..54b89d2381 100644 --- a/src/test/data/txcreatedata_seq0.hex +++ b/test/util/data/txcreatedata_seq0.hex diff --git a/src/test/data/txcreatedata_seq0.json b/test/util/data/txcreatedata_seq0.json index d272a4c447..d272a4c447 100644 --- a/src/test/data/txcreatedata_seq0.json +++ b/test/util/data/txcreatedata_seq0.json diff --git a/src/test/data/txcreatedata_seq1.hex b/test/util/data/txcreatedata_seq1.hex index 4cedcd975c..4cedcd975c 100644 --- a/src/test/data/txcreatedata_seq1.hex +++ b/test/util/data/txcreatedata_seq1.hex diff --git a/src/test/data/txcreatedata_seq1.json b/test/util/data/txcreatedata_seq1.json index d323255418..d323255418 100644 --- a/src/test/data/txcreatedata_seq1.json +++ b/test/util/data/txcreatedata_seq1.json diff --git a/src/test/data/txcreatemultisig1.hex b/test/util/data/txcreatemultisig1.hex index 9c00004d38..9c00004d38 100644 --- a/src/test/data/txcreatemultisig1.hex +++ b/test/util/data/txcreatemultisig1.hex diff --git a/src/test/data/txcreatemultisig1.json b/test/util/data/txcreatemultisig1.json index f6ce43c202..f6ce43c202 100644 --- a/src/test/data/txcreatemultisig1.json +++ b/test/util/data/txcreatemultisig1.json diff --git a/src/test/data/txcreatemultisig2.hex b/test/util/data/txcreatemultisig2.hex index 07835c54d3..07835c54d3 100644 --- a/src/test/data/txcreatemultisig2.hex +++ b/test/util/data/txcreatemultisig2.hex diff --git a/src/test/data/txcreatemultisig2.json b/test/util/data/txcreatemultisig2.json index e09d22060f..e09d22060f 100644 --- a/src/test/data/txcreatemultisig2.json +++ b/test/util/data/txcreatemultisig2.json diff --git a/src/test/data/txcreatemultisig3.hex b/test/util/data/txcreatemultisig3.hex index 8d34f28f87..8d34f28f87 100644 --- a/src/test/data/txcreatemultisig3.hex +++ b/test/util/data/txcreatemultisig3.hex diff --git a/src/test/data/txcreatemultisig3.json b/test/util/data/txcreatemultisig3.json index 88e32bd310..88e32bd310 100644 --- a/src/test/data/txcreatemultisig3.json +++ b/test/util/data/txcreatemultisig3.json diff --git a/src/test/data/txcreatemultisig4.hex b/test/util/data/txcreatemultisig4.hex index 7da54366c7..7da54366c7 100644 --- a/src/test/data/txcreatemultisig4.hex +++ b/test/util/data/txcreatemultisig4.hex diff --git a/src/test/data/txcreatemultisig4.json b/test/util/data/txcreatemultisig4.json index fc69c7269c..fc69c7269c 100644 --- a/src/test/data/txcreatemultisig4.json +++ b/test/util/data/txcreatemultisig4.json diff --git a/src/test/data/txcreateoutpubkey1.hex b/test/util/data/txcreateoutpubkey1.hex index 4a08244b2f..4a08244b2f 100644 --- a/src/test/data/txcreateoutpubkey1.hex +++ b/test/util/data/txcreateoutpubkey1.hex diff --git a/src/test/data/txcreateoutpubkey1.json b/test/util/data/txcreateoutpubkey1.json index 6019fa2dcd..6019fa2dcd 100644 --- a/src/test/data/txcreateoutpubkey1.json +++ b/test/util/data/txcreateoutpubkey1.json diff --git a/src/test/data/txcreateoutpubkey2.hex b/test/util/data/txcreateoutpubkey2.hex index 8283c722ab..8283c722ab 100644 --- a/src/test/data/txcreateoutpubkey2.hex +++ b/test/util/data/txcreateoutpubkey2.hex diff --git a/src/test/data/txcreateoutpubkey2.json b/test/util/data/txcreateoutpubkey2.json index 6fc3d57527..6fc3d57527 100644 --- a/src/test/data/txcreateoutpubkey2.json +++ b/test/util/data/txcreateoutpubkey2.json diff --git a/src/test/data/txcreateoutpubkey3.hex b/test/util/data/txcreateoutpubkey3.hex index 84adff4d89..84adff4d89 100644 --- a/src/test/data/txcreateoutpubkey3.hex +++ b/test/util/data/txcreateoutpubkey3.hex diff --git a/src/test/data/txcreateoutpubkey3.json b/test/util/data/txcreateoutpubkey3.json index a1a25fc834..a1a25fc834 100644 --- a/src/test/data/txcreateoutpubkey3.json +++ b/test/util/data/txcreateoutpubkey3.json diff --git a/src/test/data/txcreatescript1.hex b/test/util/data/txcreatescript1.hex index 0adce270fb..0adce270fb 100644 --- a/src/test/data/txcreatescript1.hex +++ b/test/util/data/txcreatescript1.hex diff --git a/src/test/data/txcreatescript1.json b/test/util/data/txcreatescript1.json index 8ffecba411..8ffecba411 100644 --- a/src/test/data/txcreatescript1.json +++ b/test/util/data/txcreatescript1.json diff --git a/src/test/data/txcreatescript2.hex b/test/util/data/txcreatescript2.hex index 5afe8786e3..5afe8786e3 100644 --- a/src/test/data/txcreatescript2.hex +++ b/test/util/data/txcreatescript2.hex diff --git a/src/test/data/txcreatescript2.json b/test/util/data/txcreatescript2.json index 41eb69f1af..41eb69f1af 100644 --- a/src/test/data/txcreatescript2.json +++ b/test/util/data/txcreatescript2.json diff --git a/src/test/data/txcreatescript3.hex b/test/util/data/txcreatescript3.hex index 8a2b973bf0..8a2b973bf0 100644 --- a/src/test/data/txcreatescript3.hex +++ b/test/util/data/txcreatescript3.hex diff --git a/src/test/data/txcreatescript3.json b/test/util/data/txcreatescript3.json index 90e7e27f9f..90e7e27f9f 100644 --- a/src/test/data/txcreatescript3.json +++ b/test/util/data/txcreatescript3.json diff --git a/src/test/data/txcreatescript4.hex b/test/util/data/txcreatescript4.hex index b4cfe58f42..b4cfe58f42 100644 --- a/src/test/data/txcreatescript4.hex +++ b/test/util/data/txcreatescript4.hex diff --git a/src/test/data/txcreatescript4.json b/test/util/data/txcreatescript4.json index 11783751a4..11783751a4 100644 --- a/src/test/data/txcreatescript4.json +++ b/test/util/data/txcreatescript4.json diff --git a/src/test/data/txcreatesignv1.hex b/test/util/data/txcreatesignv1.hex index a46fcc88cb..a46fcc88cb 100644 --- a/src/test/data/txcreatesignv1.hex +++ b/test/util/data/txcreatesignv1.hex diff --git a/src/test/data/txcreatesignv1.json b/test/util/data/txcreatesignv1.json index ff39e71b40..ff39e71b40 100644 --- a/src/test/data/txcreatesignv1.json +++ b/test/util/data/txcreatesignv1.json diff --git a/src/test/data/txcreatesignv2.hex b/test/util/data/txcreatesignv2.hex index ee425cd98c..ee425cd98c 100644 --- a/src/test/data/txcreatesignv2.hex +++ b/test/util/data/txcreatesignv2.hex |