ChangeLog-13.3.md
All notable changes of the PHPUnit 13.3 release series are documented in this file using the Keep a CHANGELOG principles.
--repeat CLI option and #[Repeat] attributeexpectOutputString() and expectOutputRegex() to be combined and repeated#[CoversNothing] on methods--retry CLI option #[Retry] attributefailOnAllIssues="true" is combined with an explicitly disabled fine-grained failOn* setting--record-test-run-history and --do-not-record-test-run-history CLI options as well as the recordTestRunHistory attribute for the XML configuration file to control whether the status and duration of each test are recorded for use by --order-by defects and --order-by duration-*--without-class-view CLI option and classView attribute for the XML configuration file to disable the class-oriented view in the HTML code coverage report--without-file-view CLI option and fileView attribute for the XML configuration file to disable the file-oriented view in the HTML code coverage report{PWD} is now substituted with the directory of the PHPT test file in --ENV-- and --INI-- sections of PHPT test files{TMP} (system directory for temporary files) and {ENV:name} (value of environment variable name) are now substituted in --INI-- sections of PHPT test files--INI-- section references an environment variable that is not set is now skipped--SKIPIF-- section of a PHPT test file that prints xfail <reason> now marks the test as expected to fail, as if the PHPT test file had an --XFAIL-- section with that reasontest-run-history instead of test-resultsTestCase no longer captures error_log() output for tests that do not use expectErrorLog(), avoiding the cost of setting up error log redirection for every testerror_log() output from tests without an expectation is no longer echoed (date-stripped) to PHPUnit's output; it goes to the configured error log again, as it did before capture was introducederror_log() without expectErrorLog() now produces stderr output in the child process, which the test runner reports as a test error--XFAIL-- section or xfail output from the --SKIPIF-- section) but passes is now considered risky; this usually means the expected-failure marker is stale and should be removed--SKIPIF-- section produces output that is not recognized is now considered risky; this usually means the skip check itself is broken. The keywords understood by PHP's own test runner that have no PHPUnit counterpart (info, warn, xleak, flaky, and nocache) are tolerated and do not make the test riskydate.timezone=UTC, display_startup_errors=1, fatal_error_backtraces=Off, ignore_repeated_errors=0, precision=14,
serialize_precision=-1), consistent with PHP's own test runner; all of them can be overridden per test using the --INI-- section--cache-result CLI option, use --record-test-run-history instead--do-not-cache-result CLI option, use --do-not-record-test-run-history insteadcacheResult XML configuration attribute, use recordTestRunHistory insteadPHPUnit\TextUI\Configuration\Configuration::cacheResult(), use PHPUnit\TextUI\Configuration\Configuration::recordTestRunHistory() insteadPHPUnit\TextUI\Configuration\Configuration::testResultCacheFile(), use PHPUnit\TextUI\Configuration\Configuration::testRunHistoryFile() insteadexpectErrorLog() now only considers error_log() output written after it was called; previously, the expectation was also satisfied by output written before expectErrorLog() was called--FILE--, --FILEEOF--, and --FILE_EXTERNAL-- sections, or more than one expectation section (--EXPECT--, --EXPECTF--, --EXPECTREGEX--, and their _EXTERNAL variants) are now rejected; previously, misspelled sections were silently ignored and duplicated sections silently overwrote each other--EXPECTREGEX-- section must now match the PHPT test's entire output, and . now matches newline characters, consistent with PHP's own test runner; previously, a match on a substring of the output was sufficient for the test to pass--SKIPIF-- section of a PHPT test is no longer mangled when it follows the skip <reason> convention used by PHP's own test suite; previously, the first two characters of the reason were stripped unless the skip: <reason> or skip - <reason> convention was usedPHPUnit\Runner\Phpt\InvalidPhptFileException when a PHPT test file has an empty --FILE-- or --FILEEOF-- section or a --FILE_EXTERNAL-- section that references an empty file; such a file is now rejected while it is parsed and reported as an errored testPHPUnit\Runner\Phpt\InvalidPhptFileException now has a message that explains why the PHPT test file was rejected