Problem
The tests command should let maintainers control PHPUnit progress output and text coverage verbosity without manually passing low-level PHPUnit flags. This matters in CI and report generation, where progress output can be noisy and full coverage text can make logs hard to scan.
Proposal
Add first-class DevTools options that map to PHPUnit flags:
--no-progress disables PHPUnit progress output by forwarding --no-progress.
--coverage-summary requests concise text coverage output by forwarding --only-summary-for-coverage-text when text coverage is generated.
The reports command should also use both options when invoking tests so generated reports stay quiet and coverage text remains concise.
Goals
- Expose
--no-progress on the tests command and forward it to PHPUnit only when requested.
- Expose a short, coverage-specific option named
--coverage-summary on the tests command.
- Forward
--only-summary-for-coverage-text only when coverage text is being generated.
- Update
reports so its delegated tests command includes --no-progress and --coverage-summary.
- Keep existing coverage, min-coverage, and report generation behavior compatible.
Expected Behavior
A maintainer can run vendor/bin/dev-tools tests --no-progress to suppress PHPUnit progress output. A maintainer can run vendor/bin/dev-tools tests --coverage=public/coverage --coverage-summary to keep coverage text output to the summary. The reports command should call the tests command with both quiet progress and concise coverage text behavior by default.
Implementation Strategy
Continue the existing command implementation by wiring the new options through TestsCommand process argument construction and updating ReportsCommand delegation arguments. Add focused command tests for option definition and forwarding behavior.
Requirements
tests --no-progress MUST pass --no-progress to PHPUnit.
tests --coverage=<path> --coverage-summary MUST pass --only-summary-for-coverage-text to PHPUnit.
tests --coverage-summary without coverage SHOULD NOT add coverage-text summary arguments unless coverage text is generated for another supported reason.
reports MUST invoke tests with --no-progress and --coverage-summary together with its configured coverage path.
- Existing
--coverage and --min-coverage behavior MUST continue to work.
- Tests MUST cover the new command options and report delegation.
Non-goals
- Changing PHPUnit default output when neither option is provided.
- Renaming existing coverage options.
- Changing coverage threshold calculation.
- Reworking the process builder abstraction.
Benefits
This improves CI log readability, keeps report generation quieter, and gives maintainers stable DevTools-level flags instead of requiring direct PHPUnit option knowledge.
Acceptance Criteria
Functional Criteria
Architectural / Isolation Criteria
Problem
The
testscommand should let maintainers control PHPUnit progress output and text coverage verbosity without manually passing low-level PHPUnit flags. This matters in CI and report generation, where progress output can be noisy and full coverage text can make logs hard to scan.Proposal
Add first-class DevTools options that map to PHPUnit flags:
--no-progressdisables PHPUnit progress output by forwarding--no-progress.--coverage-summaryrequests concise text coverage output by forwarding--only-summary-for-coverage-textwhen text coverage is generated.The
reportscommand should also use both options when invokingtestsso generated reports stay quiet and coverage text remains concise.Goals
--no-progresson thetestscommand and forward it to PHPUnit only when requested.--coverage-summaryon thetestscommand.--only-summary-for-coverage-textonly when coverage text is being generated.reportsso its delegatedtestscommand includes--no-progressand--coverage-summary.Expected Behavior
A maintainer can run
vendor/bin/dev-tools tests --no-progressto suppress PHPUnit progress output. A maintainer can runvendor/bin/dev-tools tests --coverage=public/coverage --coverage-summaryto keep coverage text output to the summary. Thereportscommand should call the tests command with both quiet progress and concise coverage text behavior by default.Implementation Strategy
Continue the existing command implementation by wiring the new options through
TestsCommandprocess argument construction and updatingReportsCommanddelegation arguments. Add focused command tests for option definition and forwarding behavior.Requirements
tests --no-progressMUST pass--no-progressto PHPUnit.tests --coverage=<path> --coverage-summaryMUST pass--only-summary-for-coverage-textto PHPUnit.tests --coverage-summarywithout coverage SHOULD NOT add coverage-text summary arguments unless coverage text is generated for another supported reason.reportsMUST invoketestswith--no-progressand--coverage-summarytogether with its configured coverage path.--coverageand--min-coveragebehavior MUST continue to work.Non-goals
Benefits
This improves CI log readability, keeps report generation quieter, and gives maintainers stable DevTools-level flags instead of requiring direct PHPUnit option knowledge.
Acceptance Criteria
Functional Criteria
testsdefines--no-progressand forwards--no-progressto PHPUnit when passed.testsdefines--coverage-summaryand forwards--only-summary-for-coverage-textwhen coverage text is generated.testsdoes not forward coverage summary output flags when no coverage text is generated.reportsdelegates totestswith--no-progressand--coverage-summary.Architectural / Isolation Criteria
TestsCommandremains responsible for translating DevTools CLI options into PHPUnit arguments.ReportsCommandremains orchestration-focused and does not duplicate PHPUnit argument construction.