diff --git a/index.js b/index.js index ed4b6d5b..8752893c 100644 --- a/index.js +++ b/index.js @@ -441,7 +441,7 @@ add(paths_, _origAdd, _internal) { if (this.options.useFsEvents && this._fsEventsHandler) { if (!this._readyCount) this._readyCount = paths.length; - if (this.options.persistent) this._readyCount *= 2; + if (this.options.persistent) this._readyCount += paths.length; paths.forEach((path) => this._fsEventsHandler._addToFsEvents(path)); } else { if (!this._readyCount) this._readyCount = 0; diff --git a/test.js b/test.js index 3e91d8f1..cdf982fb 100644 --- a/test.js +++ b/test.js @@ -549,6 +549,21 @@ const runTests = (baseopts) => { }); }); describe('watch individual files', () => { + it('should emit `ready` when three files were added', async () => { + const readySpy = sinon.spy(function readySpy(){}); + const watcher = chokidar_watch().on(EV_READY, readySpy); + const path1 = getFixturePath('add1.txt'); + const path2 = getFixturePath('add2.txt'); + const path3 = getFixturePath('add3.txt'); + + watcher.add(path1); + watcher.add(path2); + watcher.add(path3); + + await waitForWatcher(watcher); + // callCount is 1 on macOS, 4 on Ubuntu + readySpy.callCount.should.be.greaterThanOrEqual(1); + }); it('should detect changes', async () => { const testPath = getFixturePath('change.txt'); const watcher = chokidar_watch(testPath, options);