Repository navigation
Releases: ben-challis/greenlight
Releases · ben-challis/greenlight
Release list
v0.3.0
v0.2.2
0.2.2 (2026-09-20)
Bug Fixes
- Reduce delays to other workers and timeout checks when a worker emits invalid UTF-8 output. (#1902)
- Reject unsupported cyclic array traversal in
toEqual()andtoEqualCanonicalizing()withInvalidArgumentExceptioninstead of memory exhaustion. (#1926) - Apply correct PHPStan type checks when expectation factory and modifier names use different letter cases, such as
THAT()andNOT(). (#1919)
v0.2.1
0.2.1 (2026-09-19)
Bug Fixes
- Preserve attachment creation order during crash recovery when a test has more than 99 attachments. (#1923)
- Handle explicit
nulldata attribute arguments correctly in PHPStan provider and duplicate-label checks. (#1928)
Performance Improvements
- Reduce allocations for repeated
expect()calls without arguments. (#1958)
v0.2.0
0.2.0 (2026-09-18)
Breaking Changes
- Replace
Expect::that()withExpect::value()for values orExpect::calling()for calls. Value expectations never execute their subject. (#1949) - Replace
Expect::eventually()andExpect::consistently()with call chains such asExpect::calling($probe)->returnValue()->eventually()->within($seconds). Use->consistently()->for($seconds)for continuous checks. (#1949)
Features
- Use the functional API with
use function Greenlight\expect:expect($value)checks values andexpect()->calling($callback)checks calls. The runner loads the helper automatically. Outside the runner, loadsrc/Expect/functions.phpexplicitly after the Composer autoloader. (#1949) - Check call results with
toReturn()or select them withreturnValue(). Call expectations also support immediate and temporaltoThrow()checks. (#1949)
Bug Fixes
- Reject infinite subjects in
toBeWithin(), including when a tolerance boundary overflows. (#1922) - Return absolute paths for newly created temporary roots so cleanup still works after the working directory changes. (#1921)
Performance Improvements
v0.1.1
0.1.1 (2026-09-07)
Features
- Add color to CLI help while respecting
--ansi,--no-ansi, andNO_COLOR. (#1901)
Bug Fixes
- Make interruption notices more visible with spacing and the configured warning style. (#1900)
- Reject reporter paths that resolve to the same file before opening or truncating reports. (#1892)
- Keep coverage exclusions within the correct declaration when strings contain literal braces. (#1888)
- Preserve recorded double-call arguments after caller variables change, and prevent generated return values from overwriting reference parameters. (#1895)
- Restore output buffers and error handlers after an output callback throws. (#1890)
- Compare reordered object lists correctly when property names contain canonical sort-key delimiters. (#1887)
- Allow parallel Hyperf workers to create the scan directory concurrently. (#1889)
- Accept plugin factory return types that use class aliases, different letter case,
self, orparent. (#1897) - Render numeric worker IDs and large assignment-gap totals without errors in saved run profiles. (#1899)
- Preserve PHPUnit skips with empty reasons during conversion, and leave uncertain dynamic reasons unchanged. (#1898)
Performance Improvements
v0.1.0
0.1.0 (2026-09-05)
Breaking Changes
- Replace native Tempest
#[Tag]attributes on test constructor parameters with#[Service('tag')]. Enum tags must become string tags. (#1855)
Features
- Create doubles for methods with object parameter defaults, including objects nested in arrays. Object defaults require readable source files. (#1852)
- Select a named plugin container with
#[Service(source: 'name')], optionally with a service ID. (#1853)
Bug Fixes
- Preserve files outside attachment staging when the staging root is a symbolic link. (#1833)
- Reject named-pipe attachment sources before they can block a worker. (#1839)
- Keep attachment copies within their reserved size when the source file grows. (#1801)
- Keep the empty failed-run notice out of JSONL standard output. (#1838)
- Keep run profiles out of JSONL and JUnit standard output. (#1835)
- Keep watch status messages out of JSONL standard output. (#1806)
- Preserve numeric suite names as strings in JSON test manifests. (#1840)
- Use current source code for every watch iteration, including new test methods. Watch mode requires process support. (#1831)
- Preserve named variadic arguments and references in double callbacks, and reject surplus arguments on non-variadic reference methods. (#1829)
- Allow double calls to omit parameters whose defaults use private class constants. (#1811)
- Report failed expectations in
#[After]hooks with expected and actual values when no earlier failure exists. (#1844) - Give each retry its full hard-timeout window. (#1822)
- Prevent canonical equality errors with cyclic objects and false mismatches for equal numeric values. (#1820)
- Use a conservative PHPStan type for
captureArgument()calls with unpacked arguments. (#1846) - Accept valid unpacked string-containment arguments in PHPStan checks. (#1834)
- Generate IDE helpers with correctly qualified class names and declared generic types. (#1825)
- Prepare temporal matchers consistently regardless of method-name case. (#1832)
- Use registered factories for lazy harness services and dispose services in reverse creation order. (#1824)
- Leave PHPUnit classes unchanged when conversion could change assertion argument evaluation order. (#1848)
- Treat disabled PCOV as unavailable instead of failing during coverage collection. (#1836)
Performance Improvements
- Limit HTML coverage reports to known coverage lines when source files are unavailable. (#1826)
- Create repeated doubles faster by reusing loaded proxy classes. (#1837)
- Reduce repeated double-call overhead by reusing method contracts within each factory. (#1842)
- Drain worker diagnostic pipes promptly on supported platforms to reduce stalls during large writes. (#1827)
- Reduce plugin callback overhead by sorting priorities once per runtime. (#1843)
- Reduce reporter memory use for skipped tests and retried passes by releasing unused captured output. (#1841)
v0.0.1
0.0.1 (2026-09-04)
Initial release.