Extract test helpers in sourcemap tests

pull/5584/head
halfnelson 5 years ago
parent c7f8749b92
commit 9583d72c92

@ -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);
}

@ -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);
} }
]
};

@ -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);

@ -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);
}
}
};

@ -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
});

@ -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);
}
}
};

@ -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
});

@ -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);
}
}
};

@ -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)}\
`);
});
}

@ -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);
}
}
};

@ -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");

@ -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);
}
}
};

@ -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);
}
}
]

@ -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 };

Loading…
Cancel
Save