From 7ea9ab91ff6c103ed4598784092df31db53b554f Mon Sep 17 00:00:00 2001 From: Marco Fugaro Date: Thu, 21 Mar 2019 12:09:15 +0100 Subject: [PATCH] feat: relax depth limit from chokidar for content base (#1697) --- lib/Server.js | 1 - test/ContentBase.test.js | 63 ++++++++++++++++++- .../public/assets/example.txt | 0 3 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 test/fixtures/contentbase-config/public/assets/example.txt diff --git a/lib/Server.js b/lib/Server.js index cea529db1c..2d1850e8ec 100644 --- a/lib/Server.js +++ b/lib/Server.js @@ -948,7 +948,6 @@ class Server { ignoreInitial: true, persistent: true, followSymlinks: false, - depth: 0, atomic: false, alwaysStat: true, ignorePermissionErrors: true, diff --git a/test/ContentBase.test.js b/test/ContentBase.test.js index ccce27def1..06cf5b789b 100644 --- a/test/ContentBase.test.js +++ b/test/ContentBase.test.js @@ -1,6 +1,7 @@ 'use strict'; const path = require('path'); +const fs = require('fs'); const request = require('supertest'); const helper = require('./helper'); const config = require('./fixtures/contentbase-config/webpack.config'); @@ -17,20 +18,31 @@ const contentBaseOther = path.join( describe('ContentBase', () => { let server; let req; - afterEach(helper.close); describe('to directory', () => { + const nestedFile = path.join(contentBasePublic, 'assets/example.txt'); + + jest.setTimeout(30000); + beforeAll((done) => { server = helper.start( config, { contentBase: contentBasePublic, + watchContentBase: true, }, done ); req = request(server.app); }); + afterAll((done) => { + helper.close(() => { + done(); + }); + fs.truncateSync(nestedFile); + }); + it('Request to index', (done) => { req.get('/').expect(200, /Heyo/, done); }); @@ -38,6 +50,19 @@ describe('ContentBase', () => { it('Request to other file', (done) => { req.get('/other.html').expect(200, /Other html/, done); }); + + it('Watches folder recursively', (done) => { + // chokidar emitted a change, + // meaning it watched the file correctly + server.contentBaseWatchers[0].on('change', () => { + done(); + }); + + // change a file manually + setTimeout(() => { + fs.writeFileSync(nestedFile, 'Heyo', 'utf8'); + }, 1000); + }); }); describe('to directories', () => { @@ -52,6 +77,12 @@ describe('ContentBase', () => { req = request(server.app); }); + afterAll((done) => { + helper.close(() => { + done(); + }); + }); + it('Request to first directory', (done) => { req.get('/').expect(200, /Heyo/, done); }); @@ -73,6 +104,12 @@ describe('ContentBase', () => { req = request(server.app); }); + afterAll((done) => { + helper.close(() => { + done(); + }); + }); + it('Request to page', (done) => { req .get('/other.html') @@ -93,6 +130,12 @@ describe('ContentBase', () => { req = request(server.app); }); + afterAll((done) => { + helper.close(() => { + done(); + }); + }); + it('Request to page', (done) => { req .get('/foo.html') @@ -117,6 +160,12 @@ describe('ContentBase', () => { req = request(server.app); }); + afterAll((done) => { + helper.close(() => { + done(); + }); + }); + it('Request to page', (done) => { req.get('/other.html').expect(200, done); }); @@ -137,6 +186,12 @@ describe('ContentBase', () => { req = request(server.app); }); + afterAll((done) => { + helper.close(() => { + done(); + }); + }); + it('Request to page', (done) => { req.get('/other.html').expect(404, done); }); @@ -154,6 +209,12 @@ describe('ContentBase', () => { req = request(server.app); }); + afterAll((done) => { + helper.close(() => { + done(); + }); + }); + it('Request foo.wasm', (done) => { req.get('/foo.wasm').expect('Content-Type', 'application/wasm', done); }); diff --git a/test/fixtures/contentbase-config/public/assets/example.txt b/test/fixtures/contentbase-config/public/assets/example.txt new file mode 100644 index 0000000000..e69de29bb2