diff --git a/test/sourcemaps/helpers.ts b/test/sourcemaps/helpers.ts new file mode 100644 index 0000000000..d0bea310e6 --- /dev/null +++ b/test/sourcemaps/helpers.ts @@ -0,0 +1,20 @@ +import MagicString from 'magic-string'; + +export function magic_string_preprocessor_result(filename: string, src: MagicString) { + return { + code: src.toString(), + map: src.generateMap({ + source: filename, + hires: true, + includeContent: false + }) + }; +} + +export function magic_string_replace_all(src: MagicString, search: string, replace: string) { + let idx = src.original.indexOf(search); + if (idx == -1) throw new Error('search not found in src'); + do { + src.overwrite(idx, idx + search.length, replace, { storeName: true }); + } while ((idx = src.original.indexOf(search, idx + 1)) != -1); +} diff --git a/test/sourcemaps/samples/compile-option-dev/_config.js b/test/sourcemaps/samples/compile-option-dev/_config.js index 5c638f5a10..b6ea851b6d 100644 --- a/test/sourcemaps/samples/compile-option-dev/_config.js +++ b/test/sourcemaps/samples/compile-option-dev/_config.js @@ -1,25 +1,5 @@ import MagicString from 'magic-string'; - -// TODO move util fns to test index.js - -function result(filename, src) { - return { - code: src.toString(), - map: src.generateMap({ - source: filename, - hires: true, - includeContent: false - }) - }; -} - -function replace_all(src, search, replace) { - let idx = src.original.indexOf(search); - if (idx == -1) throw new Error('search not found in src'); - do { - src.overwrite(idx, idx + search.length, replace); - } while ((idx = src.original.indexOf(search, idx + 1)) != -1); -} +import { magic_string_preprocessor_result, magic_string_replace_all } from '../../helpers'; export default { compile_options: { @@ -28,14 +8,14 @@ export default { preprocess: [ { style: ({ content, filename }) => { const src = new MagicString(content); - replace_all(src, '--replace-me-once', '\n --done-replace-once'); - replace_all(src, '--replace-me-twice', '\n--almost-done-replace-twice'); - return result(filename, src); + magic_string_replace_all(src, '--replace-me-once', '\n --done-replace-once'); + magic_string_replace_all(src, '--replace-me-twice', '\n--almost-done-replace-twice'); + return magic_string_preprocessor_result(filename, src); } }, { style: ({ content, filename }) => { const src = new MagicString(content); - replace_all(src, '--almost-done-replace-twice', '\n --done-replace-twice'); - return result(filename, src); + magic_string_replace_all(src, '--almost-done-replace-twice', '\n --done-replace-twice'); + return magic_string_preprocessor_result(filename, src); } } ] }; diff --git a/test/sourcemaps/samples/compile-option-dev/test.js b/test/sourcemaps/samples/compile-option-dev/test.js index 97a4931597..bf240a5a89 100644 --- a/test/sourcemaps/samples/compile-option-dev/test.js +++ b/test/sourcemaps/samples/compile-option-dev/test.js @@ -4,7 +4,7 @@ const b64dec = s => Buffer.from(s, 'base64').toString(); export async function test({ assert, css, js }) { - //We check that the css source map embedded in the js is accurate + // We check that the css source map embedded in the js is accurate const match = js.code.match(/\tstyle\.textContent = "(.*?)(?:\\n\/\*# sourceMappingURL=data:(.*?);charset=(.*?);base64,(.*?) \*\/)?";\n/); assert.notEqual(match, null); diff --git a/test/sourcemaps/samples/decoded-sourcemap/_config.js b/test/sourcemaps/samples/decoded-sourcemap/_config.js index fc4d2a03c9..dd4eee9461 100644 --- a/test/sourcemaps/samples/decoded-sourcemap/_config.js +++ b/test/sourcemaps/samples/decoded-sourcemap/_config.js @@ -1,22 +1,5 @@ import MagicString from 'magic-string'; - -function replace(search, replace, content, src, options = {}) { - let idx = -1; - while ((idx = content.indexOf(search, idx + 1)) != -1) { - src.overwrite(idx, idx + search.length, replace, options); - } -} - -function result(src, filename) { - return { - code: src.toString(), - map: src.generateDecodedMap({ // return decoded sourcemap - source: filename, - hires: true, - includeContent: false - }) - }; -} +import { magic_string_preprocessor_result, magic_string_replace_all } from '../../helpers'; export default { @@ -25,8 +8,8 @@ export default { preprocess: { markup: ({ content, filename }) => { const src = new MagicString(content); - replace('replace me', 'success', content, src); - return result(src, filename); + magic_string_replace_all(src, 'replace me', 'success'); + return magic_string_preprocessor_result(filename, src); } } }; diff --git a/test/sourcemaps/samples/decoded-sourcemap/test.js b/test/sourcemaps/samples/decoded-sourcemap/test.js index 54d930cb97..5a44ee83cf 100644 --- a/test/sourcemaps/samples/decoded-sourcemap/test.js +++ b/test/sourcemaps/samples/decoded-sourcemap/test.js @@ -11,7 +11,7 @@ export function test({ assert, input, preprocessed }) { assert.deepEqual(actualbar, { source: 'input.svelte', - name: null, + name: 'replace me', line: expected.line + 1, column: expected.column }); diff --git a/test/sourcemaps/samples/preprocessed-markup/_config.js b/test/sourcemaps/samples/preprocessed-markup/_config.js index 67ed18e9b5..0b2baeb49c 100644 --- a/test/sourcemaps/samples/preprocessed-markup/_config.js +++ b/test/sourcemaps/samples/preprocessed-markup/_config.js @@ -1,18 +1,12 @@ import MagicString from 'magic-string'; +import { magic_string_preprocessor_result, magic_string_replace_all } from '../../helpers'; export default { preprocess: { markup: ({ content, filename }) => { const src = new MagicString(content); - const idx = content.indexOf('baritone'); - src.overwrite(idx, idx+'baritone'.length, 'bar'); - return { - code: src.toString(), - map: src.generateDecodedMap({ - source: filename, - includeContent: false - }) - }; + magic_string_replace_all(src, 'baritone', 'bar'); + return magic_string_preprocessor_result(filename, src); } } }; diff --git a/test/sourcemaps/samples/preprocessed-markup/test.js b/test/sourcemaps/samples/preprocessed-markup/test.js index 9c3f0ef06d..b587103969 100644 --- a/test/sourcemaps/samples/preprocessed-markup/test.js +++ b/test/sourcemaps/samples/preprocessed-markup/test.js @@ -11,7 +11,7 @@ export function test({ assert, input, js }) { assert.deepEqual(actualbar, { source: 'input.svelte', - name: null, + name: 'baritone', line: expectedBar.line + 1, column: expectedBar.column }); diff --git a/test/sourcemaps/samples/preprocessed-multiple/_config.js b/test/sourcemaps/samples/preprocessed-multiple/_config.js index 4e7247cca2..39259a02a8 100644 --- a/test/sourcemaps/samples/preprocessed-multiple/_config.js +++ b/test/sourcemaps/samples/preprocessed-multiple/_config.js @@ -1,48 +1,25 @@ import MagicString from 'magic-string'; +import { magic_string_preprocessor_result, magic_string_replace_all } from '../../helpers'; export default { preprocess: { markup: ({ content, filename }) => { const src = new MagicString(content); - const idx = content.indexOf('baritone'); - src.overwrite(idx, idx + 'baritone'.length, 'bar'); - - const css_idx = content.indexOf('--bazitone'); - src.overwrite(css_idx, css_idx + '--bazitone'.length, '--baz'); - return { - code: src.toString(), - map: src.generateDecodedMap({ - source: filename, - hires: true, - includeContent: false - }) - }; + magic_string_replace_all(src, 'baritone', 'bar'); + magic_string_replace_all(src, '--bazitone', '--baz'); + return magic_string_preprocessor_result(filename, src); }, script: ({ content, filename }) => { const src = new MagicString(content); const idx = content.indexOf('bar'); src.prependLeft(idx, ' '); - return { - code: src.toString(), - map: src.generateDecodedMap({ - source: filename, - hires: true, - includeContent: false - }) - }; + return magic_string_preprocessor_result(filename, src); }, style: ({ content, filename }) => { const src = new MagicString(content); const idx = content.indexOf('--baz'); src.prependLeft(idx, ' '); - return { - code: src.toString(), - map: src.generateDecodedMap({ - source: filename, - hires: true, - includeContent: false - }) - }; + return magic_string_preprocessor_result(filename, src); } } }; diff --git a/test/sourcemaps/samples/preprocessed-multiple/test.js b/test/sourcemaps/samples/preprocessed-multiple/test.js index 64b2156773..a0cfe1fa8a 100644 --- a/test/sourcemaps/samples/preprocessed-multiple/test.js +++ b/test/sourcemaps/samples/preprocessed-multiple/test.js @@ -11,7 +11,7 @@ export function test({ assert, input, js, css }) { assert.deepEqual(actualbar, { source: 'input.svelte', - name: null, + name: 'baritone', line: expectedBar.line + 1, column: expectedBar.column }); @@ -25,13 +25,8 @@ export function test({ assert, input, js, css }) { assert.deepEqual(actualbaz, { source: 'input.svelte', - name: null, + name: '--bazitone', line: expectedBaz.line + 1, column: expectedBaz.column - }, `\ -couldn't find baz in css, - gen: ${JSON.stringify(start)} - actual: ${JSON.stringify(actualbaz)} - expected: ${JSON.stringify(expectedBaz)}\ -`); + }); } diff --git a/test/sourcemaps/samples/preprocessed-script/_config.js b/test/sourcemaps/samples/preprocessed-script/_config.js index da71bf195a..94bd83c22f 100644 --- a/test/sourcemaps/samples/preprocessed-script/_config.js +++ b/test/sourcemaps/samples/preprocessed-script/_config.js @@ -1,19 +1,12 @@ import MagicString from 'magic-string'; +import { magic_string_preprocessor_result, magic_string_replace_all } from '../../helpers'; export default { preprocess: { script: ({ content, filename }) => { const src = new MagicString(content); - const idx = content.indexOf('baritone'); - src.overwrite(idx, idx+'baritone'.length, 'bar'); - return { - code: src.toString(), - map: src.generateMap({ - source: filename, - hires: true, - includeContent: false - }) - }; + magic_string_replace_all(src, 'baritone', 'bar'); + return magic_string_preprocessor_result(filename, src); } } }; diff --git a/test/sourcemaps/samples/preprocessed-script/test.js b/test/sourcemaps/samples/preprocessed-script/test.js index a7e53a96e7..20a366f6d2 100644 --- a/test/sourcemaps/samples/preprocessed-script/test.js +++ b/test/sourcemaps/samples/preprocessed-script/test.js @@ -11,7 +11,7 @@ export function test({ assert, input, js }) { assert.deepEqual(actualbar, { source: 'input.svelte', - name: null, + name: 'baritone', line: expectedBar.line + 1, column: expectedBar.column }, "couldn't find bar: in source"); diff --git a/test/sourcemaps/samples/preprocessed-styles/_config.js b/test/sourcemaps/samples/preprocessed-styles/_config.js index 0c2f0ee958..04c8bcda7a 100644 --- a/test/sourcemaps/samples/preprocessed-styles/_config.js +++ b/test/sourcemaps/samples/preprocessed-styles/_config.js @@ -1,19 +1,12 @@ import MagicString from 'magic-string'; +import { magic_string_preprocessor_result, magic_string_replace_all } from '../../helpers'; export default { preprocess: { style: ({ content, filename }) => { const src = new MagicString(content); - const idx = content.indexOf('baritone'); - src.overwrite(idx, idx+'baritone'.length, 'bar'); - return { - code: src.toString(), - map: src.generateMap({ - source: filename, - hires: true, - includeContent: false - }) - }; + magic_string_replace_all(src, 'baritone', 'bar'); + return magic_string_preprocessor_result(filename, src); } } }; diff --git a/test/sourcemaps/samples/sourcemap-names/_config.js b/test/sourcemaps/samples/sourcemap-names/_config.js index 35c7badb29..c8557ba465 100644 --- a/test/sourcemaps/samples/sourcemap-names/_config.js +++ b/test/sourcemaps/samples/sourcemap-names/_config.js @@ -1,49 +1,32 @@ import MagicString from 'magic-string'; - -function replace(search, replace, content, src, options = { storeName: true }) { - let idx = -1; - while ((idx = content.indexOf(search, idx + 1)) != -1) { - src.overwrite(idx, idx + search.length, replace, options); - } -} - -function result(src, filename) { - return { - code: src.toString(), - map: src.generateDecodedMap({ - source: filename, - hires: true, - includeContent: false - }) - }; -} +import { magic_string_preprocessor_result, magic_string_replace_all } from '../../helpers'; export default { preprocess: [ { markup: ({ content, filename }) => { const src = new MagicString(content); - replace('baritone', 'bar', content, src); - replace('--bazitone', '--baz', content, src); - replace('old_name_1', 'temp_new_name_1', content, src); - replace('old_name_2', 'temp_new_name_2', content, src); - return result(src, filename); + magic_string_replace_all(src, 'baritone', 'bar'); + magic_string_replace_all(src,'--bazitone', '--baz'); + magic_string_replace_all(src,'old_name_1', 'temp_new_name_1'); + magic_string_replace_all(src,'old_name_2', 'temp_new_name_2'); + return magic_string_preprocessor_result(filename, src); } }, { markup: ({ content, filename }) => { const src = new MagicString(content); - replace('temp_new_name_1', 'temp_temp_new_name_1', content, src); - replace('temp_new_name_2', 'temp_temp_new_name_2', content, src); - return result(src, filename); + magic_string_replace_all(src, 'temp_new_name_1', 'temp_temp_new_name_1'); + magic_string_replace_all(src, 'temp_new_name_2', 'temp_temp_new_name_2'); + return magic_string_preprocessor_result(filename, src); } }, { markup: ({ content, filename }) => { const src = new MagicString(content); - replace('temp_temp_new_name_1', 'new_name_1', content, src); - replace('temp_temp_new_name_2', 'new_name_2', content, src); - return result(src, filename); + magic_string_replace_all(src, 'temp_temp_new_name_1', 'new_name_1'); + magic_string_replace_all(src, 'temp_temp_new_name_2', 'new_name_2'); + return magic_string_preprocessor_result(filename, src); } } ] diff --git a/test/sourcemaps/samples/sourcemap-names/test.js b/test/sourcemaps/samples/sourcemap-names/test.js index 85f4b1afdb..cd70bd25ce 100644 --- a/test/sourcemaps/samples/sourcemap-names/test.js +++ b/test/sourcemaps/samples/sourcemap-names/test.js @@ -1,14 +1,13 @@ // needed for workaround, TODO remove import { getLocator } from 'locate-character'; -export function test({ assert, input, preprocessed, js, css }) { +export function test({ assert, preprocessed, js, css }) { assert.deepEqual( preprocessed.map.names.sort(), ['baritone', '--bazitone', 'old_name_1', 'old_name_2'].sort() ); - // TODO move fn test_name to test/sourcemaps/index.js and use in samples/*/test.js function test_name(old_name, new_name, where) { let loc = { character: -1 };