Include the exit code and stderr when a bin/rector output assertion fails - #8440
Open
SanderMuller wants to merge 1 commit into
Open
Include the exit code and stderr when a bin/rector output assertion fails#8440SanderMuller wants to merge 1 commit into
SanderMuller wants to merge 1 commit into
Conversation
…ails testConsoleOutput asserts on getOutput() alone, so when the spawned bin/rector writes nothing to stdout the failure is a diff against an empty string with no reason attached - the exit code and whatever went to stderr are both dropped. That is what a failing run looks like in PHPStan's integration job, where all three cases report '' including the --version one, and the log gives nothing to work from. assertSame() takes a message, so both are now in the failure.
staabm
approved these changes
Sep 2, 2026
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.
testConsoleOutputasserts ongetOutput()alone, so when the spawnedbin/rectorwrites nothing to stdout the failure is a diff against an empty string with no reason attached. The exit code and anything on stderr are both dropped.That is exactly what a failing run looks like in PHPStan's integration job, where all three cases report
''including the--versionone:Nothing there says whether the process failed to start, fataled, or exited non-zero.
assertSame()takes a message, so this puts both in the failure:No new test: the change is in the assertion itself, and I checked it renders by pointing one expectation at a deliberately wrong string.
tests/Binstays green (3 tests, 3 assertions),vendor/bin/ecsis clean on the file, andvendor/bin/phpstan analyse tests/Bin/RectorTest.phpreports no errors.getExitCode()is nullable, so it is rendered with%sand a fallback rather than%d, which would print a misleading0for a process that never started.