fix(jest-snapshot): Fix a potential bug when using babel and improve performance #14036
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
While I was fixing a babel issue, I discovered that jest was expecting buggy behavior.
retainLines
will try to keep the original code and the new code on the same line.When we replace
123\n456
with the single-line content123456
.The previous babel would ignore the position of
)
and generate this.And new babel will generate
jest was relying on the previous behavior, the PR fixes this.
Ref: babel/babel#15515
In addition, I also found that
@babel/traverse
is being used in the current code to traverse the AST generated by other than@babel/parser
, which is a bit unexpected.But since it's been that long, it seems like it's good enough for this simple usage.
I just replaced it with
traverse
from@babel/types
, which has very simple functionality and is much faster.(Maybe 10x)Test plan
CI green