From 86871e101d4a7302c9c56814f7a3bb2f17a92b79 Mon Sep 17 00:00:00 2001 From: Eslam El-Hakmey Date: Fri, 17 May 2019 17:13:30 +0200 Subject: [PATCH 1/3] feat(server): add callback support for invalidate --- lib/Server.js | 4 ++-- test/Server.test.js | 46 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/lib/Server.js b/lib/Server.js index ca1a357a1e..1414343bee 100644 --- a/lib/Server.js +++ b/lib/Server.js @@ -1003,9 +1003,9 @@ class Server { this.contentBaseWatchers.push(watcher); } - invalidate() { + invalidate(callback) { if (this.middleware) { - this.middleware.invalidate(); + this.middleware.invalidate(callback); } } } diff --git a/test/Server.test.js b/test/Server.test.js index 7e05d0e968..f2c186a21e 100644 --- a/test/Server.test.js +++ b/test/Server.test.js @@ -2,6 +2,7 @@ const { relative, sep } = require('path'); const webpack = require('webpack'); +const { noop } = require('webpack-dev-middleware/lib/util'); const request = require('supertest'); // Mock opn before loading Server jest.mock('opn'); @@ -74,6 +75,51 @@ describe('Server', () => { }); }); + describe('Testing callback functions on calling invalidate without callback', () => { + it('should be `noop` (the default callback function)', () => { + return new Promise((res) => { + // eslint-disable-next-line + const Server = require('../lib/Server'); + const compiler = webpack(config); + const server = new Server(compiler); + + server.invalidate(); + expect(server.middleware.context.callbacks[0]).toBe(noop); + + compiler.hooks.done.tap('webpack-dev-server', () => { + server.close(() => { + res(); + }); + }); + + compiler.run(() => {}); + }); + }); + }); + + describe('Testing callback functions on calling invalidate with callback', () => { + it('should be `callback` function', () => { + return new Promise((res) => { + // eslint-disable-next-line + const Server = require('../lib/Server'); + const compiler = webpack(config); + const callback = jest.fn(); + const server = new Server(compiler); + server.invalidate(callback); + + expect(server.middleware.context.callbacks[0]).toBe(callback); + + compiler.hooks.done.tap('webpack-dev-server', () => { + server.close(() => { + res(); + }); + }); + + compiler.run(() => {}); + }); + }); + }); + // issue: https://github.com/webpack/webpack-dev-server/issues/1724 describe('express.static.mine.types', () => { beforeEach(() => { From d371f8142c31cee98911a6a29b3360c37b5f44e1 Mon Sep 17 00:00:00 2001 From: Eslam El-Hakmey Date: Thu, 30 May 2019 22:51:24 +0200 Subject: [PATCH 2/3] test: remove promise & use done --- test/Server.test.js | 54 ++++++++++++++++++--------------------------- 1 file changed, 21 insertions(+), 33 deletions(-) diff --git a/test/Server.test.js b/test/Server.test.js index f2c186a21e..6a1d7658a5 100644 --- a/test/Server.test.js +++ b/test/Server.test.js @@ -76,47 +76,35 @@ describe('Server', () => { }); describe('Testing callback functions on calling invalidate without callback', () => { - it('should be `noop` (the default callback function)', () => { - return new Promise((res) => { - // eslint-disable-next-line - const Server = require('../lib/Server'); - const compiler = webpack(config); - const server = new Server(compiler); - - server.invalidate(); - expect(server.middleware.context.callbacks[0]).toBe(noop); - - compiler.hooks.done.tap('webpack-dev-server', () => { - server.close(() => { - res(); - }); - }); + it('should be `noop` (the default callback function)', (done) => { + const compiler = webpack(config); + const server = new Server(compiler); + + server.invalidate(); + expect(server.middleware.context.callbacks[0]).toBe(noop); - compiler.run(() => {}); + compiler.hooks.done.tap('webpack-dev-server', () => { + server.close(done); }); + + compiler.run(() => {}); }); }); describe('Testing callback functions on calling invalidate with callback', () => { - it('should be `callback` function', () => { - return new Promise((res) => { - // eslint-disable-next-line - const Server = require('../lib/Server'); - const compiler = webpack(config); - const callback = jest.fn(); - const server = new Server(compiler); - server.invalidate(callback); - - expect(server.middleware.context.callbacks[0]).toBe(callback); - - compiler.hooks.done.tap('webpack-dev-server', () => { - server.close(() => { - res(); - }); - }); + it('should be `callback` function', (done) => { + const compiler = webpack(config); + const callback = jest.fn(); + const server = new Server(compiler); + server.invalidate(callback); + + expect(server.middleware.context.callbacks[0]).toBe(callback); - compiler.run(() => {}); + compiler.hooks.done.tap('webpack-dev-server', () => { + server.close(done); }); + + compiler.run(() => {}); }); }); From 7d3b724ae112cbdad07e3d00840b68583d87aa2b Mon Sep 17 00:00:00 2001 From: Eslam El-Hakmey Date: Thu, 30 May 2019 23:32:40 +0200 Subject: [PATCH 3/3] test: move tests to a separate file --- test/InvalidateCallback.test.js | 41 +++++++++++++++++++++++++++++++++ test/Server.test.js | 34 --------------------------- 2 files changed, 41 insertions(+), 34 deletions(-) create mode 100644 test/InvalidateCallback.test.js diff --git a/test/InvalidateCallback.test.js b/test/InvalidateCallback.test.js new file mode 100644 index 0000000000..c95781f24e --- /dev/null +++ b/test/InvalidateCallback.test.js @@ -0,0 +1,41 @@ +'use strict'; + +const webpack = require('webpack'); +const { noop } = require('webpack-dev-middleware/lib/util'); +const Server = require('../lib/Server'); +const config = require('./fixtures/simple-config/webpack.config'); + +describe('Invalidate Callback', () => { + describe('Testing callback functions on calling invalidate without callback', () => { + it('should be `noop` (the default callback function)', (done) => { + const compiler = webpack(config); + const server = new Server(compiler); + + server.invalidate(); + expect(server.middleware.context.callbacks[0]).toBe(noop); + + compiler.hooks.done.tap('webpack-dev-server', () => { + server.close(done); + }); + + compiler.run(() => {}); + }); + }); + + describe('Testing callback functions on calling invalidate with callback', () => { + it('should be `callback` function', (done) => { + const compiler = webpack(config); + const callback = jest.fn(); + const server = new Server(compiler); + server.invalidate(callback); + + expect(server.middleware.context.callbacks[0]).toBe(callback); + + compiler.hooks.done.tap('webpack-dev-server', () => { + server.close(done); + }); + + compiler.run(() => {}); + }); + }); +}); diff --git a/test/Server.test.js b/test/Server.test.js index 6a1d7658a5..7e05d0e968 100644 --- a/test/Server.test.js +++ b/test/Server.test.js @@ -2,7 +2,6 @@ const { relative, sep } = require('path'); const webpack = require('webpack'); -const { noop } = require('webpack-dev-middleware/lib/util'); const request = require('supertest'); // Mock opn before loading Server jest.mock('opn'); @@ -75,39 +74,6 @@ describe('Server', () => { }); }); - describe('Testing callback functions on calling invalidate without callback', () => { - it('should be `noop` (the default callback function)', (done) => { - const compiler = webpack(config); - const server = new Server(compiler); - - server.invalidate(); - expect(server.middleware.context.callbacks[0]).toBe(noop); - - compiler.hooks.done.tap('webpack-dev-server', () => { - server.close(done); - }); - - compiler.run(() => {}); - }); - }); - - describe('Testing callback functions on calling invalidate with callback', () => { - it('should be `callback` function', (done) => { - const compiler = webpack(config); - const callback = jest.fn(); - const server = new Server(compiler); - server.invalidate(callback); - - expect(server.middleware.context.callbacks[0]).toBe(callback); - - compiler.hooks.done.tap('webpack-dev-server', () => { - server.close(done); - }); - - compiler.run(() => {}); - }); - }); - // issue: https://github.com/webpack/webpack-dev-server/issues/1724 describe('express.static.mine.types', () => { beforeEach(() => {