-
-
Notifications
You must be signed in to change notification settings - Fork 557
/
test.js
85 lines (78 loc) 路 2.58 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
const test = require('ava');
const { rollup } = require('rollup');
const esmShim = require('../');
test.serial('inject cjs shim for esm output', async (t) => {
const bundle = await rollup({
input: 'test/fixtures/cjs.js',
plugins: [esmShim()]
});
const result = await bundle.generate({ format: 'es' });
t.is(result.output.length, 1);
const [output] = result.output;
t.snapshot(output.code);
t.falsy(output.map);
});
test.serial('inject cjs shim for esm output with sourcemap', async (t) => {
const bundle = await rollup({
input: 'test/fixtures/cjs.js',
plugins: [esmShim()]
});
const result = await bundle.generate({ format: 'es', sourcemap: true });
t.is(result.output.length, 2);
const [output, map] = result.output;
t.snapshot(output.code);
t.truthy(output.map);
t.is(output.map.file, 'cjs.js');
t.deepEqual(output.map.sources, ['test/fixtures/cjs.js']);
t.is(map.fileName, 'cjs.js.map');
});
test.serial('not inject cjs shim for cjs output', async (t) => {
const bundle = await rollup({
input: 'test/fixtures/cjs.js',
plugins: [esmShim()]
});
const result = await bundle.generate({ format: 'cjs' });
t.is(result.output.length, 1);
const [output] = result.output;
t.snapshot(output.code);
t.falsy(output.map);
});
test.serial('inject cjs shim for esm output with a single import statement', async (t) => {
const bundle = await rollup({
input: 'test/fixtures/cjs-single-import.js',
plugins: [esmShim()],
external: ['magic-string']
});
const result = await bundle.generate({ format: 'es' });
t.is(result.output.length, 1);
const [output] = result.output;
t.snapshot(output.code);
t.falsy(output.map);
});
test.serial('inject cjs shim for esm output with multiple import statements', async (t) => {
const bundle = await rollup({
input: 'test/fixtures/cjs-multiple-imports.js',
plugins: [esmShim()],
external: ['magic-string', 'node:crypto']
});
const result = await bundle.generate({ format: 'es' });
t.is(result.output.length, 1);
const [output] = result.output;
t.snapshot(output.code);
t.falsy(output.map);
});
// see issue #1649 https://github.com/rollup/plugins/issues/1649
test.serial(
'inject cjs shim should not break on valid js object with `import` literal value',
async (t) => {
const bundle = await rollup({
input: 'test/fixtures/cjs-import-literal.js',
plugins: [esmShim()]
});
const result = await bundle.generate({ format: 'es' });
t.is(result.output.length, 1);
const [output] = result.output;
t.snapshot(output.code);
t.falsy(output.map);
}
);