From b4557963a46bb193270994e7b3a0715e63871e2a Mon Sep 17 00:00:00 2001 From: KillyMXI Date: Thu, 17 Jun 2021 15:10:21 +0300 Subject: [PATCH 1/2] Support multiline snapshot labels --- lib/snapshot-manager.js | 4 ++- .../multiline-snapshot-label/package.json | 1 + .../fixtures/multiline-snapshot-label/test.js | 14 +++++++++ .../multiline-snapshot-label/test.js.md | 18 +++++++++++ .../multiline-snapshot-label/test.js.snap | Bin 0 -> 228 bytes test/snapshot-tests/formatting.js | 25 +++++++++++++++ .../snapshot-tests/snapshots/formatting.js.md | 29 ++++++++++++++++++ .../snapshots/formatting.js.snap | Bin 0 -> 307 bytes 8 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 test/snapshot-tests/fixtures/multiline-snapshot-label/package.json create mode 100644 test/snapshot-tests/fixtures/multiline-snapshot-label/test.js create mode 100644 test/snapshot-tests/fixtures/multiline-snapshot-label/test.js.md create mode 100644 test/snapshot-tests/fixtures/multiline-snapshot-label/test.js.snap create mode 100644 test/snapshot-tests/formatting.js create mode 100644 test/snapshot-tests/snapshots/formatting.js.md create mode 100644 test/snapshot-tests/snapshots/formatting.js.snap diff --git a/lib/snapshot-manager.js b/lib/snapshot-manager.js index 9181c1424..4973e5ed8 100644 --- a/lib/snapshot-manager.js +++ b/lib/snapshot-manager.js @@ -93,7 +93,9 @@ function formatEntry(snapshot, index) { concordance.formatDescriptor(concordance.deserialize(data), concordanceOptions) : ''; - return `> ${label}\n\n${indentString(description, 4)}`; + const blockquote = label.split(/\n/).map(line => '> ' + line).join('\n'); + + return `${blockquote}\n\n${indentString(description, 4)}`; } function combineEntries({blocks}) { diff --git a/test/snapshot-tests/fixtures/multiline-snapshot-label/package.json b/test/snapshot-tests/fixtures/multiline-snapshot-label/package.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/test/snapshot-tests/fixtures/multiline-snapshot-label/package.json @@ -0,0 +1 @@ +{} diff --git a/test/snapshot-tests/fixtures/multiline-snapshot-label/test.js b/test/snapshot-tests/fixtures/multiline-snapshot-label/test.js new file mode 100644 index 000000000..f6fe3a72f --- /dev/null +++ b/test/snapshot-tests/fixtures/multiline-snapshot-label/test.js @@ -0,0 +1,14 @@ +const test = require(process.env.TEST_AVA_IMPORT_FROM); + +const f = () => { + return [ + 'Hello', + 'World!' + ].join(', '); +}; + +test('snapshot with a multiline label', t => { + const result = f(); + const label = '```javascript\n' + f.toString() + '\n```'; + t.snapshot(result, label); +}); diff --git a/test/snapshot-tests/fixtures/multiline-snapshot-label/test.js.md b/test/snapshot-tests/fixtures/multiline-snapshot-label/test.js.md new file mode 100644 index 000000000..c2b62eb6f --- /dev/null +++ b/test/snapshot-tests/fixtures/multiline-snapshot-label/test.js.md @@ -0,0 +1,18 @@ +# Snapshot report for `test.js` + +The actual snapshot is saved in `test.js.snap`. + +Generated by [AVA](https://avajs.dev). + +## snapshot with a multiline label + +> ```javascript +> () => { +> return [ +> 'Hello', +> 'World!' +> ].join(', '); +> } +> ``` + + 'Hello, World!' diff --git a/test/snapshot-tests/fixtures/multiline-snapshot-label/test.js.snap b/test/snapshot-tests/fixtures/multiline-snapshot-label/test.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..3d43f7e8460522f2a2b0bac5b027d0c2a2ac157b GIT binary patch literal 228 zcmVW`9(P?im6~d z6^RK630a9{iN(o9nFS?W8k!2Wb_&(JTna!?lv+|+l&264;emiU*a&qUBoT;d>JX7w ey{!DqJPman1$9kpUand$py>dV?rV<7000236 { + const options = { + cwd: cwd('multiline-snapshot-label'), + env: { + AVA_FORCE_CI: 'not-ci' + } + }; + + // Run test fixture + await fixture(['--update-snapshots'], options); + + // Assert report is unchanged + const reportPath = path.join(options.cwd, 'test.js.md'); + + const report = fs.readFileSync(reportPath, { encoding: 'utf8' }); + + t.snapshot(report, 'resulting snapshot report'); +}); diff --git a/test/snapshot-tests/snapshots/formatting.js.md b/test/snapshot-tests/snapshots/formatting.js.md new file mode 100644 index 000000000..28ff43de5 --- /dev/null +++ b/test/snapshot-tests/snapshots/formatting.js.md @@ -0,0 +1,29 @@ +# Snapshot report for `test/snapshot-tests/formatting.js` + +The actual snapshot is saved in `formatting.js.snap`. + +Generated by [AVA](https://avajs.dev). + +## multiline snapshot label should be formatted correctly in the report + +> resulting snapshot report + + `# Snapshot report for \`test.js\`␊ + ␊ + The actual snapshot is saved in \`test.js.snap\`.␊ + ␊ + Generated by [AVA](https://avajs.dev).␊ + ␊ + ## snapshot with a multiline label␊ + ␊ + > \`\`\`javascript␊ + > () => {␍␊ + > return [␍␊ + > 'Hello',␍␊ + > 'World!'␍␊ + > ].join(', ');␍␊ + > }␊ + > \`\`\`␊ + ␊ + 'Hello, World!'␊ + ` diff --git a/test/snapshot-tests/snapshots/formatting.js.snap b/test/snapshot-tests/snapshots/formatting.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..a125df76bfa7d46ac11558c6faa41688dd639f97 GIT binary patch literal 307 zcmV-30nGkERzV!BQ)qF1$TA@lhJrI zO)H|t?+pgBl_6MSn}u8)FArWSszAcULX* Date: Sat, 19 Jun 2021 20:00:38 +0200 Subject: [PATCH 2/2] Don't check in fixture snapshots, fix linting --- .../fixtures/multiline-snapshot-label/test.js | 14 ++++----- .../multiline-snapshot-label/test.js.md | 18 ----------- .../multiline-snapshot-label/test.js.snap | Bin 228 -> 0 bytes test/snapshot-tests/formatting.js | 29 +++++++++--------- .../snapshot-tests/snapshots/formatting.js.md | 10 +++--- .../snapshots/formatting.js.snap | Bin 307 -> 305 bytes 6 files changed, 26 insertions(+), 45 deletions(-) delete mode 100644 test/snapshot-tests/fixtures/multiline-snapshot-label/test.js.md delete mode 100644 test/snapshot-tests/fixtures/multiline-snapshot-label/test.js.snap diff --git a/test/snapshot-tests/fixtures/multiline-snapshot-label/test.js b/test/snapshot-tests/fixtures/multiline-snapshot-label/test.js index f6fe3a72f..2c3e6b2c9 100644 --- a/test/snapshot-tests/fixtures/multiline-snapshot-label/test.js +++ b/test/snapshot-tests/fixtures/multiline-snapshot-label/test.js @@ -1,14 +1,14 @@ const test = require(process.env.TEST_AVA_IMPORT_FROM); const f = () => { - return [ - 'Hello', - 'World!' - ].join(', '); + return [ + 'Hello', + 'World!' + ].join(', '); }; test('snapshot with a multiline label', t => { - const result = f(); - const label = '```javascript\n' + f.toString() + '\n```'; - t.snapshot(result, label); + const result = f(); + const label = '```javascript\n' + f.toString() + '\n```'; + t.snapshot(result, label); }); diff --git a/test/snapshot-tests/fixtures/multiline-snapshot-label/test.js.md b/test/snapshot-tests/fixtures/multiline-snapshot-label/test.js.md deleted file mode 100644 index c2b62eb6f..000000000 --- a/test/snapshot-tests/fixtures/multiline-snapshot-label/test.js.md +++ /dev/null @@ -1,18 +0,0 @@ -# Snapshot report for `test.js` - -The actual snapshot is saved in `test.js.snap`. - -Generated by [AVA](https://avajs.dev). - -## snapshot with a multiline label - -> ```javascript -> () => { -> return [ -> 'Hello', -> 'World!' -> ].join(', '); -> } -> ``` - - 'Hello, World!' diff --git a/test/snapshot-tests/fixtures/multiline-snapshot-label/test.js.snap b/test/snapshot-tests/fixtures/multiline-snapshot-label/test.js.snap deleted file mode 100644 index 3d43f7e8460522f2a2b0bac5b027d0c2a2ac157b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 zcmVW`9(P?im6~d z6^RK630a9{iN(o9nFS?W8k!2Wb_&(JTna!?lv+|+l&264;emiU*a&qUBoT;d>JX7w ey{!DqJPman1$9kpUand$py>dV?rV<7000236 { - const options = { - cwd: cwd('multiline-snapshot-label'), - env: { - AVA_FORCE_CI: 'not-ci' - } - }; + await withTemporaryFixture(cwd('multiline-snapshot-label'), async cwd => { + // Run test fixture + await fixture(['--update-snapshots'], { + cwd, + env: { + AVA_FORCE_CI: 'not-ci' + } + }); - // Run test fixture - await fixture(['--update-snapshots'], options); - - // Assert report is unchanged - const reportPath = path.join(options.cwd, 'test.js.md'); - - const report = fs.readFileSync(reportPath, { encoding: 'utf8' }); - - t.snapshot(report, 'resulting snapshot report'); + // Assert report is unchanged + const reportPath = path.join(cwd, 'test.js.md'); + const report = fs.readFileSync(reportPath, {encoding: 'utf8'}); + t.snapshot(report, 'resulting snapshot report'); + }); }); diff --git a/test/snapshot-tests/snapshots/formatting.js.md b/test/snapshot-tests/snapshots/formatting.js.md index 28ff43de5..aa2d483b0 100644 --- a/test/snapshot-tests/snapshots/formatting.js.md +++ b/test/snapshot-tests/snapshots/formatting.js.md @@ -17,11 +17,11 @@ Generated by [AVA](https://avajs.dev). ## snapshot with a multiline label␊ ␊ > \`\`\`javascript␊ - > () => {␍␊ - > return [␍␊ - > 'Hello',␍␊ - > 'World!'␍␊ - > ].join(', ');␍␊ + > () => {␊ + > return [␊ + > 'Hello',␊ + > 'World!'␊ + > ].join(', ');␊ > }␊ > \`\`\`␊ ␊ diff --git a/test/snapshot-tests/snapshots/formatting.js.snap b/test/snapshot-tests/snapshots/formatting.js.snap index a125df76bfa7d46ac11558c6faa41688dd639f97..8382a9887fbeb6de45189a4cfc46915ce07ab438 100644 GIT binary patch literal 305 zcmV-10nYwGRzV%HI000000009; zjIm0@KoEvEipXto-~$LFDUv|Q^@@jAX|HH;9PHj@BpcS7l%xCAb zMOqOxet$BNoeW@!T^6`F{(pF_r~(OBttO?FLC|uEn)4|LA?i@`E2kO?KF#283b#Rx z98&8H%zHgbPEc!`!BQ)qF1$TA@lhJrI zO)H|t?+pgBl_6MSn}u8)FArWSszAcULX*