You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.5 KiB
TypeScript
80 lines
2.5 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { removeLangSuffix, mapToRelative } from '../sourcemaps';
|
|
import { lang_sep } from '../../preprocess';
|
|
import { normalizePath } from 'vite';
|
|
import path from 'path';
|
|
import { fileURLToPath, pathToFileURL } from 'url';
|
|
|
|
const fixtureDir = normalizePath(
|
|
path.join(path.dirname(fileURLToPath(import.meta.url)), 'fixtures', 'preprocess')
|
|
);
|
|
const filename = 'File.svelte';
|
|
|
|
describe('removeLangSuffix', () => {
|
|
it('removes suffix', () => {
|
|
const suffix = `${lang_sep}scss`;
|
|
const map = {
|
|
file: `${fixtureDir}/${filename}${suffix}`,
|
|
sources: ['foo.scss', `${fixtureDir}/${filename}${suffix}`],
|
|
sourceRoot: fixtureDir
|
|
};
|
|
removeLangSuffix(map, suffix);
|
|
expect(map.file).toBe(`${fixtureDir}/${filename}`);
|
|
expect(map.sourceRoot).toBe(fixtureDir);
|
|
expect(map.sources[0]).toBe('foo.scss');
|
|
expect(map.sources[1]).toBe(`${fixtureDir}/${filename}`);
|
|
});
|
|
});
|
|
|
|
describe('mapToRelative', () => {
|
|
it('converts absolute to relative', () => {
|
|
const file = `${fixtureDir}/File.svelte`;
|
|
const map = {
|
|
file,
|
|
sources: [`${fixtureDir}/foo.scss`, file]
|
|
};
|
|
mapToRelative(map, file);
|
|
expect(map.file).toBe('File.svelte');
|
|
expect(map.sources[0]).toBe('foo.scss');
|
|
expect(map.sources[1]).toBe('File.svelte');
|
|
});
|
|
|
|
it('accounts for sourceRoot', () => {
|
|
const file = `${fixtureDir}/File.svelte`;
|
|
const sourceRoot = normalizePath(path.resolve(fixtureDir, '..'));
|
|
const rootedBase = fixtureDir.replace(sourceRoot, '');
|
|
const map = {
|
|
file,
|
|
sourceRoot,
|
|
sources: [
|
|
`${rootedBase}/foo.scss`,
|
|
`${rootedBase}/File.svelte`,
|
|
`${pathToFileURL(`${fixtureDir}/bar.scss`)}`
|
|
]
|
|
};
|
|
mapToRelative(map, file);
|
|
expect(map.file).toBe('File.svelte');
|
|
expect(map.sources[0]).toBe('foo.scss');
|
|
expect(map.sources[1]).toBe('File.svelte');
|
|
expect(map.sources[2]).toBe('bar.scss');
|
|
expect(map.sources.length).toBe(3);
|
|
expect(map.sourceRoot).not.toBeDefined();
|
|
});
|
|
|
|
it('accounts for relative sourceRoot', () => {
|
|
const file = `${fixtureDir}/File.svelte`;
|
|
const map = {
|
|
file,
|
|
sourceRoot: './some-path/..',
|
|
sources: [`foo.scss`, `File.svelte`, `${pathToFileURL(`${fixtureDir}/bar.scss`)}`]
|
|
};
|
|
mapToRelative(map, file);
|
|
expect(map.file).toBe('File.svelte');
|
|
expect(map.sources[0]).toBe('./some-path/../foo.scss');
|
|
expect(map.sources[1]).toBe('./some-path/../File.svelte');
|
|
expect(map.sources[2]).toBe('bar.scss');
|
|
expect(map.sources.length).toBe(3);
|
|
expect(map.sourceRoot).not.toBeDefined();
|
|
});
|
|
});
|