DebugSubscriber - Fix test-suite compatibility with XDebug 3 #22197
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.
Overview
The
DebugSubscriber
listens to APIv3 calls and appends extra debug information (memory usage, runtime, etc). Of course, this only works in some environments (eg when XDebug is enabled). TheDebugSubscriber
includes some guards to enable/disable data depending on XDebug v2 presence. This fixes the guard to also work with XDebug v3.ping @seamuslee001
Before
If you run with XDebug 3 and use
xdebug.mode=debug
, then several tests will fail with errors like this:The problem? In XDebug v3,
xdebug_time_index()
only works ifphp.ini
specifies "xdebug.mode=develop". Otherwise, it will emit warnings and return NULL. The warnings manifest as test-failures.After
Tests pass.
xdebug_time_index
is not called if it's not going work.Comments
xdebug.mode
is a comma-separated list of values from https://xdebug.org/docs/all_settings#modexdebug.mode
/XDEBUG_MODE
. I was a little confused about how to rapidly experiment with different values, so I played with a few formulations. The first in this list (php -d xdebug.mode...
) appears to be the most consistent/reliable when setting multiple modes.