fix(inspect): disable string-based customInspect to avoid .inspect collisions #1750
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.
Summary (#1708)
This PR fixes a long-standing issue where Chai's
inspectwrapperaccidentally enables loupe's string-based custom inspection behavior,
causing collisions with user-defined
.inspect()methods.Because Chai hardcodes the options passed to loupe's
inspectand doesnot currently expose a way to configure
customInspect, loupe ends upcalling any object's enumerable
.inspect()method—even if it is notintended as a Node.js inspection hook.
This results in objects being printed incorrectly or throwing errors
when their
.inspect()method expects different parameters.Root Cause
loupe still interprets a plain string-keyed
.inspectproperty as acustom inspector when
customInspectis true. Since Chai does not setthis option, the default behavior triggers unintentionally.
Fix
This PR explicitly sets:
customInspect: false