From 78181f66f69e12c8a700db77cf409c34f0a74192 Mon Sep 17 00:00:00 2001 From: Owen Voke Date: Tue, 10 Nov 2020 13:42:00 +0000 Subject: [PATCH 1/6] feat: add Pest options to help output --- src/Console/Command.php | 2 ++ src/Console/Help.php | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 src/Console/Help.php diff --git a/src/Console/Command.php b/src/Console/Command.php index 0a2f9cf2..cfd8f0d4 100644 --- a/src/Console/Command.php +++ b/src/Console/Command.php @@ -148,5 +148,7 @@ final class Command extends BaseCommand $version = Container::getInstance()->get(Version::class); $version->handleArguments(['--version']); parent::showHelp(); + + (new Help($this->output))(); } } diff --git a/src/Console/Help.php b/src/Console/Help.php new file mode 100644 index 00000000..4554b728 --- /dev/null +++ b/src/Console/Help.php @@ -0,0 +1,37 @@ + */ + private const HELP_MESSAGES = [ + 'Pest Options:', + ' --init Initialise a standard Pest configuration', + ' --coverage Enable coverage and output to standard output', + ' --min= Set the minimum required coverage percentage (), and fail if not met', + ' --group= Only runs tests from the specified group(s)', + ]; + + /** @var OutputInterface */ + private $output; + + public function __construct(OutputInterface $output) + { + $this->output = $output; + } + + public function __invoke(): void + { + foreach (self::HELP_MESSAGES as $message) { + $this->output->writeln($message); + } + } +} From c33ab0f67087159b70b592305fed113dd0b7ee02 Mon Sep 17 00:00:00 2001 From: Owen Voke Date: Tue, 10 Nov 2020 13:56:26 +0000 Subject: [PATCH 2/6] tests: add test for help output --- tests/Unit/Console/Help.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 tests/Unit/Console/Help.php diff --git a/tests/Unit/Console/Help.php b/tests/Unit/Console/Help.php new file mode 100644 index 00000000..56b54487 --- /dev/null +++ b/tests/Unit/Console/Help.php @@ -0,0 +1,12 @@ +fetch())->toContain('Pest Options:'); +}); From e7585a4ba24b66e1ba1bc26f3a64e6073f29c135 Mon Sep 17 00:00:00 2001 From: Owen Voke Date: Tue, 10 Nov 2020 13:57:32 +0000 Subject: [PATCH 3/6] tests: update snapshots --- tests/.snapshots/success.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index 06190d84..915c56a6 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -348,6 +348,9 @@ ✓ it throws exception when `process isolation` is true ✓ it do not throws exception when `process isolation` is false + PASS Tests\Unit\Console\Help + ✓ it outputs the help information when --help is used + PASS Tests\Unit\Datasets ✓ it show the names of named datasets in their description @@ -391,5 +394,5 @@ ✓ depends with defined arguments ✓ depends run test only once - Tests: 7 skipped, 231 passed + Tests: 7 skipped, 232 passed \ No newline at end of file From feb6417f450a76575efcbdc48e35e8fbbf67d03d Mon Sep 17 00:00:00 2001 From: Owen Voke Date: Thu, 12 Nov 2020 09:11:51 +0000 Subject: [PATCH 4/6] tests: add visual test for help output --- tests/.snapshots/success.txt | 5 ++++- tests/Visual/Help.php | 13 +++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 tests/Visual/Help.php diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index 915c56a6..94fbb5da 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -377,6 +377,9 @@ PASS Tests\Unit\TestSuite ✓ it does not allow to add the same test description twice + PASS Tests\Visual\Help + ✓ visual snapshot of help command output + PASS Tests\Visual\SingleTestOrDirectory ✓ allows to run a single test ✓ allows to run a directory @@ -394,5 +397,5 @@ ✓ depends with defined arguments ✓ depends run test only once - Tests: 7 skipped, 232 passed + Tests: 7 skipped, 233 passed \ No newline at end of file diff --git a/tests/Visual/Help.php b/tests/Visual/Help.php new file mode 100644 index 00000000..e1382461 --- /dev/null +++ b/tests/Visual/Help.php @@ -0,0 +1,13 @@ +run(); + + return $process->getOutput(); + }; + + expect($output())->toContain('Pest Options:'); +}); From 200877d691a0cd8048518cfc8b1efe5de01cb1ba Mon Sep 17 00:00:00 2001 From: Owen Voke Date: Thu, 12 Nov 2020 09:44:26 +0000 Subject: [PATCH 5/6] tests: update to use snapshot for help output --- tests/.snapshots/help-command.txt | 117 ++++++++++++++++++++++++++++++ tests/Visual/Help.php | 16 +++- 2 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 tests/.snapshots/help-command.txt diff --git a/tests/.snapshots/help-command.txt b/tests/.snapshots/help-command.txt new file mode 100644 index 00000000..4a227a23 --- /dev/null +++ b/tests/.snapshots/help-command.txt @@ -0,0 +1,117 @@ + +Usage: + phpunit [options] UnitTest.php + phpunit [options] + +Code Coverage Options: + + --coverage-clover Generate code coverage report in Clover XML format + --coverage-cobertura Generate code coverage report in Cobertura XML format + --coverage-crap4j Generate code coverage report in Crap4J XML format + --coverage-html Generate code coverage report in HTML format + --coverage-php Export PHP_CodeCoverage object to file + --coverage-text Generate code coverage report in text format [default: standard output] + --coverage-xml Generate code coverage report in PHPUnit XML format + --coverage-cache Cache static analysis results + --warm-coverage-cache Warm static analysis cache + --coverage-filter Include in code coverage analysis + --path-coverage Perform path coverage analysis + --disable-coverage-ignore Disable annotations for ignoring code coverage + --no-coverage Ignore code coverage configuration + +Logging Options: + + --log-junit Log test execution in JUnit XML format to file + --log-teamcity Log test execution in TeamCity format to file + --testdox-html Write agile documentation in HTML format to file + --testdox-text Write agile documentation in Text format to file + --testdox-xml Write agile documentation in XML format to file + --reverse-list Print defects in reverse order + --no-logging Ignore logging configuration + +Test Selection Options: + + --list-suites List available test suites + --testsuite Filter which testsuite to run + --list-groups List available test groups + --group Only runs tests from the specified group(s) + --exclude-group Exclude tests from the specified group(s) + --covers Only runs tests annotated with "@covers " + --uses Only runs tests annotated with "@uses " + --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 + +Test Execution Options: + + --dont-report-useless-tests Do not report tests that do not test anything + --strict-coverage Be strict about @covers annotation usage + --strict-global-state Be strict about changes to global state + --disallow-test-output Be strict about output during tests + --disallow-resource-usage Be strict about resource usage during small tests + --enforce-time-limit Enforce time limit based on test size + --default-time-limit Timeout in seconds for tests without @small, @medium or @large + --disallow-todo-tests Disallow @todo-annotated tests + + --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 attributes for each test + + --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 + --stop-on-defect Stop execution upon first not-passed test + --stop-on-error Stop execution upon first error + --stop-on-failure Stop execution upon first error or failure + --stop-on-warning Stop execution upon first warning + --stop-on-risky Stop execution upon first risky test + --stop-on-skipped Stop execution upon first skipped test + --stop-on-incomplete Stop execution upon first incomplete test + --fail-on-incomplete Treat incomplete tests as failures + --fail-on-risky Treat risky tests as failures + --fail-on-skipped Treat skipped tests as failures + --fail-on-warning Treat tests with warnings as failures + -v|--verbose Output more verbose information + --debug Display debugging information + + --repeat Runs the test(s) repeatedly + --teamcity Report test execution progress in TeamCity format + --testdox Report test execution progress in TestDox format + --testdox-group Only include tests from the specified group(s) + --testdox-exclude-group Exclude tests from the specified group(s) + --no-interaction Disable TestDox progress animation + --printer TestListener implementation to use + + --order-by Run tests in order: default|defects|duration|no-depends|random|reverse|size + --random-order-seed Use a specific random seed for random order + --cache-result Write test results to cache file + --do-not-cache-result Do not write test results to cache file + +Configuration Options: + + --prepend A PHP script that is included as early as possible + --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) + --extensions A comma separated list of PHPUnit extensions to load + --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-result-file Specify result cache path and filename + --generate-configuration Generate configuration file with suggested settings + --migrate-configuration Migrate configuration file to current format + +Miscellaneous Options: + + -h|--help Prints this usage information + --version Prints the version and exits + --atleast-version Checks that version is greater than min and exits + --check-version Check whether PHPUnit is the latest version + +Pest Options: + --init Initialise a standard Pest configuration + --coverage Enable coverage and output to standard output + --min= Set the minimum required coverage percentage (), and fail if not met + --group= Only runs tests from the specified group(s) diff --git a/tests/Visual/Help.php b/tests/Visual/Help.php index e1382461..6021ec58 100644 --- a/tests/Visual/Help.php +++ b/tests/Visual/Help.php @@ -1,6 +1,8 @@ getOutput(); }; - expect($output())->toContain('Pest Options:'); -}); + if (getenv('REBUILD_SNAPSHOTS')) { + // Strip versions from start of snapshot + $outputContent = preg_replace([ + '/Pest \s+\d+\.\d+\.\d+\s+/m', + '/PHPUnit \d+\.\d+\.\d+\s+.*?\n/m' + ], '', $output()); + + file_put_contents($snapshot, $outputContent); + } + + expect($output())->toContain(file_get_contents($snapshot)); +})->skip(PHP_OS_FAMILY === 'Windows'); From 04681690b6dcced4ea0447a1c831dbccbf208e35 Mon Sep 17 00:00:00 2001 From: Owen Voke Date: Thu, 12 Nov 2020 09:53:40 +0000 Subject: [PATCH 6/6] tests: update help snapshot to only include Pest options --- tests/.snapshots/help-command.txt | 112 ------------------------------ tests/Visual/Help.php | 26 +++---- 2 files changed, 14 insertions(+), 124 deletions(-) diff --git a/tests/.snapshots/help-command.txt b/tests/.snapshots/help-command.txt index 4a227a23..203e8d07 100644 --- a/tests/.snapshots/help-command.txt +++ b/tests/.snapshots/help-command.txt @@ -1,115 +1,3 @@ - -Usage: - phpunit [options] UnitTest.php - phpunit [options] - -Code Coverage Options: - - --coverage-clover Generate code coverage report in Clover XML format - --coverage-cobertura Generate code coverage report in Cobertura XML format - --coverage-crap4j Generate code coverage report in Crap4J XML format - --coverage-html Generate code coverage report in HTML format - --coverage-php Export PHP_CodeCoverage object to file - --coverage-text Generate code coverage report in text format [default: standard output] - --coverage-xml Generate code coverage report in PHPUnit XML format - --coverage-cache Cache static analysis results - --warm-coverage-cache Warm static analysis cache - --coverage-filter Include in code coverage analysis - --path-coverage Perform path coverage analysis - --disable-coverage-ignore Disable annotations for ignoring code coverage - --no-coverage Ignore code coverage configuration - -Logging Options: - - --log-junit Log test execution in JUnit XML format to file - --log-teamcity Log test execution in TeamCity format to file - --testdox-html Write agile documentation in HTML format to file - --testdox-text Write agile documentation in Text format to file - --testdox-xml Write agile documentation in XML format to file - --reverse-list Print defects in reverse order - --no-logging Ignore logging configuration - -Test Selection Options: - - --list-suites List available test suites - --testsuite Filter which testsuite to run - --list-groups List available test groups - --group Only runs tests from the specified group(s) - --exclude-group Exclude tests from the specified group(s) - --covers Only runs tests annotated with "@covers " - --uses Only runs tests annotated with "@uses " - --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 - -Test Execution Options: - - --dont-report-useless-tests Do not report tests that do not test anything - --strict-coverage Be strict about @covers annotation usage - --strict-global-state Be strict about changes to global state - --disallow-test-output Be strict about output during tests - --disallow-resource-usage Be strict about resource usage during small tests - --enforce-time-limit Enforce time limit based on test size - --default-time-limit Timeout in seconds for tests without @small, @medium or @large - --disallow-todo-tests Disallow @todo-annotated tests - - --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 attributes for each test - - --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 - --stop-on-defect Stop execution upon first not-passed test - --stop-on-error Stop execution upon first error - --stop-on-failure Stop execution upon first error or failure - --stop-on-warning Stop execution upon first warning - --stop-on-risky Stop execution upon first risky test - --stop-on-skipped Stop execution upon first skipped test - --stop-on-incomplete Stop execution upon first incomplete test - --fail-on-incomplete Treat incomplete tests as failures - --fail-on-risky Treat risky tests as failures - --fail-on-skipped Treat skipped tests as failures - --fail-on-warning Treat tests with warnings as failures - -v|--verbose Output more verbose information - --debug Display debugging information - - --repeat Runs the test(s) repeatedly - --teamcity Report test execution progress in TeamCity format - --testdox Report test execution progress in TestDox format - --testdox-group Only include tests from the specified group(s) - --testdox-exclude-group Exclude tests from the specified group(s) - --no-interaction Disable TestDox progress animation - --printer TestListener implementation to use - - --order-by Run tests in order: default|defects|duration|no-depends|random|reverse|size - --random-order-seed Use a specific random seed for random order - --cache-result Write test results to cache file - --do-not-cache-result Do not write test results to cache file - -Configuration Options: - - --prepend A PHP script that is included as early as possible - --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) - --extensions A comma separated list of PHPUnit extensions to load - --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-result-file Specify result cache path and filename - --generate-configuration Generate configuration file with suggested settings - --migrate-configuration Migrate configuration file to current format - -Miscellaneous Options: - - -h|--help Prints this usage information - --version Prints the version and exits - --atleast-version Checks that version is greater than min and exits - --check-version Check whether PHPUnit is the latest version - Pest Options: --init Initialise a standard Pest configuration --coverage Enable coverage and output to standard output diff --git a/tests/Visual/Help.php b/tests/Visual/Help.php index 6021ec58..e015108f 100644 --- a/tests/Visual/Help.php +++ b/tests/Visual/Help.php @@ -1,25 +1,27 @@ fetch()); + } + $output = function () { - $process = (new Symfony\Component\Process\Process(['php', 'bin/pest', '--help', '--colors=never'])); + $process = (new Symfony\Component\Process\Process(['php', 'bin/pest', '--help'])); $process->run(); - return $process->getOutput(); + return preg_replace('#\\x1b[[][^A-Za-z]*[A-Za-z]#', '', $process->getOutput()); }; - if (getenv('REBUILD_SNAPSHOTS')) { - // Strip versions from start of snapshot - $outputContent = preg_replace([ - '/Pest \s+\d+\.\d+\.\d+\s+/m', - '/PHPUnit \d+\.\d+\.\d+\s+.*?\n/m' - ], '', $output()); - - file_put_contents($snapshot, $outputContent); - } - expect($output())->toContain(file_get_contents($snapshot)); })->skip(PHP_OS_FAMILY === 'Windows');