Skip to content

Commit abf858a

Browse files
committed
Extract test helpers in sourcemap tests
1 parent 5d3d38c commit abf858a

File tree

14 files changed

+64
-147
lines changed

14 files changed

+64
-147
lines changed

test/sourcemaps/helpers.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import MagicString from 'magic-string';
2+
3+
export function magic_string_preprocessor_result(filename: string, src: MagicString) {
4+
return {
5+
code: src.toString(),
6+
map: src.generateMap({
7+
source: filename,
8+
hires: true,
9+
includeContent: false
10+
})
11+
};
12+
}
13+
14+
export function magic_string_replace_all(src: MagicString, search: string, replace: string) {
15+
let idx = src.original.indexOf(search);
16+
if (idx == -1) throw new Error('search not found in src');
17+
do {
18+
src.overwrite(idx, idx + search.length, replace, { storeName: true });
19+
} while ((idx = src.original.indexOf(search, idx + 1)) != -1);
20+
}
Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,5 @@
11
import MagicString from 'magic-string';
2-
3-
// TODO move util fns to test index.js
4-
5-
function result(filename, src) {
6-
return {
7-
code: src.toString(),
8-
map: src.generateMap({
9-
source: filename,
10-
hires: true,
11-
includeContent: false
12-
})
13-
};
14-
}
15-
16-
function replace_all(src, search, replace) {
17-
let idx = src.original.indexOf(search);
18-
if (idx == -1) throw new Error('search not found in src');
19-
do {
20-
src.overwrite(idx, idx + search.length, replace);
21-
} while ((idx = src.original.indexOf(search, idx + 1)) != -1);
22-
}
2+
import { magic_string_preprocessor_result, magic_string_replace_all } from '../../helpers';
233

244
export default {
255
compile_options: {
@@ -28,14 +8,14 @@ export default {
288
preprocess: [
299
{ style: ({ content, filename }) => {
3010
const src = new MagicString(content);
31-
replace_all(src, '--replace-me-once', '\n --done-replace-once');
32-
replace_all(src, '--replace-me-twice', '\n--almost-done-replace-twice');
33-
return result(filename, src);
11+
magic_string_replace_all(src, '--replace-me-once', '\n --done-replace-once');
12+
magic_string_replace_all(src, '--replace-me-twice', '\n--almost-done-replace-twice');
13+
return magic_string_preprocessor_result(filename, src);
3414
} },
3515
{ style: ({ content, filename }) => {
3616
const src = new MagicString(content);
37-
replace_all(src, '--almost-done-replace-twice', '\n --done-replace-twice');
38-
return result(filename, src);
17+
magic_string_replace_all(src, '--almost-done-replace-twice', '\n --done-replace-twice');
18+
return magic_string_preprocessor_result(filename, src);
3919
} }
4020
]
4121
};

test/sourcemaps/samples/compile-option-dev/test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const b64dec = s => Buffer.from(s, 'base64').toString();
44

55
export async function test({ assert, css, js }) {
66

7-
//We check that the css source map embedded in the js is accurate
7+
// We check that the css source map embedded in the js is accurate
88
const match = js.code.match(/\tstyle\.textContent = "(.*?)(?:\\n\/\*# sourceMappingURL=data:(.*?);charset=(.*?);base64,(.*?) \*\/)?";\n/);
99
assert.notEqual(match, null);
1010

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,5 @@
11
import MagicString from 'magic-string';
2-
3-
function replace(search, replace, content, src, options = {}) {
4-
let idx = -1;
5-
while ((idx = content.indexOf(search, idx + 1)) != -1) {
6-
src.overwrite(idx, idx + search.length, replace, options);
7-
}
8-
}
9-
10-
function result(src, filename) {
11-
return {
12-
code: src.toString(),
13-
map: src.generateDecodedMap({ // return decoded sourcemap
14-
source: filename,
15-
hires: true,
16-
includeContent: false
17-
})
18-
};
19-
}
2+
import { magic_string_preprocessor_result, magic_string_replace_all } from '../../helpers';
203

214
export default {
225

@@ -25,8 +8,8 @@ export default {
258
preprocess: {
269
markup: ({ content, filename }) => {
2710
const src = new MagicString(content);
28-
replace('replace me', 'success', content, src);
29-
return result(src, filename);
11+
magic_string_replace_all(src, 'replace me', 'success');
12+
return magic_string_preprocessor_result(filename, src);
3013
}
3114
}
3215
};

test/sourcemaps/samples/decoded-sourcemap/test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export function test({ assert, input, preprocessed }) {
1111

1212
assert.deepEqual(actualbar, {
1313
source: 'input.svelte',
14-
name: null,
14+
name: 'replace me',
1515
line: expected.line + 1,
1616
column: expected.column
1717
});
Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,12 @@
11
import MagicString from 'magic-string';
2+
import { magic_string_preprocessor_result, magic_string_replace_all } from '../../helpers';
23

34
export default {
45
preprocess: {
56
markup: ({ content, filename }) => {
67
const src = new MagicString(content);
7-
const idx = content.indexOf('baritone');
8-
src.overwrite(idx, idx+'baritone'.length, 'bar');
9-
return {
10-
code: src.toString(),
11-
map: src.generateDecodedMap({
12-
source: filename,
13-
includeContent: false
14-
})
15-
};
8+
magic_string_replace_all(src, 'baritone', 'bar');
9+
return magic_string_preprocessor_result(filename, src);
1610
}
1711
}
1812
};

test/sourcemaps/samples/preprocessed-markup/test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export function test({ assert, input, js }) {
1111

1212
assert.deepEqual(actualbar, {
1313
source: 'input.svelte',
14-
name: null,
14+
name: 'baritone',
1515
line: expectedBar.line + 1,
1616
column: expectedBar.column
1717
});
Lines changed: 6 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,25 @@
11
import MagicString from 'magic-string';
2+
import { magic_string_preprocessor_result, magic_string_replace_all } from '../../helpers';
23

34
export default {
45
preprocess: {
56
markup: ({ content, filename }) => {
67
const src = new MagicString(content);
7-
const idx = content.indexOf('baritone');
8-
src.overwrite(idx, idx + 'baritone'.length, 'bar');
9-
10-
const css_idx = content.indexOf('--bazitone');
11-
src.overwrite(css_idx, css_idx + '--bazitone'.length, '--baz');
12-
return {
13-
code: src.toString(),
14-
map: src.generateDecodedMap({
15-
source: filename,
16-
hires: true,
17-
includeContent: false
18-
})
19-
};
8+
magic_string_replace_all(src, 'baritone', 'bar');
9+
magic_string_replace_all(src, '--bazitone', '--baz');
10+
return magic_string_preprocessor_result(filename, src);
2011
},
2112
script: ({ content, filename }) => {
2213
const src = new MagicString(content);
2314
const idx = content.indexOf('bar');
2415
src.prependLeft(idx, ' ');
25-
return {
26-
code: src.toString(),
27-
map: src.generateDecodedMap({
28-
source: filename,
29-
hires: true,
30-
includeContent: false
31-
})
32-
};
16+
return magic_string_preprocessor_result(filename, src);
3317
},
3418
style: ({ content, filename }) => {
3519
const src = new MagicString(content);
3620
const idx = content.indexOf('--baz');
3721
src.prependLeft(idx, ' ');
38-
return {
39-
code: src.toString(),
40-
map: src.generateDecodedMap({
41-
source: filename,
42-
hires: true,
43-
includeContent: false
44-
})
45-
};
22+
return magic_string_preprocessor_result(filename, src);
4623
}
4724
}
4825
};

test/sourcemaps/samples/preprocessed-multiple/test.js

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export function test({ assert, input, js, css }) {
1111

1212
assert.deepEqual(actualbar, {
1313
source: 'input.svelte',
14-
name: null,
14+
name: 'baritone',
1515
line: expectedBar.line + 1,
1616
column: expectedBar.column
1717
});
@@ -25,13 +25,8 @@ export function test({ assert, input, js, css }) {
2525

2626
assert.deepEqual(actualbaz, {
2727
source: 'input.svelte',
28-
name: null,
28+
name: '--bazitone',
2929
line: expectedBaz.line + 1,
3030
column: expectedBaz.column
31-
}, `\
32-
couldn't find baz in css,
33-
gen: ${JSON.stringify(start)}
34-
actual: ${JSON.stringify(actualbaz)}
35-
expected: ${JSON.stringify(expectedBaz)}\
36-
`);
31+
});
3732
}
Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,12 @@
11
import MagicString from 'magic-string';
2+
import { magic_string_preprocessor_result, magic_string_replace_all } from '../../helpers';
23

34
export default {
45
preprocess: {
56
script: ({ content, filename }) => {
67
const src = new MagicString(content);
7-
const idx = content.indexOf('baritone');
8-
src.overwrite(idx, idx+'baritone'.length, 'bar');
9-
return {
10-
code: src.toString(),
11-
map: src.generateMap({
12-
source: filename,
13-
hires: true,
14-
includeContent: false
15-
})
16-
};
8+
magic_string_replace_all(src, 'baritone', 'bar');
9+
return magic_string_preprocessor_result(filename, src);
1710
}
1811
}
1912
};

test/sourcemaps/samples/preprocessed-script/test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export function test({ assert, input, js }) {
1111

1212
assert.deepEqual(actualbar, {
1313
source: 'input.svelte',
14-
name: null,
14+
name: 'baritone',
1515
line: expectedBar.line + 1,
1616
column: expectedBar.column
1717
}, "couldn't find bar: in source");
Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,12 @@
11
import MagicString from 'magic-string';
2+
import { magic_string_preprocessor_result, magic_string_replace_all } from '../../helpers';
23

34
export default {
45
preprocess: {
56
style: ({ content, filename }) => {
67
const src = new MagicString(content);
7-
const idx = content.indexOf('baritone');
8-
src.overwrite(idx, idx+'baritone'.length, 'bar');
9-
return {
10-
code: src.toString(),
11-
map: src.generateMap({
12-
source: filename,
13-
hires: true,
14-
includeContent: false
15-
})
16-
};
8+
magic_string_replace_all(src, 'baritone', 'bar');
9+
return magic_string_preprocessor_result(filename, src);
1710
}
1811
}
1912
};

test/sourcemaps/samples/sourcemap-names/_config.js

Lines changed: 12 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,32 @@
11
import MagicString from 'magic-string';
2-
3-
function replace(search, replace, content, src, options = { storeName: true }) {
4-
let idx = -1;
5-
while ((idx = content.indexOf(search, idx + 1)) != -1) {
6-
src.overwrite(idx, idx + search.length, replace, options);
7-
}
8-
}
9-
10-
function result(src, filename) {
11-
return {
12-
code: src.toString(),
13-
map: src.generateDecodedMap({
14-
source: filename,
15-
hires: true,
16-
includeContent: false
17-
})
18-
};
19-
}
2+
import { magic_string_preprocessor_result, magic_string_replace_all } from '../../helpers';
203

214
export default {
225
preprocess: [
236
{
247
markup: ({ content, filename }) => {
258
const src = new MagicString(content);
26-
replace('baritone', 'bar', content, src);
27-
replace('--bazitone', '--baz', content, src);
28-
replace('old_name_1', 'temp_new_name_1', content, src);
29-
replace('old_name_2', 'temp_new_name_2', content, src);
30-
return result(src, filename);
9+
magic_string_replace_all(src, 'baritone', 'bar');
10+
magic_string_replace_all(src,'--bazitone', '--baz');
11+
magic_string_replace_all(src,'old_name_1', 'temp_new_name_1');
12+
magic_string_replace_all(src,'old_name_2', 'temp_new_name_2');
13+
return magic_string_preprocessor_result(filename, src);
3114
}
3215
},
3316
{
3417
markup: ({ content, filename }) => {
3518
const src = new MagicString(content);
36-
replace('temp_new_name_1', 'temp_temp_new_name_1', content, src);
37-
replace('temp_new_name_2', 'temp_temp_new_name_2', content, src);
38-
return result(src, filename);
19+
magic_string_replace_all(src, 'temp_new_name_1', 'temp_temp_new_name_1');
20+
magic_string_replace_all(src, 'temp_new_name_2', 'temp_temp_new_name_2');
21+
return magic_string_preprocessor_result(filename, src);
3922
}
4023
},
4124
{
4225
markup: ({ content, filename }) => {
4326
const src = new MagicString(content);
44-
replace('temp_temp_new_name_1', 'new_name_1', content, src);
45-
replace('temp_temp_new_name_2', 'new_name_2', content, src);
46-
return result(src, filename);
27+
magic_string_replace_all(src, 'temp_temp_new_name_1', 'new_name_1');
28+
magic_string_replace_all(src, 'temp_temp_new_name_2', 'new_name_2');
29+
return magic_string_preprocessor_result(filename, src);
4730
}
4831
}
4932
]

test/sourcemaps/samples/sourcemap-names/test.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
// needed for workaround, TODO remove
22
import { getLocator } from 'locate-character';
33

4-
export function test({ assert, input, preprocessed, js, css }) {
4+
export function test({ assert, preprocessed, js, css }) {
55

66
assert.deepEqual(
77
preprocessed.map.names.sort(),
88
['baritone', '--bazitone', 'old_name_1', 'old_name_2'].sort()
99
);
1010

11-
// TODO move fn test_name to test/sourcemaps/index.js and use in samples/*/test.js
1211
function test_name(old_name, new_name, where) {
1312

1413
let loc = { character: -1 };

0 commit comments

Comments
 (0)