Problem
#68 lists web PHPT cases; several landed on master (web_redirect_302.phpt, web_request_merge.phpt, #634), but two edge cases are still missing:
- Malformed / duplicate query keys (
web_query_edge.phpt)
- Re-reading
$_GET after mutation in the same request (web_superglobal_reread.phpt)
Without them, parser regressions in lib/Web/Superglobals.php slip past ci-fast.sh.
Goal
Add PHPT fixtures under test/real/cases/ discovered by RealWorldTest (glob — no manual registry).
Implementation hints
| PHPT |
Env / script |
Assert |
web_query_edge.phpt |
QUERY_STRING=a=1&a=2&= |
Last-wins or Zend-documented behavior |
web_superglobal_reread.phpt |
Script mutates $_GET['x'] then reads again |
Consistent VM hashtable |
Copy --ENV-- structure from web_get.phpt. Runner: bin/vm.php (not host php).
Acceptance criteria
./script/ci-fast.sh --filter 'web_query_edge|web_superglobal_reread'
docker run --rm -v "$(pwd):/compiler" -w /compiler php-compiler:22.04-dev \
./script/ci-fast.sh --filter RealWorldTest
Dependencies
Verification
Local/Docker only — no GitHub Actions.
Links
Problem
#68 lists web PHPT cases; several landed on
master(web_redirect_302.phpt,web_request_merge.phpt, #634), but two edge cases are still missing:web_query_edge.phpt)$_GETafter mutation in the same request (web_superglobal_reread.phpt)Without them, parser regressions in
lib/Web/Superglobals.phpslip pastci-fast.sh.Goal
Add PHPT fixtures under
test/real/cases/discovered byRealWorldTest(glob — no manual registry).Implementation hints
web_query_edge.phptQUERY_STRING=a=1&a=2&=web_superglobal_reread.phpt$_GET['x']then reads againCopy
--ENV--structure fromweb_get.phpt. Runner:bin/vm.php(not hostphp).Acceptance criteria
Dependencies
Verification
Local/Docker only — no GitHub Actions.
Links
lib/Web/Superglobals.php, Testing: mini_web_app.phpt RealWorld fixture for 003-MiniWebApp routes #490 (MiniWebApp PHPT is separate)