Skip to content

Commit 0dfdfc5

Browse files
Timeless0911fi3ework
authored andcommitted
test: add config test
1 parent ee00275 commit 0dfdfc5

File tree

12 files changed

+368
-0
lines changed

12 files changed

+368
-0
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2+
3+
exports[`Should compose create Rsbuild config correctly > Merge Rsbuild config 1`] = `
4+
[
5+
{
6+
"output": {
7+
"distPath": {
8+
"js": "./",
9+
},
10+
"filenameHash": false,
11+
"minify": false,
12+
},
13+
"source": {
14+
"alias": {
15+
"bar": "bar",
16+
"foo": "foo/esm",
17+
},
18+
"preEntry": "./b.js",
19+
},
20+
"tools": {
21+
"htmlPlugin": false,
22+
"rspack": {
23+
"experiments": {
24+
"outputModule": true,
25+
},
26+
"optimization": {
27+
"concatenateModules": true,
28+
},
29+
"output": {
30+
"library": {
31+
"type": "module",
32+
},
33+
"module": true,
34+
},
35+
},
36+
},
37+
},
38+
{
39+
"output": {
40+
"distPath": {
41+
"js": "./",
42+
},
43+
"filenameHash": false,
44+
"minify": false,
45+
},
46+
"source": {
47+
"alias": {
48+
"bar": "bar/cjs",
49+
"foo": "foo",
50+
},
51+
"preEntry": [
52+
"./a.js",
53+
"./c.js",
54+
"./d.js",
55+
],
56+
},
57+
"tools": {
58+
"htmlPlugin": false,
59+
"rspack": {
60+
"experiments": {
61+
"outputModule": true,
62+
},
63+
"optimization": {
64+
"concatenateModules": true,
65+
},
66+
"output": {
67+
"library": {
68+
"type": "module",
69+
},
70+
"module": true,
71+
},
72+
},
73+
},
74+
},
75+
{
76+
"output": {
77+
"distPath": {
78+
"js": "./",
79+
},
80+
"filenameHash": false,
81+
"minify": false,
82+
},
83+
"source": {
84+
"alias": {
85+
"bar": "bar",
86+
"foo": "foo",
87+
},
88+
"preEntry": "./a.js",
89+
},
90+
"tools": {
91+
"htmlPlugin": false,
92+
"rspack": {
93+
"experiments": {
94+
"outputModule": true,
95+
},
96+
"optimization": {
97+
"concatenateModules": true,
98+
},
99+
"output": {
100+
"library": {
101+
"type": "module",
102+
},
103+
"module": true,
104+
},
105+
},
106+
},
107+
},
108+
]
109+
`;

packages/core/tests/config.test.ts

Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
import { join } from 'node:path';
2+
import { describe, expect, test } from 'vitest';
3+
import { composeCreateRsbuildConfig, loadConfig } from '../src/config';
4+
import type { RslibConfig } from '../src/types/config';
5+
6+
describe('Should load config file correctly', () => {
7+
test('Load config.js in cjs project', async () => {
8+
const fixtureDir = join(__dirname, 'config/cjs');
9+
const configDir = join(fixtureDir, 'rslib.config.js');
10+
const config = await loadConfig(configDir);
11+
expect(config).toEqual({
12+
lib: [],
13+
source: {
14+
entry: {
15+
main: './foo/index.js',
16+
},
17+
},
18+
_privateMeta: {
19+
configFilePath: configDir,
20+
},
21+
});
22+
});
23+
24+
test('Load config.mjs in cjs project', async () => {
25+
const fixtureDir = join(__dirname, 'config/cjs');
26+
const configDir = join(fixtureDir, 'rslib.config.mjs');
27+
const config = await loadConfig(configDir);
28+
expect(config).toEqual({
29+
lib: [],
30+
source: {
31+
entry: {
32+
main: './foo/index.js',
33+
},
34+
},
35+
_privateMeta: {
36+
configFilePath: configDir,
37+
},
38+
});
39+
});
40+
41+
test('Load config.ts in cjs project', async () => {
42+
const fixtureDir = join(__dirname, 'config/cjs');
43+
const configDir = join(fixtureDir, 'rslib.config.ts');
44+
const config = await loadConfig(configDir);
45+
expect(config).toEqual({
46+
lib: [],
47+
source: {
48+
entry: {
49+
main: './foo/index.ts',
50+
},
51+
},
52+
_privateMeta: {
53+
configFilePath: configDir,
54+
},
55+
});
56+
});
57+
58+
test('Load config.cjs with defineConfig in cjs project', async () => {
59+
const fixtureDir = join(__dirname, 'config/cjs');
60+
const configDir = join(fixtureDir, 'rslib.config.cjs');
61+
const config = await loadConfig(configDir);
62+
expect(config).toEqual({
63+
lib: [],
64+
source: {
65+
entry: {
66+
main: './foo/index.js',
67+
},
68+
},
69+
_privateMeta: {
70+
configFilePath: configDir,
71+
},
72+
});
73+
});
74+
75+
test('Load config.js in esm project', async () => {
76+
const fixtureDir = join(__dirname, 'config/esm');
77+
const configDir = join(fixtureDir, 'rslib.config.js');
78+
const config = await loadConfig(configDir);
79+
expect(config).toEqual({
80+
lib: [],
81+
source: {
82+
entry: {
83+
main: './foo/index.js',
84+
},
85+
},
86+
_privateMeta: {
87+
configFilePath: configDir,
88+
},
89+
});
90+
});
91+
92+
test('Load config.cjs in esm project', async () => {
93+
const fixtureDir = join(__dirname, 'config/esm');
94+
const configDir = join(fixtureDir, 'rslib.config.cjs');
95+
const config = await loadConfig(configDir);
96+
expect(config).toEqual({
97+
lib: [],
98+
source: {
99+
entry: {
100+
main: './foo/index.js',
101+
},
102+
},
103+
_privateMeta: {
104+
configFilePath: configDir,
105+
},
106+
});
107+
});
108+
109+
test('Load config.ts in esm project', async () => {
110+
const fixtureDir = join(__dirname, 'config/esm');
111+
const configDir = join(fixtureDir, 'rslib.config.ts');
112+
const config = await loadConfig(configDir);
113+
expect(config).toEqual({
114+
lib: [],
115+
source: {
116+
entry: {
117+
main: './foo/index.ts',
118+
},
119+
},
120+
_privateMeta: {
121+
configFilePath: configDir,
122+
},
123+
});
124+
});
125+
126+
test('Load config.mjs with defineConfig in esm project', async () => {
127+
const fixtureDir = join(__dirname, 'config/esm');
128+
const configDir = join(fixtureDir, 'rslib.config.mjs');
129+
const config = await loadConfig(configDir);
130+
expect(config).toEqual({
131+
lib: [],
132+
source: {
133+
entry: {
134+
main: './foo/index.js',
135+
},
136+
},
137+
_privateMeta: {
138+
configFilePath: configDir,
139+
},
140+
});
141+
});
142+
});
143+
144+
describe('Should compose create Rsbuild config correctly', () => {
145+
test('Merge Rsbuild config', async () => {
146+
const rslibConfig: RslibConfig = {
147+
lib: [
148+
{
149+
format: 'esm',
150+
source: {
151+
alias: {
152+
foo: 'foo/esm',
153+
},
154+
preEntry: './b.js',
155+
},
156+
},
157+
{
158+
format: 'cjs',
159+
source: {
160+
alias: {
161+
bar: 'bar/cjs',
162+
},
163+
preEntry: ['./c.js', './d.js'],
164+
},
165+
},
166+
{
167+
format: 'umd',
168+
},
169+
],
170+
source: {
171+
alias: {
172+
foo: 'foo',
173+
bar: 'bar',
174+
},
175+
preEntry: './a.js',
176+
},
177+
output: {
178+
filenameHash: false,
179+
minify: true,
180+
},
181+
};
182+
const composedRsbuildConfig = await composeCreateRsbuildConfig(rslibConfig);
183+
expect(composedRsbuildConfig).toMatchSnapshot();
184+
});
185+
});
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"type": "commonjs"
3+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
const { defineConfig } = require('../../../../core/src/config');
2+
3+
module.exports = defineConfig((args) => ({
4+
lib: [],
5+
source: {
6+
entry: {
7+
main: './foo/index.js',
8+
},
9+
},
10+
}));
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
module.exports = {
2+
lib: [],
3+
source: {
4+
entry: {
5+
main: './foo/index.js',
6+
},
7+
},
8+
};
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export default {
2+
lib: [],
3+
source: {
4+
entry: {
5+
main: './foo/index.js',
6+
},
7+
},
8+
};
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export default {
2+
lib: [],
3+
source: {
4+
entry: {
5+
main: './foo/index.ts',
6+
},
7+
},
8+
};
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"type": "module"
3+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
module.exports = {
2+
lib: [],
3+
source: {
4+
entry: {
5+
main: './foo/index.js',
6+
},
7+
},
8+
};
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export default {
2+
lib: [],
3+
source: {
4+
entry: {
5+
main: './foo/index.js',
6+
},
7+
},
8+
};

0 commit comments

Comments
 (0)