ci: [refactor] Use pathlib over os.path
What changed, and why it matters
This commit is a minor code cleanup in a Windows CI (continuous integration) helper script. It replaces older-style file path construction with a newer Python standard library approach. There is no security-relevant change and no user-facing behavior change.
No action required. This is a non-security refactor.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff refactors .github/ci-windows.py to use pathlib.Path instead of os.path.join/os.getcwd() for building filesystem paths. All resulting paths remain semantically identical (current working directory + relative subdirectories). The script is part of the GitHub Actions CI pipeline for Windows builds/tests and does not touch consensus, networking, wallet, or RPC code.
Changed components
.github/ci-windows.pyInspect captured patch +10 / −10
diff --git a/.github/ci-windows.py b/.github/ci-windows.py
index cbb5b27f..ebf326b5 100755
--- a/.github/ci-windows.py
+++ b/.github/ci-windows.py
@@ -106,7 +106,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.getcwd(), "qa-assets")
+ repo_dir = str(Path.cwd() / "qa-assets")
clone_cmd = [
"git",
"clone",
@@ -120,9 +120,9 @@ def prepare_tests(ci_type):
def run_tests(ci_type):
- build_dir = "build"
+ build_dir = Path.cwd() / "build"
num_procs = str(os.process_cpu_count())
- release_bin = os.path.join(os.getcwd(), build_dir, "bin", "Release")
+ release_bin = build_dir / "bin" / "Release"
if ci_type == "standard":
test_envs = {
@@ -136,12 +136,12 @@ def run_tests(ci_type):
"BITCOINCHAINSTATE": "bitcoin-chainstate.exe",
}
for var, exe in test_envs.items():
- os.environ[var] = os.path.join(release_bin, exe)
+ os.environ[var] = str(release_bin / exe)
ctest_cmd = [
"ctest",
"--test-dir",
- build_dir,
+ str(build_dir),
"--output-on-failure",
"--stop-on-failure",
"-j",
@@ -153,26 +153,26 @@ def run_tests(ci_type):
test_cmd = [
sys.executable,
- os.path.join(build_dir, "test", "functional", "test_runner.py"),
+ str(build_dir / "test" / "functional" / "test_runner.py"),
"--jobs",
num_procs,
"--quiet",
- f"--tmpdirprefix={os.getcwd()}",
+ f"--tmpdirprefix={Path.cwd()}",
"--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")
+ os.environ["BITCOINFUZZ"] = str(release_bin / "fuzz.exe")
fuzz_cmd = [
sys.executable,
- os.path.join(build_dir, "test", "fuzz", "test_runner.py"),
+ str(build_dir / "test" / "fuzz" / "test_runner.py"),
"--par",
num_procs,
"--loglevel",
"DEBUG",
- os.path.join(os.getcwd(), "qa-assets", "fuzz_corpora"),
+ str(Path.cwd() / "qa-assets" / "fuzz_corpora"),
]
run(fuzz_cmd)
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.