fix: v8 coverage ranges that fall on \n characters cause exceptions #96
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.
When a file has dos line endings \r\n we found a few instances in a large codebase
where v8 would report the position of the \n as startCol for a range. This would
cause the starting column supplied to
sourceMap.originalPositionFor
to be a -1because the startColumns of the transpiled source lines were calculated as
endCol + length of line break sequence. This value is invalid causing
sourceMap.originalPositionFor
to throw withColumn numbers must be >= 0
.To replicate this condition, revert the fix but run the new unit test. The
call to
applyCoverage
will crash. While the unit test range was handcrafted by me for this particular example, we saw this coming up in the
wild.
This change clamps the supplied value to a min of 0 and adds a test
fixture (force encoded as \r\n) to test for it. The encoding are maintained
across varying gitconfigs via entries in
.gitattributes