Merge bitcoin/bitcoin#34168: qa: Require --exclude for each excluded test
c5825d4b7fqa: Require `--exclude` for each excluded test (Hennadii Stepanov) Pull request description: This PR allows a long `--exclude ...` argument in the `test/functional/test_runner.py` invocation to be split across multiple lines, with optional per-line explanatory comments. I found this useful for the CI scripts in https://github.com/hebasto/bitcoin-core-nightly. ACKs for top commit: l0rinc: tested ACKc5825d4b7fmaflcko: review ACKc5825d4b7f🛄 achow101: ACKc5825d4b7frkrux: ACKc5825d4b7fTree-SHA512: bcf42848516197978b65df8a8bc68e036a62c9afc6158274eac74a325dc01991eb063a042f940c53ea15a7feb18d4bdfc45d8c71f0ef20c76140b12e07ba3ac5
This commit is contained in:
4 files changed
+19
-10
No files matched your search
@@ -499,11 +499,13 @@ jobs:
|
|||||||
|
|
||||||
- name: Run functional tests
|
- name: Run functional tests
|
||||||
env:
|
env:
|
||||||
# TODO: Fix the excluded test and re-enable it.
|
|
||||||
# feature_unsupported_utxo_db.py fails on windows because of emojis in the test data directory
|
|
||||||
EXCLUDE: '--exclude wallet_multiwallet.py,feature_unsupported_utxo_db.py'
|
|
||||||
TEST_RUNNER_EXTRA: ${{ github.event_name != 'pull_request' && '--extended' || '' }}
|
TEST_RUNNER_EXTRA: ${{ github.event_name != 'pull_request' && '--extended' || '' }}
|
||||||
run: py -3 test/functional/test_runner.py --jobs $NUMBER_OF_PROCESSORS --ci --quiet --tmpdirprefix="$RUNNER_TEMP" --combinedlogslen=99999999 --timeout-factor=$TEST_RUNNER_TIMEOUT_FACTOR $EXCLUDE $TEST_RUNNER_EXTRA
|
run: |
|
||||||
|
py -3 test/functional/test_runner.py --jobs $NUMBER_OF_PROCESSORS --ci --quiet --tmpdirprefix="$RUNNER_TEMP" --combinedlogslen=99999999 --timeout-factor=$TEST_RUNNER_TIMEOUT_FACTOR $TEST_RUNNER_EXTRA \
|
||||||
|
`# feature_unsupported_utxo_db.py fails on Windows because of emojis in the test data directory.` \
|
||||||
|
--exclude feature_unsupported_utxo_db.py \
|
||||||
|
`# See https://github.com/bitcoin/bitcoin/issues/31409.` \
|
||||||
|
--exclude wallet_multiwallet.py
|
||||||
|
|
||||||
ci-matrix:
|
ci-matrix:
|
||||||
name: ${{ matrix.name }}
|
name: ${{ matrix.name }}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export PIP_PACKAGES="--break-system-packages pycapnp"
|
|||||||
export USE_VALGRIND=1
|
export USE_VALGRIND=1
|
||||||
export NO_DEPENDS=1
|
export NO_DEPENDS=1
|
||||||
# bind tests excluded for now, see https://github.com/bitcoin/bitcoin/issues/17765#issuecomment-602068547
|
# bind tests excluded for now, see https://github.com/bitcoin/bitcoin/issues/17765#issuecomment-602068547
|
||||||
export TEST_RUNNER_EXTRA="--exclude rpc_bind,feature_bind_extra"
|
export TEST_RUNNER_EXTRA="--exclude rpc_bind --exclude feature_bind_extra"
|
||||||
export GOAL="install"
|
export GOAL="install"
|
||||||
# TODO enable GUI
|
# TODO enable GUI
|
||||||
export BITCOIN_CONFIG="\
|
export BITCOIN_CONFIG="\
|
||||||
|
|||||||
@@ -11,7 +11,8 @@ export PACKAGES="python3-zmq"
|
|||||||
export CONTAINER_NAME=ci_s390x
|
export CONTAINER_NAME=ci_s390x
|
||||||
export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04"
|
export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04"
|
||||||
export CI_IMAGE_PLATFORM="linux/s390x"
|
export CI_IMAGE_PLATFORM="linux/s390x"
|
||||||
export TEST_RUNNER_EXTRA="--exclude rpc_bind,feature_bind_extra" # Excluded for now, see https://github.com/bitcoin/bitcoin/issues/17765#issuecomment-602068547
|
# bind tests excluded for now, see https://github.com/bitcoin/bitcoin/issues/17765#issuecomment-602068547
|
||||||
|
export TEST_RUNNER_EXTRA="--exclude rpc_bind --exclude feature_bind_extra"
|
||||||
export RUN_FUNCTIONAL_TESTS=true
|
export RUN_FUNCTIONAL_TESTS=true
|
||||||
export GOAL="install"
|
export GOAL="install"
|
||||||
export BITCOIN_CONFIG="\
|
export BITCOIN_CONFIG="\
|
||||||
|
|||||||
@@ -411,7 +411,7 @@ def main():
|
|||||||
parser.add_argument('--combinedlogslen', '-c', type=int, default=0, metavar='n', help='On failure, print a log (of length n lines) to the console, combined from the test framework and all test nodes.')
|
parser.add_argument('--combinedlogslen', '-c', type=int, default=0, metavar='n', help='On failure, print a log (of length n lines) to the console, combined from the test framework and all test nodes.')
|
||||||
parser.add_argument('--coverage', action='store_true', help='generate a basic coverage report for the RPC interface')
|
parser.add_argument('--coverage', action='store_true', help='generate a basic coverage report for the RPC interface')
|
||||||
parser.add_argument('--ci', action='store_true', help='Run checks and code that are usually only enabled in a continuous integration environment')
|
parser.add_argument('--ci', action='store_true', help='Run checks and code that are usually only enabled in a continuous integration environment')
|
||||||
parser.add_argument('--exclude', '-x', help='specify a comma-separated-list of scripts to exclude.')
|
parser.add_argument('--exclude', '-x', action='append', help='specify a script to exclude. Can be specified multiple times. The .py extension is optional.')
|
||||||
parser.add_argument('--extended', action='store_true', help='run the extended test suite in addition to the basic tests')
|
parser.add_argument('--extended', action='store_true', help='run the extended test suite in addition to the basic tests')
|
||||||
parser.add_argument('--help', '-h', '-?', action='store_true', help='print help text and exit')
|
parser.add_argument('--help', '-h', '-?', action='store_true', help='print help text and exit')
|
||||||
parser.add_argument('--jobs', '-j', type=int, default=4, help='how many test scripts to run in parallel. Default=4.')
|
parser.add_argument('--jobs', '-j', type=int, default=4, help='how many test scripts to run in parallel. Default=4.')
|
||||||
@@ -506,7 +506,7 @@ def main():
|
|||||||
if args.exclude:
|
if args.exclude:
|
||||||
|
|
||||||
def print_warning_missing_test(test_name):
|
def print_warning_missing_test(test_name):
|
||||||
print("{}WARNING!{} Test '{}' not found in current test list. Check the --exclude list.".format(BOLD[1], BOLD[0], test_name))
|
print("{}WARNING!{} Test '{}' not found in current test list. Check the --exclude options.".format(BOLD[1], BOLD[0], test_name))
|
||||||
if fail_on_warn:
|
if fail_on_warn:
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
@@ -514,10 +514,16 @@ def main():
|
|||||||
if not exclude_list:
|
if not exclude_list:
|
||||||
print_warning_missing_test(exclude_test)
|
print_warning_missing_test(exclude_test)
|
||||||
for exclude_item in exclude_list:
|
for exclude_item in exclude_list:
|
||||||
|
print("Excluding %s" % exclude_item)
|
||||||
test_list.remove(exclude_item)
|
test_list.remove(exclude_item)
|
||||||
|
|
||||||
exclude_tests = [test.strip() for test in args.exclude.split(",")]
|
for exclude_test in args.exclude:
|
||||||
for exclude_test in exclude_tests:
|
if ',' in exclude_test:
|
||||||
|
print("{}WARNING!{} --exclude '{}' contains a comma. Use --exclude for each test.".format(BOLD[1], BOLD[0], exclude_test))
|
||||||
|
if fail_on_warn:
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
for exclude_test in args.exclude:
|
||||||
# A space in the name indicates it has arguments such as "rpc_bind.py --ipv4"
|
# A space in the name indicates it has arguments such as "rpc_bind.py --ipv4"
|
||||||
if ' ' in exclude_test:
|
if ' ' in exclude_test:
|
||||||
remove_tests([test for test in test_list if test.replace('.py', '') == exclude_test.replace('.py', '')])
|
remove_tests([test for test in test_list if test.replace('.py', '') == exclude_test.replace('.py', '')])
|
||||||
|
|||||||
Reference in new issue
Block a user