Skip to content

Commit ebc9970

Browse files
committed
feat(server): add callback support for invalidate
1 parent 45d39ac commit ebc9970

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');
@@ -75,6 +76,51 @@ describe('Server', () => {
7576
});
7677
});
7778

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

0 commit comments

Comments
 (0)