Problem
The canonical PHPUnit recipe accepts inactive extra_plugins plus dependencyMounts, but current main does not activate or replay callbacks for those mounted plugins after the managed PHPUnit database is installed. The plugin source is mounted and Composer autoload setup sees it, yet activation state and plugins_loaded behavior are absent during tests.
This regresses the contract introduced by PR #1868.
Evidence
The run confirms both plugins are projected into setup:
{
"plugins": [
"test-db-activation-host/test-db-activation-host.php",
"bench-db-activation-dep/bench-db-activation-dep.php"
]
}
PHPUnit then reports all three lifecycle assertions failing:
- The dependency activation hook did not write its option.
- The dependency activation hook did not complete
get_users().
- The dependency
plugins_loaded callback did not fire.
Expected behavior
Plugins listed in dependencyMounts load and activate after wp-phpunit creates wptests_* tables, then callbacks registered for the dependency lifecycle execute exactly once before tests.
How to reproduce
- Check out Homeboy Extensions PR #2302.
- Check out WP Codebox
main and build it.
- Point
HOMEBOY_WP_CODEBOX_BIN and HOMEBOY_WP_CODEBOX_CORE_MODULE at that build.
- Run
bash wordpress/scripts/test/playground-db-activation-smoke.sh.
- Observe 3 tests and 3 failures.
Acceptance criteria
- Restore post-install activation for canonical PHPUnit dependency mounts.
- Replay newly registered dependency callbacks exactly once.
- Add real Playground integration coverage proving DB-touching activation and callback execution.
- Make the Homeboy Extensions #2302 canary pass.
AI assistance
- AI assistance: Yes
- Tool(s): OpenAI GPT-5.6 Sol with OpenCode
- Used for: Cross-repository lifecycle diagnosis, evidence analysis, and issue drafting.
Problem
The canonical PHPUnit recipe accepts inactive
extra_pluginsplusdependencyMounts, but currentmaindoes not activate or replay callbacks for those mounted plugins after the managed PHPUnit database is installed. The plugin source is mounted and Composer autoload setup sees it, yet activation state andplugins_loadedbehavior are absent during tests.This regresses the contract introduced by PR #1868.
Evidence
main: https://github.com/Extra-Chill/homeboy-extensions/actions/runs/29667332938The run confirms both plugins are projected into setup:
{ "plugins": [ "test-db-activation-host/test-db-activation-host.php", "bench-db-activation-dep/bench-db-activation-dep.php" ] }PHPUnit then reports all three lifecycle assertions failing:
get_users().plugins_loadedcallback did not fire.Expected behavior
Plugins listed in
dependencyMountsload and activate after wp-phpunit createswptests_*tables, then callbacks registered for the dependency lifecycle execute exactly once before tests.How to reproduce
mainand build it.HOMEBOY_WP_CODEBOX_BINandHOMEBOY_WP_CODEBOX_CORE_MODULEat that build.bash wordpress/scripts/test/playground-db-activation-smoke.sh.Acceptance criteria
AI assistance