Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions AGENTS.md

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ composer quality-check # Validation, PHPCS, PHPStan, Unit and Integration t
| `test:integration:multisite` | Starts the multisite environment, then runs `test:integration:multisite:run` |
| `test:integration:multisite:run` | Builds the fixture plugins and personas, then runs the `multisite` and `without-woocommerce` groups in the running multisite environment: a network without WooCommerce, as production |
| `test:integration:php74` | Starts the PHP 7.4 environment, then runs `test:integration:php74:run` |
| `test:integration:php74:run` | Builds the bootstrap persona, then runs the `Php74` suite with the host's PHP against the running PHP 7.4 environment: a single site with WordPress 6.3, as production |
| `test:integration:php74:run` | Builds consumer-a and the bootstrap persona, then runs the `Php74` suite with the host's PHP against the running PHP 7.4 environment: a single site with WordPress 6.3, as production |
| `test:integration:lowest` | Starts the tests environment, then runs `test:integration:lowest:run` |
| `test:integration:lowest:run` | Locks consumer-a's runtime packages at the lowest versions its constraints allow, builds it, then runs its rows in the running tests environment; its rewritten manifest and lock are restored with `git checkout` |
| `test` | Unit and Integration tests |
Expand All @@ -61,5 +61,5 @@ composer quality-check # Validation, PHPCS, PHPStan, Unit and Integration t
- **Personas** (`tests/Fixtures/personas/`): one per stack, each requiring only the top package of its stack and built like the fixture plugins, so each production build holds exactly its scoped closure and nothing unscoped. The shared persona runs in plain PHP; the core persona boots its components and runs a migration, and the settings persona saves and rejects a value through `options.php`, both where WooCommerce is absent; the woocommerce persona saves a settings tab and product data through WooCommerce's screens and logs to WooCommerce's log; the bootstrap persona runs on PHP 7.4, which many sites still run.
- **Prefer-lowest lane** (`tests/bin/prefer-lowest.sh`): consumer-a runs with its runtime packages locked at the lowest versions its constraints allow, so a minimum too low to work fails before a consumer installs it. For the core, settings and woocommerce personas, which like every persona list their stack's mirrors as `vcs` repositories, the script keeps only the tested package on the path repository and locks every other framework package from its mirror at the lowest allowed tag, so they run only where the mirrors carry release tags.
- **CI** runs the Integration tests once for the newest release of every WordPress branch from the floor up, read from WordPress's version API, so a new release joins without a change here; WordPress trunk runs nightly, outside pull requests.
- **PHP 7.4 tests** (`tests/Php74/`) run with the host's PHP against a PHP 7.4 site with WordPress 6.3, through WP-CLI in its environment: the bootstrap persona passes its floors there, and a copy that needs a newer PHP shows WordPress core's message through the notice markup WordPress before 6.4 needs, both with the updater hooked.
- **PHP 7.4 tests** (`tests/Php74/`) run with the host's PHP against a PHP 7.4 site with WordPress 6.3, through WP-CLI in its environment: the bootstrap persona passes its floors there, and a copy that needs a newer PHP shows WordPress core's message through the notice markup WordPress before 6.4 needs, both with the updater hooked; consumer-a, below its floors there, keeps its safeguard's export lock.
- **Type tests** (`tests/PHPStan/`) are files PHPStan analyzes during `lint:php`: `assertType()` calls pin inferred types, and each expected error carries a `@phpstan-ignore` naming its identifier, so the run fails when the error disappears.
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,7 @@
"test:integration:php74:run": [
"Composer\\Config::disableProcessTimeout",
"@putenv CI=1",
"@fixtures:build:consumer-a",
"@fixtures:build:persona-bootstrap",
"@php vendor/bin/phpunit --testsuite=Php74"
],
Expand Down
Loading
Loading