-
-
Notifications
You must be signed in to change notification settings - Fork 601
/
Copy pathtest.mjs
executable file
·133 lines (110 loc) · 4.21 KB
/
test.mjs
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/* eslint-disable no-bitwise */
import { createRequire } from 'module';
import test from 'ava';
import { rollup } from 'rollup';
import multiEntry from 'current-package';
import { getCode } from '../../../util/test.js';
test('takes a single file as input', async (t) => {
const bundle = await rollup({ input: 'test/fixtures/0.js', plugins: [multiEntry()] });
const code = await getCode(bundle);
t.truthy(code.includes('exports.zero = zero;'));
});
test('takes an array of files as input', async (t) => {
const bundle = await rollup({
input: ['test/fixtures/0.js', 'test/fixtures/1.js'],
plugins: [multiEntry()]
});
const code = await getCode(bundle);
t.truthy(code.includes('exports.zero = zero;'));
t.truthy(code.includes('exports.one = one;'));
});
test('allows an empty array as input', async (t) => {
const bundle = await rollup({ input: [], plugins: [multiEntry()] });
const code = await getCode(bundle);
t.falsy(code.includes('exports'));
});
test('takes a glob as input', async (t) => {
const bundle = await rollup({ input: 'test/fixtures/{0,1}.js', plugins: [multiEntry()] });
const code = await getCode(bundle);
t.truthy(code.includes('exports.zero = zero;'));
t.truthy(code.includes('exports.one = one;'));
});
test('takes an array of globs as input', async (t) => {
const bundle = await rollup({
input: ['test/fixtures/{0,}.js', 'test/fixtures/{1,}.js'],
plugins: [multiEntry()]
});
const code = await getCode(bundle);
t.truthy(code.includes('exports.zero = zero;'));
t.truthy(code.includes('exports.one = one;'));
});
test('takes an {include,exclude} object as input', async (t) => {
const bundle = await rollup({
input: {
include: ['test/fixtures/*.js'],
exclude: ['test/fixtures/1.js']
},
plugins: [multiEntry()]
});
const code = await getCode(bundle);
t.truthy(code.includes('exports.zero = zero;'));
t.falsy(code.includes('exports.one = one;'));
});
test('allows to prevent exporting', async (t) => {
const bundle = await rollup({
input: {
include: ['test/fixtures/*.js'],
exports: false
},
plugins: [multiEntry()]
});
const code = await getCode(bundle);
t.truthy(code.includes(`console.log('Hello, 2');`));
t.falsy(code.includes('zero'));
t.falsy(code.includes('one'));
});
test('makes a bundle with entryFileName as the filename', async (t) => {
const bundle = await rollup({
input: 'test/fixtures/{0,1}.js',
plugins: [multiEntry({ entryFileName: 'testing.js' })]
});
const [result] = await getCode(bundle, { format: 'cjs' }, true);
t.is(result.fileName, 'testing.js');
});
test('works as CJS plugin', async (t) => {
const require = createRequire(import.meta.url);
const multiEntryPluginCjs = require('current-package');
const bundle = await rollup({ input: 'test/fixtures/0.js', plugins: [multiEntryPluginCjs()] });
const code = await getCode(bundle);
t.truthy(code.includes('exports.zero = zero;'));
});
test('maintains filename when preserveModules = true', async (t) => {
const bundle = await rollup({
input: 'test/fixtures/{0,1}.js',
plugins: [multiEntry({ preserveModules: true, entryFileName: 'testing.js' })]
});
const files = await getCode(bundle, { format: 'cjs', preserveModules: true }, true);
const nonVirtualFiles = files.filter(({ fileName }) => !fileName.includes('_virtual/'));
t.is(nonVirtualFiles.length, 2);
t.truthy(nonVirtualFiles.find(({ fileName }) => fileName === '0.js'));
t.truthy(nonVirtualFiles.find(({ fileName }) => fileName === '1.js'));
});
test('makes a bundle with entryFileName as the output.entryFileName when preserveModules = true and entryName is not set', async (t) => {
const bundle = await rollup({
input: 'test/fixtures/{0,1}.js',
plugins: [multiEntry({ preserveModules: true })]
});
const files = await getCode(
bundle,
{
format: 'cjs',
preserveModules: true,
entryFileNames: (c) => `entry-${c.name}.js`
},
true
);
const nonVirtualFiles = files.filter(({ fileName }) => !fileName.includes('_virtual/'));
t.is(nonVirtualFiles.length, 2);
t.truthy(nonVirtualFiles.find(({ fileName }) => fileName === 'entry-0.js'));
t.truthy(nonVirtualFiles.find(({ fileName }) => fileName === 'entry-1.js'));
});