Merge #15943: tests: Fail if RPC has been added without tests
fad0ce59e9
tests: Fail if RPC has been added without tests (MarcoFalke) Pull request description: Need to be run with --coverage ACKs for commit fad0ce: ryanofsky: utACKfad0ce59e9
. New comment in travis.yml is the only change since last review. Tree-SHA512: b53632dfe9865ec06991bfcba2fd67238bebbb866b355f09624eaf233257b2bca902caac6c24abb358b2f4c1c43f28ca75e30982765911e1a117102df65276d9
This commit is contained in:
commit
9d266dbdec
4 changed files with 16 additions and 3 deletions
|
@ -121,6 +121,7 @@ jobs:
|
||||||
HOST=x86_64-unknown-linux-gnu
|
HOST=x86_64-unknown-linux-gnu
|
||||||
PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools protobuf-compiler libdbus-1-dev libharfbuzz-dev libprotobuf-dev"
|
PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools protobuf-compiler libdbus-1-dev libharfbuzz-dev libprotobuf-dev"
|
||||||
DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1 ALLOW_HOST_PACKAGES=1"
|
DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1 ALLOW_HOST_PACKAGES=1"
|
||||||
|
TEST_RUNNER_EXTRA="--coverage --extended --exclude feature_dbcrash" # Run extended tests so that coverage does not fail, but exclude the very slow dbcrash
|
||||||
GOAL="install"
|
GOAL="install"
|
||||||
BITCOIN_CONFIG="--enable-zmq --with-gui=qt5 --enable-glibc-back-compat --enable-reduce-exports --enable-debug CXXFLAGS=\"-g0 -O2\""
|
BITCOIN_CONFIG="--enable-zmq --with-gui=qt5 --enable-glibc-back-compat --enable-reduce-exports --enable-debug CXXFLAGS=\"-g0 -O2\""
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ fi
|
||||||
|
|
||||||
if [ "$RUN_FUNCTIONAL_TESTS" = "true" ]; then
|
if [ "$RUN_FUNCTIONAL_TESTS" = "true" ]; then
|
||||||
BEGIN_FOLD functional-tests
|
BEGIN_FOLD functional-tests
|
||||||
DOCKER_EXEC test/functional/test_runner.py --ci --combinedlogslen=4000 --coverage --quiet --failfast
|
DOCKER_EXEC test/functional/test_runner.py --ci --combinedlogslen=4000 ${TEST_RUNNER_EXTRA} --quiet --failfast
|
||||||
END_FOLD
|
END_FOLD
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -46,5 +46,13 @@ class RpcMiscTest(BitcoinTestFramework):
|
||||||
|
|
||||||
assert_raises_rpc_error(-8, "unknown mode foobar", node.getmemoryinfo, mode="foobar")
|
assert_raises_rpc_error(-8, "unknown mode foobar", node.getmemoryinfo, mode="foobar")
|
||||||
|
|
||||||
|
self.log.info("test logging")
|
||||||
|
assert_equal(node.logging()['qt'], True)
|
||||||
|
node.logging(exclude=['qt'])
|
||||||
|
assert_equal(node.logging()['qt'], False)
|
||||||
|
node.logging(include=['qt'])
|
||||||
|
assert_equal(node.logging()['qt'], True)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
RpcMiscTest().main()
|
RpcMiscTest().main()
|
||||||
|
|
|
@ -401,16 +401,18 @@ def run_tests(*, test_list, src_dir, build_dir, tmpdir, jobs=1, enable_coverage=
|
||||||
print_results(test_results, max_len_name, (int(time.time() - start_time)))
|
print_results(test_results, max_len_name, (int(time.time() - start_time)))
|
||||||
|
|
||||||
if coverage:
|
if coverage:
|
||||||
coverage.report_rpc_coverage()
|
coverage_passed = coverage.report_rpc_coverage()
|
||||||
|
|
||||||
logging.debug("Cleaning up coverage data")
|
logging.debug("Cleaning up coverage data")
|
||||||
coverage.cleanup()
|
coverage.cleanup()
|
||||||
|
else:
|
||||||
|
coverage_passed = True
|
||||||
|
|
||||||
# Clear up the temp directory if all subdirectories are gone
|
# Clear up the temp directory if all subdirectories are gone
|
||||||
if not os.listdir(tmpdir):
|
if not os.listdir(tmpdir):
|
||||||
os.rmdir(tmpdir)
|
os.rmdir(tmpdir)
|
||||||
|
|
||||||
all_passed = all(map(lambda test_result: test_result.was_successful, test_results))
|
all_passed = all(map(lambda test_result: test_result.was_successful, test_results)) and coverage_passed
|
||||||
|
|
||||||
# This will be a no-op unless failfast is True in which case there may be dangling
|
# This will be a no-op unless failfast is True in which case there may be dangling
|
||||||
# processes which need to be killed.
|
# processes which need to be killed.
|
||||||
|
@ -612,8 +614,10 @@ class RPCCoverage():
|
||||||
if uncovered:
|
if uncovered:
|
||||||
print("Uncovered RPC commands:")
|
print("Uncovered RPC commands:")
|
||||||
print("".join((" - %s\n" % command) for command in sorted(uncovered)))
|
print("".join((" - %s\n" % command) for command in sorted(uncovered)))
|
||||||
|
return False
|
||||||
else:
|
else:
|
||||||
print("All RPC commands covered.")
|
print("All RPC commands covered.")
|
||||||
|
return True
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
return shutil.rmtree(self.dir)
|
return shutil.rmtree(self.dir)
|
||||||
|
|
Loading…
Add table
Reference in a new issue