diff --git a/lib/web-server.js b/lib/web-server.js index 94f4a6fe7..1b9878ef0 100644 --- a/lib/web-server.js +++ b/lib/web-server.js @@ -2,8 +2,7 @@ var fs = require('fs') var http = require('http') var path = require('path') var connect = require('connect') - -var helper = require('./helper') +var Promise = require('bluebird') var common = require('./middleware/common') var runnerMiddleware = require('./middleware/runner') @@ -32,10 +31,10 @@ createCustomHandler.$inject = ['customFileHandlers', 'config.basePath'] var createWebServer = function (injector, emitter) { var serveStaticFile = common.createServeFile(fs, path.normalize(__dirname + '/../static')) var serveFile = common.createServeFile(fs) - var filesDeferred = helper.defer() + var filesPromise = new common.PromiseContainer() emitter.on('file_list_modified', function (files) { - filesDeferred.resolve(files) + filesPromise.set(Promise.resolve(files)) }) // locals for webserver module @@ -43,7 +42,7 @@ var createWebServer = function (injector, emitter) { injector = injector.createChild([{ serveFile: ['value', serveFile], serveStaticFile: ['value', serveStaticFile], - filesPromise: ['value', filesDeferred.promise] + filesPromise: ['value', filesPromise] }]) var proxyMiddlewareInstance = injector.invoke(proxyMiddleware.create) diff --git a/test/unit/web-server.spec.coffee b/test/unit/web-server.spec.coffee index b6d96d73a..b4e1e015b 100644 --- a/test/unit/web-server.spec.coffee +++ b/test/unit/web-server.spec.coffee @@ -21,6 +21,7 @@ describe 'web-server', -> base: path: 'one.js': mocks.fs.file(0, 'js-source') + 'new.js': mocks.fs.file(0, 'new-js-source') # NOTE(vojta): only loading once, to speed things up # this relies on the fact that none of these tests mutate fs @@ -61,6 +62,14 @@ describe 'web-server', -> .get('/base/one.js') .expect(200, 'js-source') + it 'should serve updated source files on file_list_modified', () -> + servedFiles new Set([new File '/base/path/one.js']) + servedFiles new Set([new File '/base/path/new.js']) + + request(server) + .get('/base/new.js') + .expect(200, 'new-js-source') + it 'should load custom handlers', () -> servedFiles new Set()