mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-02-24 00:06:09 +01:00
ci: Add run_tests step to ci-windows.py
This is mostly a refactor, except for using the runner workspace (cwd) for: * fuzz qa-assets * functional temp prefix This makes it easier to run the ci-windows.py locally.
This commit is contained in:
63
.github/ci-windows.py
vendored
63
.github/ci-windows.py
vendored
@@ -73,7 +73,7 @@ def prepare_tests(ci_type):
|
||||
if ci_type == "standard":
|
||||
run([sys.executable, "-m", "pip", "install", "pyzmq"])
|
||||
elif ci_type == "fuzz":
|
||||
repo_dir = os.path.join(os.environ["RUNNER_TEMP"], "qa-assets")
|
||||
repo_dir = os.path.join(os.getcwd(), "qa-assets")
|
||||
clone_cmd = [
|
||||
"git",
|
||||
"clone",
|
||||
@@ -86,6 +86,64 @@ def prepare_tests(ci_type):
|
||||
run(["git", "-C", repo_dir, "log", "-1"])
|
||||
|
||||
|
||||
def run_tests(ci_type):
|
||||
build_dir = "build"
|
||||
num_procs = str(os.process_cpu_count())
|
||||
release_bin = os.path.join(os.getcwd(), build_dir, "bin", "Release")
|
||||
|
||||
if ci_type == "standard":
|
||||
test_envs = {
|
||||
"BITCOIN_BIN": "bitcoin.exe",
|
||||
"BITCOIND": "bitcoind.exe",
|
||||
"BITCOINCLI": "bitcoin-cli.exe",
|
||||
"BITCOIN_BENCH": "bench_bitcoin.exe",
|
||||
"BITCOINTX": "bitcoin-tx.exe",
|
||||
"BITCOINUTIL": "bitcoin-util.exe",
|
||||
"BITCOINWALLET": "bitcoin-wallet.exe",
|
||||
"BITCOINCHAINSTATE": "bitcoin-chainstate.exe",
|
||||
}
|
||||
for var, exe in test_envs.items():
|
||||
os.environ[var] = os.path.join(release_bin, exe)
|
||||
|
||||
ctest_cmd = [
|
||||
"ctest",
|
||||
"--test-dir",
|
||||
build_dir,
|
||||
"--output-on-failure",
|
||||
"--stop-on-failure",
|
||||
"-j",
|
||||
num_procs,
|
||||
"--build-config",
|
||||
"Release",
|
||||
]
|
||||
run(ctest_cmd)
|
||||
|
||||
test_cmd = [
|
||||
sys.executable,
|
||||
os.path.join(build_dir, "test", "functional", "test_runner.py"),
|
||||
"--jobs",
|
||||
num_procs,
|
||||
"--quiet",
|
||||
f"--tmpdirprefix={os.getcwd()}",
|
||||
"--combinedlogslen=99999999",
|
||||
*shlex.split(os.environ.get("TEST_RUNNER_EXTRA", "").strip()),
|
||||
]
|
||||
run(test_cmd)
|
||||
|
||||
elif ci_type == "fuzz":
|
||||
os.environ["BITCOINFUZZ"] = os.path.join(release_bin, "fuzz.exe")
|
||||
fuzz_cmd = [
|
||||
sys.executable,
|
||||
os.path.join(build_dir, "test", "fuzz", "test_runner.py"),
|
||||
"--par",
|
||||
num_procs,
|
||||
"--loglevel",
|
||||
"DEBUG",
|
||||
os.path.join(os.getcwd(), "qa-assets", "fuzz_corpora"),
|
||||
]
|
||||
run(fuzz_cmd)
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Utility to run Windows CI steps.")
|
||||
parser.add_argument("ci_type", choices=GENERATE_OPTIONS, help="CI type to run.")
|
||||
@@ -93,6 +151,7 @@ def main():
|
||||
"generate",
|
||||
"build",
|
||||
"prepare_tests",
|
||||
"run_tests",
|
||||
]
|
||||
parser.add_argument("step", choices=steps, help="CI step to perform.")
|
||||
args = parser.parse_args()
|
||||
@@ -103,6 +162,8 @@ def main():
|
||||
build()
|
||||
elif args.step == "prepare_tests":
|
||||
prepare_tests(args.ci_type)
|
||||
elif args.step == "run_tests":
|
||||
run_tests(args.ci_type)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
30
.github/workflows/ci.yml
vendored
30
.github/workflows/ci.yml
vendored
@@ -304,39 +304,15 @@ jobs:
|
||||
& mt.exe -nologo -inputresource:$_.FullName -validate_manifest
|
||||
}
|
||||
|
||||
- name: Run test suite
|
||||
if: matrix.job-type == 'standard'
|
||||
working-directory: build
|
||||
run: |
|
||||
ctest --output-on-failure --stop-on-failure -j $NUMBER_OF_PROCESSORS -C Release
|
||||
|
||||
- name: Prepare tests
|
||||
run: |
|
||||
py -3 .github/ci-windows.py ${{ matrix.job-type }} prepare_tests
|
||||
|
||||
- name: Run functional tests
|
||||
if: matrix.job-type == 'standard'
|
||||
working-directory: build
|
||||
- name: Run tests
|
||||
env:
|
||||
BITCOIN_BIN: '${{ github.workspace }}\build\bin\Release\bitcoin.exe'
|
||||
BITCOIND: '${{ github.workspace }}\build\bin\Release\bitcoind.exe'
|
||||
BITCOINCLI: '${{ github.workspace }}\build\bin\Release\bitcoin-cli.exe'
|
||||
BITCOIN_BENCH: '${{ github.workspace }}\build\bin\Release\bench_bitcoin.exe'
|
||||
BITCOINTX: '${{ github.workspace }}\build\bin\Release\bitcoin-tx.exe'
|
||||
BITCOINUTIL: '${{ github.workspace }}\build\bin\Release\bitcoin-util.exe'
|
||||
BITCOINWALLET: '${{ github.workspace }}\build\bin\Release\bitcoin-wallet.exe'
|
||||
BITCOINCHAINSTATE: '${{ github.workspace }}\build\bin\Release\bitcoin-chainstate.exe'
|
||||
TEST_RUNNER_EXTRA: ${{ github.event_name != 'pull_request' && '--extended' || '' }}
|
||||
TEST_RUNNER_EXTRA: "--timeout-factor=${{ env.TEST_RUNNER_TIMEOUT_FACTOR }} ${{ case(github.event_name == 'pull_request', '', '--extended') }}"
|
||||
run: |
|
||||
py -3 test/functional/test_runner.py --jobs $NUMBER_OF_PROCESSORS --quiet --tmpdirprefix="${RUNNER_TEMP}" --combinedlogslen=99999999 --timeout-factor=${TEST_RUNNER_TIMEOUT_FACTOR} ${TEST_RUNNER_EXTRA}
|
||||
|
||||
- name: Run fuzz tests
|
||||
if: matrix.job-type == 'fuzz'
|
||||
working-directory: build
|
||||
env:
|
||||
BITCOINFUZZ: '${{ github.workspace }}\build\bin\Release\fuzz.exe'
|
||||
run: |
|
||||
py -3 test/fuzz/test_runner.py --par $NUMBER_OF_PROCESSORS --loglevel DEBUG "${RUNNER_TEMP}/qa-assets/fuzz_corpora"
|
||||
py -3 .github/ci-windows.py ${{ matrix.job-type }} run_tests
|
||||
|
||||
record-frozen-commit:
|
||||
# Record frozen commit, so that the native tests on cross-builds can run on
|
||||
|
||||
Reference in New Issue
Block a user