Testing
This package provides a consistent set of Composer scripts for local validation.
Tool references:
- Composer Require Checker for dependency definition checks.
- Easy Coding Standard (ECS) for coding standards.
- Infection for mutation testing.
- PHPStan for static analysis.
- PHPUnit for unit tests.
- Rector for automated refactoring.
Automated refactoring (Rector)
Section titled “Automated refactoring (Rector)”Run Rector to apply automated code refactoring.
composer rectorCoding standards (ECS)
Section titled “Coding standards (ECS)”Run Easy Coding Standard (ECS) and apply fixes.
composer ecsDependency definition check
Section titled “Dependency definition check”Verify that runtime dependencies are correctly declared in composer.json.
composer check-dependenciesMutation testing (Infection)
Section titled “Mutation testing (Infection)”Run mutation testing.
composer mutationRun mutation testing with static analysis enabled.
composer mutation-staticStatic analysis (PHPStan)
Section titled “Static analysis (PHPStan)”Run static analysis.
composer staticUnit tests (PHPUnit)
Section titled “Unit tests (PHPUnit)”Run the full test suite.
composer testsPassing extra arguments
Section titled “Passing extra arguments”Composer scripts support forwarding additional arguments using --.
Run PHPUnit with code coverage report generation.
composer tests -- --coverage-html code_coverageRun PHPStan with a different memory limit.
composer static -- --memory-limit=512MWorker compatibility checks
Section titled “Worker compatibility checks”Run the package suite with each supported Yii line in an isolated checkout, keeping PHP 8.3 or higher:
composer require yiisoft/yii2:2.0.55 --with-all-dependenciescomposer testscomposer require yiisoft/yii2:22.0.x-dev --with-all-dependenciescomposer testsThese commands change the checkout’s Composer requirements and lock file; use disposable checkouts for a matrix. The suite uses real bridge request/response processing with mocked RoadRunner transport. It covers emission and processing failures, after-send ordering, finalization when error reporting fails, declined dispatches during recycling, preservation of finalization and shutdown exceptions, session cookie selection, and upload reset. It does not start the RoadRunner server.
For an application smoke test, run its configured RoadRunner binary and send consecutive requests through the same worker: two visitors, absent/invalid session cookies, an upload followed by no upload, and streamed downloads. Verify response bytes and status, after-send ordering, and worker replacement after a fatal callback. Confirm each request enters application handling once and the first request after replacement succeeds. Record the binary version and dependency revisions. If the binary or application fixture is unavailable, report that runtime check as pending rather than treating mocked transport tests as server validation.