Author Commit message Committed SHA  
 
by dg CliTester: added option --version [Closes #381]
by dg Assert::match(): failure with a slash-delimited pattern explains it is a mask [Closes #350]
by dg console output is readable on a light background [Closes #417]

Highlighted text in failure messages is bold instead of bright white,
gray is the real gray instead of bold black, and passed tests in
console-lines mode are no longer printed in silver.

by dg Assert: same() and equal() show where nested structures differ [Closes #320]

When the one-line dump of arrays or objects hides the difference (nested
[...], truncated lists, object hashes), the failure message gets a line
with the path to the first differing item, e.g.

at ['fields'][4]: 'foo' should be 'bar'

equal() descends into properties of objects and skips back-references.

Failure messages now read %% as a literal %, so that values in the path
line containing %1 or %2 (as in url-encoded %20) are not replaced.

by dg cs
by dg CI: DressCode checks with the dependencies installed

Without vendor/ it knows nothing of the classes of the libraries, so a call of a deprecated method passes unnoticed.

by dg Released version 2.7.0
by dg updated DOCS
by dg CliTester: exits with non-zero code when no tests are found
by dg improved --cider mode (thx Claude)
by dg Environment: lock() validates that lock directory exists instead of silently creating lock at filesystem root
by dg added test time limit: --timeout option and @timeout annotation; hanging test process is terminated and reported as failure
by dg HttpAssert: added request timeout
by dg GitHub Actions output (-o github) is enabled automatically when running on GitHub Actions
by dg JUnitPrinter: reports test durations; failed and skipped tests now carry duration
by dg ConsolePrinter: added --slowest option printing the slowest tests after the run
by dg added GitHub Actions output format (-o github), failures are annotated in the PR diff view
by dg TestHandler: TestCase methods are discovered by jobs running in parallel with other tests instead of blocking the scheduling (speeds up cold start)
by dg TestHandler: caches parsed annotations, avoids re-reading each test file twice
by dg TestCase: data provider returning no data sets is an error

A method-level data provider returning an empty array or an empty
Traversable made runTest() return without calling the test method, and
run() printed a passing mark. It now throws TestCaseException, the same
way as an empty file-level data provider fails the test.

by dg TestCase: added #[Throws] and #[DataProvider] attributes as an alternative to annotations

Method-level annotations only; attributes take precedence over the docblock,
which stays fully functional. File-level .phpt annotations cannot be replaced
(no file-level attributes in PHP, runner reads them statically before spawn).

by dg Assert: type 'integer' deprecated, use 'int'
by dg uses nette/phpstan-rules
by dg requires PHP 8.1
by dg opened 2.7-dev
by dg added Environment::Version constant, no longer hard-coded in the logo
by dg JUnitPrinter, TapPrinter: strip ANSI sequences from output
by dg added upgrading.md
by dg FileMock: implemented stream_flush(), PHP 8.6 makes fclose() fail without it
by dg CliTester: error message is written to stderr even under php-cgi
by dg Dumper: call arguments in stack traces are kept on a single line

Arguments were formatted by toLine(), whose string encoding emits the actual
character after the \n, \r and \t escapes and toggles bold around them, meant
for assertion messages. In a stack trace this split frames over multiple lines
and left the rest of the frame bold. Arguments now use a plain variant: strings
are encoded as PHP literals, exceptions and Expect are shown as objects, without
their possibly multiline message or dump.

by dg Runner: added warning when Xdebug slows down the run

Last synchronization: 2026-11-11 09:03:22