From 80e6b255b81f7583f0dc2c1b0e5f208f0b20527b Mon Sep 17 00:00:00 2001 From: Sebastian Bergmann Date: Wed, 6 Mar 2024 08:40:23 +0100 Subject: [PATCH] Implement --only-summary-for-coverage-text and --show-uncovered-for-coverage-text CLI options --- src/TextUI/Configuration/Cli/Builder.php | 16 +- src/TextUI/Configuration/Merger.php | 8 + src/TextUI/Help.php | 2 + .../_files/output-cli-help-color.txt | 307 +++++++++--------- tests/end-to-end/_files/output-cli-usage.txt | 198 +++++------ 5 files changed, 281 insertions(+), 250 deletions(-) diff --git a/src/TextUI/Configuration/Cli/Builder.php b/src/TextUI/Configuration/Cli/Builder.php index 864e10281ef..deac1b5d6eb 100644 --- a/src/TextUI/Configuration/Cli/Builder.php +++ b/src/TextUI/Configuration/Cli/Builder.php @@ -47,6 +47,8 @@ final class Builder 'coverage-html=', 'coverage-php=', 'coverage-text==', + 'only-summary-for-coverage-text', + 'show-uncovered-for-coverage-text', 'coverage-xml=', 'path-coverage', 'disallow-test-output', @@ -339,9 +341,17 @@ public function fromParameters(array $parameters): Configuration $option[1] = 'php://stdout'; } - $coverageText = $option[1]; - $coverageTextShowUncoveredFiles = false; - $coverageTextShowOnlySummary = false; + $coverageText = $option[1]; + + break; + + case '--only-summary-for-coverage-text': + $coverageTextShowOnlySummary = true; + + break; + + case '--show-uncovered-for-coverage-text': + $coverageTextShowUncoveredFiles = true; break; diff --git a/src/TextUI/Configuration/Merger.php b/src/TextUI/Configuration/Merger.php index b1ce8c28763..fca220a5721 100644 --- a/src/TextUI/Configuration/Merger.php +++ b/src/TextUI/Configuration/Merger.php @@ -345,6 +345,14 @@ public function merge(CliConfiguration $cliConfiguration, XmlConfiguration $xmlC $coverageTextShowOnlySummary = $xmlConfiguration->codeCoverage()->text()->showOnlySummary(); } + if ($cliConfiguration->hasCoverageTextShowUncoveredFiles()) { + $coverageTextShowUncoveredFiles = $cliConfiguration->coverageTextShowUncoveredFiles(); + } + + if ($cliConfiguration->hasCoverageTextShowOnlySummary()) { + $coverageTextShowOnlySummary = $cliConfiguration->coverageTextShowOnlySummary(); + } + if ($cliConfiguration->hasCoverageText()) { $coverageText = $cliConfiguration->coverageText(); } elseif ($coverageFromXmlConfiguration && $xmlConfiguration->codeCoverage()->hasText()) { diff --git a/src/TextUI/Help.php b/src/TextUI/Help.php index 4270b3466b8..aef32ae7bb6 100644 --- a/src/TextUI/Help.php +++ b/src/TextUI/Help.php @@ -268,6 +268,8 @@ private function elements(): array ['arg' => '--coverage-html ', 'desc' => 'Write code coverage report in HTML format to directory'], ['arg' => '--coverage-php ', 'desc' => 'Write serialized code coverage data to file'], ['arg' => '--coverage-text=', 'desc' => 'Write code coverage report in text format to file [default: standard output]'], + ['arg' => '--only-summary-for-coverage-text', 'desc' => 'Option for code coverage report in text format: only show summary'], + ['arg' => '--show-uncovered-for-coverage-text', 'desc' => 'Option for code coverage report in text format: show uncovered files'], ['arg' => '--coverage-xml ', 'desc' => 'Write code coverage report in XML format to directory'], ['arg' => '--warm-coverage-cache', 'desc' => 'Warm static analysis cache'], ['arg' => '--coverage-filter ', 'desc' => 'Include in code coverage reporting'], diff --git a/tests/end-to-end/_files/output-cli-help-color.txt b/tests/end-to-end/_files/output-cli-help-color.txt index a3558b4754f..f31dcb0b622 100644 --- a/tests/end-to-end/_files/output-cli-help-color.txt +++ b/tests/end-to-end/_files/output-cli-help-color.txt @@ -3,171 +3,180 @@ Configuration: - --bootstrap   A PHP script that is included before the - tests run - -c|--configuration   Read configuration from XML file - --no-configuration  Ignore default configuration file - (phpunit.xml) - --no-extensions  Do not load PHPUnit extensions - --include-path   Prepend PHP's include_path with given - path(s) - -d   Sets a php.ini value - --cache-directory   Specify cache directory - --generate-configuration  Generate configuration file with suggested - settings - --migrate-configuration  Migrate configuration file to current format - --generate-baseline   Generate baseline for issues - --use-baseline   Use baseline to ignore issues - --ignore-baseline  Do not use baseline to ignore issues + --bootstrap   A PHP script that is included before the + tests run + -c|--configuration   Read configuration from XML file + --no-configuration  Ignore default configuration file + (phpunit.xml) + --no-extensions  Do not load PHPUnit extensions + --include-path   Prepend PHP's include_path with given + path(s) + -d   Sets a php.ini value + --cache-directory   Specify cache directory + --generate-configuration  Generate configuration file with suggested + settings + --migrate-configuration  Migrate configuration file to current + format + --generate-baseline   Generate baseline for issues + --use-baseline   Use baseline to ignore issues + --ignore-baseline  Do not use baseline to ignore issues Selection: - --list-suites  List available test suites - --testsuite   Only run tests from the specified test - suite(s) - --exclude-testsuite   Exclude tests from the specified test - suite(s) - --list-groups  List available test groups - --group   Only run tests from the specified group(s) - --exclude-group   Exclude tests from the specified group(s) - --covers   Only run tests that intend to cover - --uses   Only run tests that intend to use - --list-tests  List available tests - --list-tests-xml   List available tests in XML format - --filter   Filter which tests to run - --test-suffix   Only search for test in files with specified - suffix(es). Default: Test.php,.phpt + --list-suites  List available test suites + --testsuite   Only run tests from the specified test + suite(s) + --exclude-testsuite   Exclude tests from the specified test + suite(s) + --list-groups  List available test groups + --group   Only run tests from the specified group(s) + --exclude-group   Exclude tests from the specified group(s) + --covers   Only run tests that intend to cover + --uses   Only run tests that intend to use + --list-tests  List available tests + --list-tests-xml   List available tests in XML format + --filter   Filter which tests to run + --test-suffix   Only search for test in files with + specified suffix(es). Default: + Test.php,.phpt Execution: - --process-isolation  Run each test in a separate PHP process - --globals-backup  Backup and restore $GLOBALS for each test - --static-backup  Backup and restore static properties for - each test - - --strict-coverage  Be strict about code coverage metadata - --strict-global-state  Be strict about changes to global state - --disallow-test-output  Be strict about output during tests - --enforce-time-limit  Enforce time limit based on test size - --default-time-limit   Timeout in seconds for tests that have no - declared size - --dont-report-useless-tests  Do not report tests that do not test - anything - - --stop-on-defect  Stop after first error, failure, warning, or - risky test - --stop-on-error  Stop after first error - --stop-on-failure  Stop after first failure - --stop-on-warning  Stop after first warning - --stop-on-risky  Stop after first risky test - --stop-on-deprecation  Stop after first test that triggered a - deprecation - --stop-on-notice  Stop after first test that triggered a - notice - --stop-on-skipped  Stop after first skipped test - --stop-on-incomplete  Stop after first incomplete test - - --fail-on-empty-test-suite  Signal failure using shell exit code when no - tests were run - --fail-on-warning  Signal failure using shell exit code when a - warning was triggered - --fail-on-risky  Signal failure using shell exit code when a - test was considered risky - --fail-on-deprecation  Signal failure using shell exit code when a - deprecation was triggered - --fail-on-notice  Signal failure using shell exit code when a - notice was triggered - --fail-on-skipped  Signal failure using shell exit code when a - test was skipped - --fail-on-incomplete  Signal failure using shell exit code when a - test was marked incomplete - - --cache-result  Write test results to cache file - --do-not-cache-result  Do not write test results to cache file - - --order-by   Run tests in order: - default|defects|depends|duration|no-depends|random|reverse|size - --random-order-seed   Use the specified random seed when running - tests in random order + --process-isolation  Run each test in a separate PHP process + --globals-backup  Backup and restore $GLOBALS for each test + --static-backup  Backup and restore static properties for + each test + + --strict-coverage  Be strict about code coverage metadata + --strict-global-state  Be strict about changes to global state + --disallow-test-output  Be strict about output during tests + --enforce-time-limit  Enforce time limit based on test size + --default-time-limit   Timeout in seconds for tests that have no + declared size + --dont-report-useless-tests  Do not report tests that do not test + anything + + --stop-on-defect  Stop after first error, failure, warning, + or risky test + --stop-on-error  Stop after first error + --stop-on-failure  Stop after first failure + --stop-on-warning  Stop after first warning + --stop-on-risky  Stop after first risky test + --stop-on-deprecation  Stop after first test that triggered a + deprecation + --stop-on-notice  Stop after first test that triggered a + notice + --stop-on-skipped  Stop after first skipped test + --stop-on-incomplete  Stop after first incomplete test + + --fail-on-empty-test-suite  Signal failure using shell exit code when + no tests were run + --fail-on-warning  Signal failure using shell exit code when + a warning was triggered + --fail-on-risky  Signal failure using shell exit code when + a test was considered risky + --fail-on-deprecation  Signal failure using shell exit code when + a deprecation was triggered + --fail-on-notice  Signal failure using shell exit code when + a notice was triggered + --fail-on-skipped  Signal failure using shell exit code when + a test was skipped + --fail-on-incomplete  Signal failure using shell exit code when + a test was marked incomplete + + --cache-result  Write test results to cache file + --do-not-cache-result  Do not write test results to cache file + + --order-by   Run tests in order: + default|defects|depends|duration|no-depends|random|reverse|size + --random-order-seed   Use the specified random seed when running + tests in random order Reporting: - --colors   Use colors in output ("never", "auto" or - "always") - --columns   Number of columns to use for progress output - --columns max  Use maximum number of columns for progress - output - --stderr  Write to STDERR instead of STDOUT - - --no-progress  Disable output of test execution progress - --no-results  Disable output of test results - --no-output  Disable all output - - --display-incomplete  Display details for incomplete tests - --display-skipped  Display details for skipped tests - --display-deprecations  Display details for deprecations triggered - by tests - --display-errors  Display details for errors triggered by - tests - --display-notices  Display details for notices triggered by - tests - --display-warnings  Display details for warnings triggered by - tests - --reverse-list  Print defects in reverse order - - --teamcity  Replace default progress and result output - with TeamCity format - --testdox  Replace default result output with TestDox - format - - --debug  Replace default progress and result output - with debugging information + --colors   Use colors in output ("never", "auto" or + "always") + --columns   Number of columns to use for progress + output + --columns max  Use maximum number of columns for progress + output + --stderr  Write to STDERR instead of STDOUT + + --no-progress  Disable output of test execution progress + --no-results  Disable output of test results + --no-output  Disable all output + + --display-incomplete  Display details for incomplete tests + --display-skipped  Display details for skipped tests + --display-deprecations  Display details for deprecations triggered + by tests + --display-errors  Display details for errors triggered by + tests + --display-notices  Display details for notices triggered by + tests + --display-warnings  Display details for warnings triggered by + tests + --reverse-list  Print defects in reverse order + + --teamcity  Replace default progress and result output + with TeamCity format + --testdox  Replace default result output with TestDox + format + + --debug  Replace default progress and result output + with debugging information Logging: - --log-junit   Write test results in JUnit XML format to - file - --log-teamcity   Write test results in TeamCity format to - file - --testdox-html   Write test results in TestDox format (HTML) - to file - --testdox-text   Write test results in TestDox format (plain - text) to file - --log-events-text   Stream events as plain text to file - --log-events-verbose-text  Stream events as plain text with extended - information to file - --no-logging  Ignore logging configured in the XML - configuration file + --log-junit   Write test results in JUnit XML format to + file + --log-teamcity   Write test results in TeamCity format to + file + --testdox-html   Write test results in TestDox format + (HTML) to file + --testdox-text   Write test results in TestDox format + (plain text) to file + --log-events-text   Stream events as plain text to file + --log-events-verbose-text   Stream events as plain text with extended + information to file + --no-logging  Ignore logging configured in the XML + configuration file Code Coverage: - --coverage-clover   Write code coverage report in Clover XML - format to file - --coverage-cobertura   Write code coverage report in Cobertura XML - format to file - --coverage-crap4j   Write code coverage report in Crap4J XML - format to file - --coverage-html   Write code coverage report in HTML format to - directory - --coverage-php   Write serialized code coverage data to file - --coverage-text=  Write code coverage report in text format to - file [default: standard output] - --coverage-xml   Write code coverage report in XML format to - directory - --warm-coverage-cache  Warm static analysis cache - --coverage-filter   Include in code coverage reporting - --path-coverage  Report path coverage in addition to line - coverage - --disable-coverage-ignore  Disable metadata for ignoring code coverage - --no-coverage  Ignore code coverage reporting configured in - the XML configuration file + --coverage-clover   Write code coverage report in Clover XML + format to file + --coverage-cobertura   Write code coverage report in Cobertura + XML format to file + --coverage-crap4j   Write code coverage report in Crap4J XML + format to file + --coverage-html   Write code coverage report in HTML format + to directory + --coverage-php   Write serialized code coverage data to + file + --coverage-text=  Write code coverage report in text format + to file [default: standard output] + --only-summary-for-coverage-text  Option for code coverage report in text + format: only show summary + --show-uncovered-for-coverage-text Option for code coverage report in text + format: show uncovered files + --coverage-xml   Write code coverage report in XML format + to directory + --warm-coverage-cache  Warm static analysis cache + --coverage-filter   Include in code coverage reporting + --path-coverage  Report path coverage in addition to line + coverage + --disable-coverage-ignore  Disable metadata for ignoring code + coverage + --no-coverage  Ignore code coverage reporting configured + in the XML configuration file Miscellaneous: - -h|--help  Prints this usage information - --version  Prints the version and exits - --atleast-version   Checks that version is greater than - and exits - --check-version  Checks whether PHPUnit is the latest version - and exits + -h|--help  Prints this usage information + --version  Prints the version and exits + --atleast-version   Checks that version is greater than + and exits + --check-version  Checks whether PHPUnit is the latest + version and exits diff --git a/tests/end-to-end/_files/output-cli-usage.txt b/tests/end-to-end/_files/output-cli-usage.txt index 25fe46fa751..dfe6e8b9d37 100644 --- a/tests/end-to-end/_files/output-cli-usage.txt +++ b/tests/end-to-end/_files/output-cli-usage.txt @@ -5,123 +5,125 @@ Usage: Configuration: - --bootstrap A PHP script that is included before the tests run - -c|--configuration Read configuration from XML file - --no-configuration Ignore default configuration file (phpunit.xml) - --no-extensions Do not load PHPUnit extensions - --include-path Prepend PHP's include_path with given path(s) - -d Sets a php.ini value - --cache-directory Specify cache directory - --generate-configuration Generate configuration file with suggested settings - --migrate-configuration Migrate configuration file to current format - --generate-baseline Generate baseline for issues - --use-baseline Use baseline to ignore issues - --ignore-baseline Do not use baseline to ignore issues + --bootstrap A PHP script that is included before the tests run + -c|--configuration Read configuration from XML file + --no-configuration Ignore default configuration file (phpunit.xml) + --no-extensions Do not load PHPUnit extensions + --include-path Prepend PHP's include_path with given path(s) + -d Sets a php.ini value + --cache-directory Specify cache directory + --generate-configuration Generate configuration file with suggested settings + --migrate-configuration Migrate configuration file to current format + --generate-baseline Generate baseline for issues + --use-baseline Use baseline to ignore issues + --ignore-baseline Do not use baseline to ignore issues Selection: - --list-suites List available test suites - --testsuite Only run tests from the specified test suite(s) - --exclude-testsuite Exclude tests from the specified test suite(s) - --list-groups List available test groups - --group Only run tests from the specified group(s) - --exclude-group Exclude tests from the specified group(s) - --covers Only run tests that intend to cover - --uses Only run tests that intend to use - --list-tests List available tests - --list-tests-xml List available tests in XML format - --filter Filter which tests to run - --test-suffix Only search for test in files with specified suffix(es). Default: Test.php,.phpt + --list-suites List available test suites + --testsuite Only run tests from the specified test suite(s) + --exclude-testsuite Exclude tests from the specified test suite(s) + --list-groups List available test groups + --group Only run tests from the specified group(s) + --exclude-group Exclude tests from the specified group(s) + --covers Only run tests that intend to cover + --uses Only run tests that intend to use + --list-tests List available tests + --list-tests-xml List available tests in XML format + --filter Filter which tests to run + --test-suffix Only search for test in files with specified suffix(es). Default: Test.php,.phpt Execution: - --process-isolation Run each test in a separate PHP process - --globals-backup Backup and restore $GLOBALS for each test - --static-backup Backup and restore static properties for each test - - --strict-coverage Be strict about code coverage metadata - --strict-global-state Be strict about changes to global state - --disallow-test-output Be strict about output during tests - --enforce-time-limit Enforce time limit based on test size - --default-time-limit Timeout in seconds for tests that have no declared size - --dont-report-useless-tests Do not report tests that do not test anything - - --stop-on-defect Stop after first error, failure, warning, or risky test - --stop-on-error Stop after first error - --stop-on-failure Stop after first failure - --stop-on-warning Stop after first warning - --stop-on-risky Stop after first risky test - --stop-on-deprecation Stop after first test that triggered a deprecation - --stop-on-notice Stop after first test that triggered a notice - --stop-on-skipped Stop after first skipped test - --stop-on-incomplete Stop after first incomplete test - - --fail-on-empty-test-suite Signal failure using shell exit code when no tests were run - --fail-on-warning Signal failure using shell exit code when a warning was triggered - --fail-on-risky Signal failure using shell exit code when a test was considered risky - --fail-on-deprecation Signal failure using shell exit code when a deprecation was triggered - --fail-on-notice Signal failure using shell exit code when a notice was triggered - --fail-on-skipped Signal failure using shell exit code when a test was skipped - --fail-on-incomplete Signal failure using shell exit code when a test was marked incomplete - - --cache-result Write test results to cache file - --do-not-cache-result Do not write test results to cache file - - --order-by Run tests in order: default|defects|depends|duration|no-depends|random|reverse|size - --random-order-seed Use the specified random seed when running tests in random order + --process-isolation Run each test in a separate PHP process + --globals-backup Backup and restore $GLOBALS for each test + --static-backup Backup and restore static properties for each test + + --strict-coverage Be strict about code coverage metadata + --strict-global-state Be strict about changes to global state + --disallow-test-output Be strict about output during tests + --enforce-time-limit Enforce time limit based on test size + --default-time-limit Timeout in seconds for tests that have no declared size + --dont-report-useless-tests Do not report tests that do not test anything + + --stop-on-defect Stop after first error, failure, warning, or risky test + --stop-on-error Stop after first error + --stop-on-failure Stop after first failure + --stop-on-warning Stop after first warning + --stop-on-risky Stop after first risky test + --stop-on-deprecation Stop after first test that triggered a deprecation + --stop-on-notice Stop after first test that triggered a notice + --stop-on-skipped Stop after first skipped test + --stop-on-incomplete Stop after first incomplete test + + --fail-on-empty-test-suite Signal failure using shell exit code when no tests were run + --fail-on-warning Signal failure using shell exit code when a warning was triggered + --fail-on-risky Signal failure using shell exit code when a test was considered risky + --fail-on-deprecation Signal failure using shell exit code when a deprecation was triggered + --fail-on-notice Signal failure using shell exit code when a notice was triggered + --fail-on-skipped Signal failure using shell exit code when a test was skipped + --fail-on-incomplete Signal failure using shell exit code when a test was marked incomplete + + --cache-result Write test results to cache file + --do-not-cache-result Do not write test results to cache file + + --order-by Run tests in order: default|defects|depends|duration|no-depends|random|reverse|size + --random-order-seed Use the specified random seed when running tests in random order Reporting: - --colors Use colors in output ("never", "auto" or "always") - --columns Number of columns to use for progress output - --columns max Use maximum number of columns for progress output - --stderr Write to STDERR instead of STDOUT + --colors Use colors in output ("never", "auto" or "always") + --columns Number of columns to use for progress output + --columns max Use maximum number of columns for progress output + --stderr Write to STDERR instead of STDOUT - --no-progress Disable output of test execution progress - --no-results Disable output of test results - --no-output Disable all output + --no-progress Disable output of test execution progress + --no-results Disable output of test results + --no-output Disable all output - --display-incomplete Display details for incomplete tests - --display-skipped Display details for skipped tests - --display-deprecations Display details for deprecations triggered by tests - --display-errors Display details for errors triggered by tests - --display-notices Display details for notices triggered by tests - --display-warnings Display details for warnings triggered by tests - --reverse-list Print defects in reverse order + --display-incomplete Display details for incomplete tests + --display-skipped Display details for skipped tests + --display-deprecations Display details for deprecations triggered by tests + --display-errors Display details for errors triggered by tests + --display-notices Display details for notices triggered by tests + --display-warnings Display details for warnings triggered by tests + --reverse-list Print defects in reverse order - --teamcity Replace default progress and result output with TeamCity format - --testdox Replace default result output with TestDox format + --teamcity Replace default progress and result output with TeamCity format + --testdox Replace default result output with TestDox format - --debug Replace default progress and result output with debugging information + --debug Replace default progress and result output with debugging information Logging: - --log-junit Write test results in JUnit XML format to file - --log-teamcity Write test results in TeamCity format to file - --testdox-html Write test results in TestDox format (HTML) to file - --testdox-text Write test results in TestDox format (plain text) to file - --log-events-text Stream events as plain text to file - --log-events-verbose-text Stream events as plain text with extended information to file - --no-logging Ignore logging configured in the XML configuration file + --log-junit Write test results in JUnit XML format to file + --log-teamcity Write test results in TeamCity format to file + --testdox-html Write test results in TestDox format (HTML) to file + --testdox-text Write test results in TestDox format (plain text) to file + --log-events-text Stream events as plain text to file + --log-events-verbose-text Stream events as plain text with extended information to file + --no-logging Ignore logging configured in the XML configuration file Code Coverage: - --coverage-clover Write code coverage report in Clover XML format to file - --coverage-cobertura Write code coverage report in Cobertura XML format to file - --coverage-crap4j Write code coverage report in Crap4J XML format to file - --coverage-html Write code coverage report in HTML format to directory - --coverage-php Write serialized code coverage data to file - --coverage-text= Write code coverage report in text format to file [default: standard output] - --coverage-xml Write code coverage report in XML format to directory - --warm-coverage-cache Warm static analysis cache - --coverage-filter Include in code coverage reporting - --path-coverage Report path coverage in addition to line coverage - --disable-coverage-ignore Disable metadata for ignoring code coverage - --no-coverage Ignore code coverage reporting configured in the XML configuration file + --coverage-clover Write code coverage report in Clover XML format to file + --coverage-cobertura Write code coverage report in Cobertura XML format to file + --coverage-crap4j Write code coverage report in Crap4J XML format to file + --coverage-html Write code coverage report in HTML format to directory + --coverage-php Write serialized code coverage data to file + --coverage-text= Write code coverage report in text format to file [default: standard output] + --only-summary-for-coverage-text Option for code coverage report in text format: only show summary + --show-uncovered-for-coverage-text Option for code coverage report in text format: show uncovered files + --coverage-xml Write code coverage report in XML format to directory + --warm-coverage-cache Warm static analysis cache + --coverage-filter Include in code coverage reporting + --path-coverage Report path coverage in addition to line coverage + --disable-coverage-ignore Disable metadata for ignoring code coverage + --no-coverage Ignore code coverage reporting configured in the XML configuration file Miscellaneous: - -h|--help Prints this usage information - --version Prints the version and exits - --atleast-version Checks that version is greater than and exits - --check-version Checks whether PHPUnit is the latest version and exits + -h|--help Prints this usage information + --version Prints the version and exits + --atleast-version Checks that version is greater than and exits + --check-version Checks whether PHPUnit is the latest version and exits