Skip to content

Commit 86871e1

Browse files
committed
feat(server): add callback support for invalidate
1 parent c0f8fde commit 86871e1

File tree

2 files changed

+48
-2
lines changed

2 files changed

+48
-2
lines changed

lib/Server.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,9 +1003,9 @@ class Server {
10031003
this.contentBaseWatchers.push(watcher);
10041004
}
10051005

1006-
invalidate() {
1006+
invalidate(callback) {
10071007
if (this.middleware) {
1008-
this.middleware.invalidate();
1008+
this.middleware.invalidate(callback);
10091009
}
10101010
}
10111011
}

test/Server.test.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
const { relative, sep } = require('path');
44
const webpack = require('webpack');
5+
const { noop } = require('webpack-dev-middleware/lib/util');
56
const request = require('supertest');
67
// Mock opn before loading Server
78
jest.mock('opn');
@@ -74,6 +75,51 @@ describe('Server', () => {
7475
});
7576
});
7677

78+
describe('Testing callback functions on calling invalidate without callback', () => {
79+
it('should be `noop` (the default callback function)', () => {
80+
return new Promise((res) => {
81+
// eslint-disable-next-line
82+
const Server = require('../lib/Server');
83+
const compiler = webpack(config);
84+
const server = new Server(compiler);
85+
86+
server.invalidate();
87+
expect(server.middleware.context.callbacks[0]).toBe(noop);
88+
89+
compiler.hooks.done.tap('webpack-dev-server', () => {
90+
server.close(() => {
91+
res();
92+
});
93+
});
94+
95+
compiler.run(() => {});
96+
});
97+
});
98+
});
99+
100+
describe('Testing callback functions on calling invalidate with callback', () => {
101+
it('should be `callback` function', () => {
102+
return new Promise((res) => {
103+
// eslint-disable-next-line
104+
const Server = require('../lib/Server');
105+
const compiler = webpack(config);
106+
const callback = jest.fn();
107+
const server = new Server(compiler);
108+
server.invalidate(callback);
109+
110+
expect(server.middleware.context.callbacks[0]).toBe(callback);
111+
112+
compiler.hooks.done.tap('webpack-dev-server', () => {
113+
server.close(() => {
114+
res();
115+
});
116+
});
117+
118+
compiler.run(() => {});
119+
});
120+
});
121+
});
122+
77123
// issue: https://github.com/webpack/webpack-dev-server/issues/1724
78124
describe('express.static.mine.types', () => {
79125
beforeEach(() => {

0 commit comments

Comments
 (0)