diff --git a/tests/config/format-test/create-snapshot.js b/tests/config/format-test/create-snapshot.js index a33d881d8..e51293aef 100644 --- a/tests/config/format-test/create-snapshot.js +++ b/tests/config/format-test/create-snapshot.js @@ -3,7 +3,8 @@ import { CURSOR_PLACEHOLDER } from "./constants.js"; import visualizeEndOfLine from "./visualize-end-of-line.js"; import visualizeRange from "./visualize-range.js"; -const SEPARATOR_WIDTH = 80; +const DEFAULT_PRINT_WIDTH = 80; +const SEPARATOR_WIDTH = DEFAULT_PRINT_WIDTH; function printSeparator(description = "") { const leftLength = Math.floor((SEPARATOR_WIDTH - description.length) / 2); const rightLength = SEPARATOR_WIDTH - leftLength - description.length; @@ -38,17 +39,38 @@ function printOptions(options) { .join("\n"); } -function printWidthIndicator(printWidth, offset) { - if (!Number.isFinite(printWidth) || printWidth < 1) { +function makeWidthIndicator(printWidth) { + const text = + printWidth === undefined + ? `printWidth: ${DEFAULT_PRINT_WIDTH} (default)` + : `printWidth: ${printWidth}`; + + if (printWidth === undefined) { + printWidth = DEFAULT_PRINT_WIDTH; + } + + return printWidth >= text.length + 2 + ? (text + " |").padStart(printWidth, " ") + : " ".repeat(printWidth) + "| " + text; +} + +const defaultWidthIndicator = makeWidthIndicator(); +function printWidthIndicator(printWidth) { + if ( + !( + printWidth === undefined || + (Number.isSafeInteger(printWidth) && printWidth > 0) + ) + ) { return ""; } - let before = ""; - if (offset) { - before = " ".repeat(offset - 1) + "|"; - } + const widthIndicator = + printWidth === undefined + ? defaultWidthIndicator + : makeWidthIndicator(printWidth); - return `${before}${" ".repeat(printWidth)}| printWidth`; + return widthIndicator; } function createSnapshot(formatResult, { parsers, formatOptions }) { @@ -83,16 +105,34 @@ function createSnapshot(formatResult, { parsers, formatOptions }) { return raw( [ - printSeparator("options"), - printOptions({ ...options, parsers }), - ...(widthIndicator ? [widthIndicator] : []), - printSeparator("input"), + addOffset( + [ + printSeparator("options"), + printOptions({ ...options, parsers }), + ...(widthIndicator ? [widthIndicator] : []), + printSeparator("input"), + ].join("\n"), + codeOffset, + ), input, - printSeparator("output"), - output, - printSeparator(), + addOffset( + [printSeparator("output"), output, printSeparator()].join("\n"), + codeOffset, + ), ].join("\n"), ); } +function addOffset(text, offset) { + if (!offset) { + return text; + } + + const prefix = " ".repeat(offset - 2) + ":"; + return text + .split("\n") + .map((line) => `${prefix}${line ? ` ${line}` : line}`) + .join("\n"); +} + export default createSnapshot; diff --git a/tests/config/format-test/run-format-test.js b/tests/config/format-test/run-format-test.js index 9b3ca212f..cbf3da15b 100644 --- a/tests/config/format-test/run-format-test.js +++ b/tests/config/format-test/run-format-test.js @@ -51,10 +51,7 @@ function runFormatTest(rawFixtures, explicitParsers, rawOptions) { path.dirname(url.fileURLToPath(importMeta.url)), ); - let options = { - printWidth: 80, - ...rawOptions, - }; + let options = { ...rawOptions }; // `IS_ERROR_TEST` mean to watch errors like: // - syntax parser hasn't supported yet diff --git a/tests/format/angular/angular/__snapshots__/format.test.js.snap b/tests/format/angular/angular/__snapshots__/format.test.js.snap index 7156e9d70..eefc2db08 100644 --- a/tests/format/angular/angular/__snapshots__/format.test.js.snap +++ b/tests/format/angular/angular/__snapshots__/format.test.js.snap @@ -4,8 +4,7 @@ exports[`angularjs.html - {"bracketSpacing":false} format 1`] = ` ====================================options===================================== bracketSpacing: false parsers: ["angular"] -printWidth: 80 - | printWidth + printWidth: 80 (default) | =====================================input======================================
Warning!
@@ -45,8 +44,7 @@ exports[`angularjs.html - {"htmlWhitespaceSensitivity":"ignore"} format 1`] = ` ====================================options===================================== htmlWhitespaceSensitivity: "ignore" parsers: ["angular"] -printWidth: 80 - | printWidth + printWidth: 80 (default) | =====================================input======================================
Warning!
@@ -86,7 +84,7 @@ exports[`angularjs.html - {"printWidth":1} format 1`] = ` ====================================options===================================== parsers: ["angular"] printWidth: 1 - | printWidth + | printWidth: 1 =====================================input======================================
Warning!
@@ -156,9 +154,8 @@ printWidth: 1 exports[`angularjs.html - {"trailingComma":"es5"} format 1`] = ` ====================================options===================================== parsers: ["angular"] -printWidth: 80 trailingComma: "es5" - | printWidth + printWidth: 80 (default) | =====================================input======================================
Warning!
@@ -197,9 +194,8 @@ trailingComma: "es5" exports[`angularjs.html - {"trailingComma":"none"} format 1`] = ` ====================================options===================================== parsers: ["angular"] -printWidth: 80 trailingComma: "none" - | printWidth + printWidth: 80 (default) | =====================================input======================================
Warning!
@@ -239,8 +235,7 @@ exports[`attr-name.component.html - {"bracketSpacing":false} format 1`] = ` ====================================options===================================== bracketSpacing: false parsers: ["angular"] -printWidth: 80 - | printWidth + printWidth: 80 (default) | =====================================input======================================
@@ -254,8 +249,7 @@ exports[`attr-name.component.html - {"htmlWhitespaceSensitivity":"ignore"} forma ====================================options===================================== htmlWhitespaceSensitivity: "ignore" parsers: ["angular"] -printWidth: 80 - | printWidth + printWidth: 80 (default) | =====================================input======================================
@@ -269,7 +263,7 @@ exports[`attr-name.component.html - {"printWidth":1} format 1`] = ` ====================================options===================================== parsers: ["angular"] printWidth: 1 - | printWidth + | printWidth: 1 =====================================input======================================
@@ -285,9 +279,8 @@ printWidth: 1 exports[`attr-name.component.html - {"trailingComma":"es5"} format 1`] = ` ====================================options===================================== parsers: ["angular"] -printWidth: 80 trailingComma: "es5" - | printWidth + printWidth: 80 (default) | =====================================input======================================
@@ -300,9 +293,8 @@ trailingComma: "es5" exports[`attr-name.component.html - {"trailingComma":"none"} format 1`] = ` ====================================options===================================== parsers: ["angular"] -printWidth: 80 trailingComma: "none" - | printWidth + printWidth: 80 (default) | =====================================input======================================
@@ -316,8 +308,7 @@ exports[`attributes.component.html - {"bracketSpacing":false} format 1`] = ` ====================================options===================================== bracketSpacing: false parsers: ["angular"] -printWidth: 80 - | printWidth + printWidth: 80 (default) | =====================================input======================================
{{ generatedDiscountCodes }}
@@ -5237,8 +5201,7 @@ exports[`unsupported.html - {"htmlWhitespaceSensitivity":"ignore"} format 1`] = ====================================options===================================== htmlWhitespaceSensitivity: "ignore" parsers: ["html"] -printWidth: 80 - | printWidth + printWidth: 80 (default) | =====================================input======================================
@@ -5252,8 +5215,7 @@ exports[`unsupported.html - {"htmlWhitespaceSensitivity":"strict"} format 1`] = ====================================options===================================== htmlWhitespaceSensitivity: "strict" parsers: ["html"] -printWidth: 80 - | printWidth + printWidth: 80 (default) | =====================================input======================================
@@ -5280,7 +5242,7 @@ exports[`unsupported.html - {"printWidth":1} format 1`] = ` ====================================options===================================== parsers: ["html"] printWidth: 1 - | printWidth + | printWidth: 1 =====================================input======================================
@@ -5293,8 +5255,7 @@ printWidth: 1 exports[`unsupported.html format 1`] = ` ====================================options===================================== parsers: ["html"] -printWidth: 80 - | printWidth + printWidth: 80 (default) | =====================================input======================================
diff --git a/tests/format/html/tags/object-prototype-properties/__snapshots__/format.test.js.snap b/tests/format/html/tags/object-prototype-properties/__snapshots__/format.test.js.snap index d776bb1ca..6a0207e12 100644 --- a/tests/format/html/tags/object-prototype-properties/__snapshots__/format.test.js.snap +++ b/tests/format/html/tags/object-prototype-properties/__snapshots__/format.test.js.snap @@ -3,8 +3,7 @@ exports[`object-prototype-properties.html format 1`] = ` ====================================options===================================== parsers: ["html"] -printWidth: 80 - | printWidth + printWidth: 80 (default) | =====================================input====================================== constructor hasOwnProperty diff --git a/tests/format/html/text/__snapshots__/format.test.js.snap b/tests/format/html/text/__snapshots__/format.test.js.snap index 1bf725a23..726e6ef02 100644 --- a/tests/format/html/text/__snapshots__/format.test.js.snap +++ b/tests/format/html/text/__snapshots__/format.test.js.snap @@ -3,8 +3,7 @@ exports[`tag-should-in-fill.html format 1`] = ` ====================================options===================================== parsers: ["html"] -printWidth: 80 - | printWidth + printWidth: 80 (default) | =====================================input====================================== foo bar foo bar foo bar foo bar foo bar foo bar foo bar diff --git a/tests/format/html/whitespace/__snapshots__/format.test.js.snap b/tests/format/html/whitespace/__snapshots__/format.test.js.snap index 0fc25df0e..18d2ce5eb 100644 --- a/tests/format/html/whitespace/__snapshots__/format.test.js.snap +++ b/tests/format/html/whitespace/__snapshots__/format.test.js.snap @@ -3,8 +3,7 @@ exports[`break-tags.html format 1`] = ` ====================================options===================================== parsers: ["html"] -printWidth: 80 - | printWidth + printWidth: 80 (default) | =====================================input====================================== Lorem, ispum dolor sit amet.
Lorem, ispum dolor sit amet.
@@ -23,8 +22,7 @@ printWidth: 80 exports[`display-inline-block.html format 1`] = ` ====================================options===================================== parsers: ["html"] -printWidth: 80 - | printWidth + printWidth: 80 (default) | =====================================input======================================