Skip to content

Windows: fix CI deps (8.6 dev tip → vs17/8.5 series) + test portability#87

Merged
EdmondDantes merged 2 commits into
mainfrom
windows-test-portability
Jun 5, 2026
Merged

Windows: fix CI deps (8.6 dev tip → vs17/8.5 series) + test portability#87
EdmondDantes merged 2 commits into
mainfrom
windows-test-portability

Conversation

@EdmondDantes
Copy link
Copy Markdown
Contributor

@EdmondDantes EdmondDantes commented Jun 5, 2026

Three Windows fixes surfaced while running the server phpt suite on Windows. The first is a CI-infra fix; the other two are test-only.

1. CI: build the 8.6 dev tip against the vs17 / 8.5 deps series

WINDOWS_X64_ZTS_RELEASE started failing on every PR with:

SDK\Exception: The passed CRT 'vs17' doesn't match any available for branch '8.6'

Root cause (verified against downloads.php.net/~windows/php-sdk/deps/series/): php.net now publishes the dev tip (branches 8.6 and master) only for the vs18 / VS 2026 toolchain. The newest series that still carries vs17 deps is 8.5. The windows-2022 runner is vs17, and find-target-branch.bat derived the series as 8.<minor> (→ 8.6) with a stale 8.5 → master remap, so it asked for 8.6/master under vs17 → no match.

Fix: pin the deps series to 8.5. The vs17 libs (openssl, libxml2, …) build the 8.6 tip fine — the series tracks the toolchain, not the PHP minor (vs17 builds 8.6 locally). Documented to bump to 8.6 once php.net publishes packages-8.6-vs17-*, or to move the runner + PHP_BUILD_CRT to vs18.

2. static/016-static-handler-validation — split by OS

Validation is correct on Windows, but the test hard-coded POSIX path semantics in 3 spots. Split: 016 (all OS) keeps OS-agnostic checks (absolute temp path for missing-root, drive-letter-aware happy-path); 016-…-posix (new, SKIPIF non-Windows) holds the /-root rejection and leading-slash-is-absolute cases. No %s muting.

3. compression/010, 012, 030, 070 — skip on Windows

They verify gzip via proc_open of a POSIX gzip/gunzip CLI, which pipe-deadlocks against the Git-for-Windows binaries. Now skip on Windows with a documented reason (were BORK: SKIPIF used the bash builtin command -v). Still run on POSIX CI.

Verification

  • Linux ×2, macOS ×2, Fuzz ×2, Native deps: pass (validate the test changes).
  • The CI deps fix is verified by this PR's own Windows re-run.

… Windows

static/016-static-handler-validation: split OS-agnostic argument/setter
validation (runs everywhere) from the POSIX-only filesystem-root cases. The
"/"-as-root rejection and leading-slash-is-absolute semantics move to a new
016-...-posix companion (SKIPIF non-Windows). The cross-platform test feeds an
absolute temp path for the missing-root case and accepts a drive-letter root in
the happy path. Product behaviour is already correct on Windows — this only
makes the test platform-aware (no %s muting; coverage preserved on both).

compression/010,012,030,070: these verify gzip by piping the response through a
POSIX gzip/gunzip CLI via proc_open, which pipe-deadlocks against the
Git-for-Windows binaries. Skip on Windows with a documented reason. Previously
they BORKed because the SKIPIF probed with the bash builtin `command -v`, which
isn't a cmd.exe command, so the SKIPIF emitted invalid output. Still run on
POSIX CI.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 5, 2026

Coverage

Total lines: 81.14% → 81.14% (+0.00 pp)

No per-file changes.

@EdmondDantes EdmondDantes changed the title test(windows): split static/016 + skip POSIX-CLI compression tests Windows test portability + fix CI deps resolution for the 8.6 dev tip Jun 5, 2026
WINDOWS_X64_ZTS_RELEASE failed resolving SDK dependencies:

  SDK\Exception: The passed CRT 'vs17' doesn't match any available
  for branch '8.6'

php.net's deps server now ships the dev tip (branches "8.6" and
"master") only for the vs18 / VS 2026 toolchain; the newest series that
still carries vs17 deps is 8.5. The windows-2022 runner is vs17, so the
8.6 dev tip must build against the 8.5 vs17 dep series -- the libs
(openssl, libxml2, ...) track the toolchain, not the PHP minor, and vs17
builds 8.6 fine locally.

find-target-branch.bat previously derived "8.<minor>" from
php_version.h and remapped a hardcoded "8.5" -> "master"; that broke
when php-src bumped to 8.6 and the dev-tip deps moved to vs18. Pin the
series to 8.5 (with a note to bump or move to vs18 later).
@EdmondDantes EdmondDantes force-pushed the windows-test-portability branch from f3c7f04 to 46391f7 Compare June 5, 2026 10:10
@EdmondDantes EdmondDantes changed the title Windows test portability + fix CI deps resolution for the 8.6 dev tip Windows: fix CI deps (8.6 dev tip → vs17/8.5 series) + test portability Jun 5, 2026
@EdmondDantes EdmondDantes merged commit 391d80a into main Jun 5, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant