fix(code-frame): do not pad gutter of empty lines (#12567)
* fix(code-frame): do not pad gutter of empty lines * Add workaround for expected Jest e2e test failure Co-authored-by: Nicolò Ribaudo <nicolo.ribaudo@gmail.com>
This commit is contained in:
parent
fbef603c43
commit
2d35f5a8f7
@ -152,7 +152,7 @@ export function codeFrameColumns(
|
||||
.map((line, index) => {
|
||||
const number = start + 1 + index;
|
||||
const paddedNumber = ` ${number}`.slice(-numberMaxWidth);
|
||||
const gutter = ` ${paddedNumber} | `;
|
||||
const gutter = ` ${paddedNumber} |`;
|
||||
const hasMarker = markerLines[number];
|
||||
const lastMarkerLine = !markerLines[number + 1];
|
||||
if (hasMarker) {
|
||||
@ -166,6 +166,7 @@ export function codeFrameColumns(
|
||||
markerLine = [
|
||||
"\n ",
|
||||
maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")),
|
||||
" ",
|
||||
markerSpacing,
|
||||
maybeHighlight(defs.marker, "^").repeat(numberOfMarkers),
|
||||
].join("");
|
||||
@ -177,11 +178,13 @@ export function codeFrameColumns(
|
||||
return [
|
||||
maybeHighlight(defs.marker, ">"),
|
||||
maybeHighlight(defs.gutter, gutter),
|
||||
line,
|
||||
line.length > 0 ? ` ${line}` : "",
|
||||
markerLine,
|
||||
].join("");
|
||||
} else {
|
||||
return ` ${maybeHighlight(defs.gutter, gutter)}${line}`;
|
||||
return ` ${maybeHighlight(defs.gutter, gutter)}${
|
||||
line.length > 0 ? ` ${line}` : ""
|
||||
}`;
|
||||
}
|
||||
})
|
||||
.join("\n");
|
||||
|
||||
@ -42,7 +42,7 @@ describe("@babel/code-frame", function () {
|
||||
" 6 | * @returns Number",
|
||||
"> 7 | */",
|
||||
" | ^",
|
||||
" 8 | ",
|
||||
" 8 |",
|
||||
" 9 | function sum(a, b) {",
|
||||
" 10 | return a + b",
|
||||
].join("\n"),
|
||||
@ -70,7 +70,7 @@ describe("@babel/code-frame", function () {
|
||||
"> 6 | * @returns Number",
|
||||
" | ^",
|
||||
" 7 | */",
|
||||
" 8 | ",
|
||||
" 8 |",
|
||||
" 9 | function sum(a, b) {",
|
||||
].join("\n"),
|
||||
);
|
||||
@ -105,8 +105,8 @@ describe("@babel/code-frame", function () {
|
||||
test("opts.highlightCode with multiple columns and lines", function () {
|
||||
// prettier-ignore
|
||||
const rawLines = [
|
||||
"function a(b, c) {",
|
||||
" return b + c;",
|
||||
"function a(b, c) {",
|
||||
" return b + c;",
|
||||
"}"
|
||||
].join("\n");
|
||||
|
||||
@ -160,7 +160,7 @@ describe("@babel/code-frame", function () {
|
||||
" 6 | * @returns Number",
|
||||
"> 7 | */",
|
||||
" | ^",
|
||||
" 8 | ",
|
||||
" 8 |",
|
||||
" 9 | function sum(a, b) {",
|
||||
" 10 | return a + b",
|
||||
].join("\n"),
|
||||
@ -187,7 +187,7 @@ describe("@babel/code-frame", function () {
|
||||
" 6 | * @returns Number",
|
||||
"> 7 | */",
|
||||
" | ^",
|
||||
" 8 | ",
|
||||
" 8 |",
|
||||
].join("\n"),
|
||||
);
|
||||
});
|
||||
@ -207,9 +207,7 @@ describe("@babel/code-frame", function () {
|
||||
"}",
|
||||
].join("\n");
|
||||
expect(codeFrame(rawLines, 7, 2, { linesAbove: 1, linesBelow: 1 })).toEqual(
|
||||
[" 6 | * @returns Number", "> 7 | */", " | ^", " 8 | "].join(
|
||||
"\n",
|
||||
),
|
||||
[" 6 | * @returns Number", "> 7 | */", " | ^", " 8 |"].join("\n"),
|
||||
);
|
||||
});
|
||||
|
||||
@ -277,9 +275,9 @@ describe("@babel/code-frame", function () {
|
||||
).toEqual(
|
||||
chalk.reset(
|
||||
[
|
||||
" " + gutter(" 2 | "),
|
||||
marker(">") + gutter(" 3 | "),
|
||||
" " + gutter(" 4 | "),
|
||||
" " + gutter(" 2 |"),
|
||||
marker(">") + gutter(" 3 |"),
|
||||
" " + gutter(" 4 |"),
|
||||
].join("\n"),
|
||||
),
|
||||
);
|
||||
|
||||
@ -42,6 +42,13 @@ yarn install
|
||||
yarn dedupe '@babel/*'
|
||||
yarn build
|
||||
|
||||
# Workaround for https://github.com/babel/babel/pull/12567
|
||||
node -e '
|
||||
let snapshots = fs.readFileSync("packages/jest-message-util/src/__tests__/__snapshots__/messages.test.ts.snap", "utf8");
|
||||
snapshots = snapshots.replace(/(?<!^<dim>.*)\| <\/>/gm, "|<\/> ");
|
||||
fs.writeFileSync("packages/jest-message-util/src/__tests__/__snapshots__/messages.test.ts.snap", snapshots);
|
||||
'
|
||||
|
||||
# The full test suite takes about 20mins on CircleCI. We run only a few of them
|
||||
# to speed it up.
|
||||
# The goals of this e2e test are:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user