Source code

Revision control

Copy as Markdown

Other Tools

export const description = `
Test for "parseImports" utility.
`;
import { makeTestGroup } from '../common/framework/test_group.js';
import { parseImports } from '../common/util/parse_imports.js';
import { UnitTest } from './unit_test.js';
class F extends UnitTest {
test(content: string, expect: string[]): void {
const got = parseImports('a/b/c.js', content);
const expectJoined = expect.join('\n');
const gotJoined = got.join('\n');
this.expect(
expectJoined === gotJoined,
`
expected: ${expectJoined}
got: ${gotJoined}`
);
}
}
export const g = makeTestGroup(F);
g.test('empty').fn(t => {
t.test(``, []);
t.test(`\n`, []);
t.test(`\n\n`, []);
});
g.test('simple').fn(t => {
t.test(`import 'x/y/z.js';`, ['a/b/x/y/z.js']);
t.test(`import * as blah from 'x/y/z.js';`, ['a/b/x/y/z.js']);
t.test(`import { blah } from 'x/y/z.js';`, ['a/b/x/y/z.js']);
});
g.test('multiple').fn(t => {
t.test(
`
blah blah blah
import 'x/y/z.js';
more blah
import * as blah from 'm/n/o.js';
extra blah
import { blah } from '../h.js';
ending with blah
`,
['a/b/x/y/z.js', 'a/b/m/n/o.js', 'a/h.js']
);
});
g.test('multiline').fn(t => {
t.test(
`import {
blah
} from 'x/y/z.js';`,
['a/b/x/y/z.js']
);
t.test(
`import {
blahA,
blahB,
} from 'x/y/z.js';`,
['a/b/x/y/z.js']
);
});
g.test('file_characters').fn(t => {
t.test(`import '01234_56789.js';`, ['a/b/01234_56789.js']);
});
g.test('relative_paths').fn(t => {
t.test(`import '../x.js';`, ['a/x.js']);
t.test(`import '../x/y.js';`, ['a/x/y.js']);
t.test(`import '../../x.js';`, ['x.js']);
t.test(`import '../../../x.js';`, ['../x.js']);
t.test(`import '../../../../x.js';`, ['../../x.js']);
});