Cleanup tests

pull/5754/head
dmitrage 5 years ago
parent d5408003ef
commit c842d1617f

@ -1,5 +1,60 @@
import * as assert from 'assert';
import { getLocator } from 'locate-character';
import MagicString, { Bundle } from 'magic-string';
type AssertMappedParameters = {
code: string;
filename?: string;
input: string | ReturnType<typeof getLocator>;
input_code?: string;
preprocessed: any;
};
export function assert_mapped(
{ code, filename, input, input_code, preprocessed }: AssertMappedParameters
) {
const locate_input = typeof input === 'function' ? input : getLocator(input);
if (filename === undefined) filename = 'input.svelte';
if (input_code === undefined) input_code = code;
const source_loc = locate_input(input_code);
assert.notEqual(
source_loc,
undefined,
`failed to locate "${input_code}" in "${filename}"`
);
const transformed_loc = preprocessed.locate_1(code);
assert.notEqual(
transformed_loc,
undefined,
`failed to locate "${code}" in transformed "${filename}"`
);
assert.deepEqual(
preprocessed.mapConsumer.originalPositionFor(transformed_loc),
{
source: filename,
name: null,
line: source_loc.line + 1,
column: source_loc.column
},
`incorrect mappings for "${input_code}" in "${filename}"`
);
}
export function assert_not_located(
code: string,
locate: ReturnType<typeof getLocator>,
filename = 'input.svelte'
) {
assert.equal(
locate(code),
undefined,
`located "${code}" that should be removed from ${filename}`
);
}
export function magic_string_bundle(
inputs: Array<{ code: string | MagicString, filename: string }>,
filename = 'bundle.js',

@ -5,7 +5,7 @@ export const COMMON = ':global(html) { height: 100%; }\n';
// TODO: removing '\n' breaks test
// - _actual.svelte.map looks correct
// - _actual.css.map adds reference to </style> on input.svelte
// - Most probably it is caused by bug in current magic-string version (fixed in 0.25.7)
// - Most probably caused by bug in current magic-string version (fixed in 0.25.7)
export const STYLES = '.awesome { color: orange; }\n';
export default {

@ -1,27 +1,26 @@
import { getLocator } from 'locate-character';
import { assert_mapped } from '../../helpers';
import { COMMON, STYLES } from './_config';
export function test({ assert, input, preprocessed }) {
const assertMapped = (locateInput, code, filename) => {
const sourceLoc = locateInput(code);
const transformedLoc = preprocessed.locate_1(code);
assert.deepEqual(
preprocessed.mapConsumer.originalPositionFor(transformedLoc),
{
source: filename,
name: null,
line: sourceLoc.line + 1,
column: sourceLoc.column
},
`failed to locate "${code}" in "${filename}"`
);
};
export function test({ input, preprocessed }) {
// Transformed script, main file
assertMapped(input.locate, 'Divs ftw!', 'input.svelte');
assert_mapped({
filename: 'input.svelte',
code: 'Divs ftw!',
input: input.locate,
preprocessed
});
// External files
assertMapped(getLocator(COMMON), 'height: 100%;', 'common.scss');
assertMapped(getLocator(STYLES), 'color: orange;', 'styles.scss');
assert_mapped({
filename: 'common.scss',
code: 'height: 100%;',
input: COMMON,
preprocessed
});
assert_mapped({
filename: 'styles.scss',
code: 'color: orange;',
input: STYLES,
preprocessed
});
}

@ -1,17 +1,9 @@
export function test({ assert, input, preprocessed }) {
const content = '<h1>Hello world!</h1>';
import { assert_mapped } from '../../helpers';
const original = input.locate(content);
const transformed = preprocessed.locate_1('<h1>Hello world!</h1>');
assert.deepEqual(
preprocessed.mapConsumer.originalPositionFor(transformed),
{
source: 'input.svelte',
name: null,
line: original.line + 1,
column: original.column
},
`failed to locate "${content}"`
);
export function test({ input, preprocessed }) {
assert_mapped({
code: '<h1>Hello world!</h1>',
input: input.locate,
preprocessed
});
}

@ -1,30 +1,21 @@
export function test({ assert, input, preprocessed }) {
const assertMapped = (source, transformed) => {
const sourceLoc = input.locate(source);
const transformedLoc = preprocessed.locate_1(transformed);
assert.deepEqual(
preprocessed.mapConsumer.originalPositionFor(transformedLoc),
{
source: 'input.svelte',
name: null,
line: sourceLoc.line + 1,
column: sourceLoc.column
},
`failed to locate "${transformed}"`
);
};
const assertNotMapped = (code) => {
const transformedLoc = preprocessed.locate_1(code);
assert.strictEqual(transformedLoc, undefined, `failed to remove "${code}"`);
};
import { assert_mapped, assert_not_located } from '../../helpers';
export function test({ input, preprocessed }) {
// TS => JS code
assertMapped('let count: number = 0;', 'let count = 0;');
assert_mapped({
code: 'let count = 0;',
input_code: 'let count: number = 0;',
input: input.locate,
preprocessed
});
// Markup, not touched
assertMapped('<h1>Hello world!</h1>', '<h1>Hello world!</h1>');
assert_mapped({
code: '<h1>Hello world!</h1>',
input: input.locate,
preprocessed
});
// TS types, removed
assertNotMapped('ITimeoutDestroyer');
assert_not_located('ITimeoutDestroyer', preprocessed.locate_1);
}

Loading…
Cancel
Save