feat: Add PHPUnit extension for pretty-printing MappingError instances#648
Open
NanoSector wants to merge 2 commits into
Open
feat: Add PHPUnit extension for pretty-printing MappingError instances#648NanoSector wants to merge 2 commits into
NanoSector wants to merge 2 commits into
Conversation
Author
|
PHPStan is (rightfully) complaining that the edit: I was also under the assumption the separate Valinor-Documentation repository was leading for the docs, but it seems to be generated from this repository. I'll add a follow-up commit to add the documentation here. |
698dc6c to
a8e570e
Compare
Member
|
Hi @NanoSector just wanted to say that I did not forget you. Most efforts lately have been done towards the 2.0 release. I do not have much personal time to work on Valinor lately but I'll take a look at this PR ASAP. 😊 Thanks! |
added 2 commits
November 1, 2025 19:50
This helps with debugging MappingErrors thrown during test execution. Sometimes these can be annoying to debug because Valinor only shows "A total of 2 errors were thrown". The extension works by overriding the TestCase `transformException` method through a trait, which means this is an opt-in feature for tests. It collects them in a singleton class and then uses the PHPUnit extension to display them in a formatted table at the end of the test run. Implementing it is a matter of using the `CollectValinorMappingErrors` trait in your TestCase class and registering the `PrettyPrintMappingErrorsExtension` extension class in the phpunit configuration file. A PR to update the documentation will be made separately. This does require symfony/console for its table printing capabilities, copying that logic into the library seemed excessive. In order to not have a hard dependency on it, it is put in the suggest array in composer.json and we are using a class_exists check to see if it is installed. Developed by: Social Deal (@socialdeal) Signed-off-by: NanoSector <rick@nanosector.nl>
a8e570e to
25af27e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This helps with debugging MappingErrors thrown during test execution. Sometimes these can be annoying to debug because Valinor only shows "A total of 2 errors were thrown".
The extension works by overriding the TestCase
transformExceptionmethod through a trait, which means this is an opt-in feature for tests. It collects them in a singleton class and then uses the PHPUnit extension to display them in a formatted table at the end of the test run.Implementing it is a matter of using the
CollectValinorMappingErrorstrait in your TestCase class and registering thePrettyPrintMappingErrorsExtensionextension class in the phpunit configuration file. A PR to update the documentation will be made separately.This does require symfony/console for its table printing capabilities, copying that logic into the library seemed excessive. In order to not have a hard dependency on it, it is put in the suggest array in composer.json and we are using a class_exists check to see if it is installed.
Developed by: Social Deal (@socialdeal)