/
serve-basic.test.js
135 lines (102 loc) · 4.58 KB
/
serve-basic.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
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
134
135
'use strict';
const path = require('path');
const getPort = require('get-port');
const { runServe, isDevServer4 } = require('../../utils/test-utils');
const testPath = path.resolve(__dirname);
const usageText = 'webpack serve|s [options]';
const descriptionText = 'Run the webpack dev server';
describe('basic serve usage', () => {
let port;
beforeEach(async () => {
port = await getPort();
});
const isWindows = process.platform === 'win32';
// TODO fix me on windows
if (isWindows) {
it('TODO: Fix on windows', () => {
expect(true).toBe(true);
});
return;
}
it('should work', async () => {
const { stderr, stdout } = await runServe(['--no-hot'], __dirname);
expect(stderr).toBeFalsy();
expect(stdout).toContain('main.js');
expect(stdout).not.toContain('HotModuleReplacementPlugin');
});
it('should work with the "--mode" option', async () => {
const { stderr, stdout } = await runServe([], __dirname);
expect(stderr).toBeFalsy();
expect(stdout).toContain('development');
expect(stdout).toContain('main.js');
expect(stdout).not.toContain('HotModuleReplacementPlugin');
});
it('should work with the "--mode" option #2', async () => {
const { stderr, stdout } = await runServe(['--mode', 'production'], __dirname);
expect(stderr).toBeFalsy();
expect(stdout).toContain('production');
expect(stdout).toContain('main.js');
expect(stdout).not.toContain('HotModuleReplacementPlugin');
});
it('should work with the "--mode" option #2', async () => {
const { stderr, stdout } = await runServe(['--mode', 'development'], __dirname);
expect(stderr).toBeFalsy();
expect(stdout).toContain('development');
expect(stdout).toContain('main.js');
expect(stdout).not.toContain('HotModuleReplacementPlugin');
});
it('should work with flags', async () => {
const { stderr, stdout } = await runServe(['--hot'], __dirname);
expect(stderr).toBeFalsy();
expect(stdout).toContain('main.js');
expect(stdout).toContain('HotModuleReplacementPlugin');
});
it('should respect the --no-color flag', async () => {
const { stdout, stderr } = await runServe(['--help', '--no-color'], __dirname);
expect(stderr).toBeFalsy();
expect(stdout).toContain(usageText);
expect(stdout).toContain(descriptionText);
});
it('should not invoke info subcommand', async () => {
const { stdout, stderr } = await runServe(['--client-log-level', 'info'], testPath);
expect(stderr).toBeFalsy();
expect(stdout).toContain('main.js');
expect(stdout).not.toContain('HotModuleReplacementPlugin');
});
it('compiles without flags', async () => {
const { stdout, stderr } = await runServe(['--port', port], testPath);
expect(stderr).toBeFalsy();
expect(stdout).toContain('main.js');
expect(stdout).not.toContain('HotModuleReplacementPlugin');
});
it('uses hot flag to alter bundle', async () => {
const { stdout, stderr } = await runServe(['--port', port, '--hot'], testPath);
expect(stderr).toBeFalsy();
expect(stdout).toContain('main.js');
expect(stdout).toContain('HotModuleReplacementPlugin');
});
it('uses hot-only flag to alter bundle', async () => {
const { stdout, stderr } = await runServe(['--port', port, isDevServer4 ? '--hot only' : '--hot-only'], testPath);
expect(stderr).toBeFalsy();
expect(stdout).toContain('main.js');
expect(stdout).toContain('HotModuleReplacementPlugin');
});
it('uses no-hot flag', async () => {
const { stdout, stderr } = await runServe(['--port', port, '--no-hot'], testPath);
expect(stderr).toBeFalsy();
expect(stdout).toContain('main.js');
expect(stdout).not.toContain('HotModuleReplacementPlugin');
});
it('uses hot flag and progress flag', async () => {
const { stdout, stderr } = await runServe(['--port', port, '--hot', '--progress'], testPath);
expect(stderr).toContain('webpack.Progress');
expect(stdout).toContain('main.js');
expect(stdout).toContain('HotModuleReplacementPlugin');
});
it('throws error on unknown flag', async () => {
const { exitCode, stdout, stderr } = await runServe(['--port', port, '--unknown-flag'], testPath);
expect(exitCode).toBe(2);
expect(stderr).toContain("unknown option '--unknown-flag'");
expect(stdout).toBeFalsy();
});
});