Skip to content

Commit

Permalink
Merge pull request #1449 from Dignifiedquire/bluebird-canary
Browse files Browse the repository at this point in the history
refactor: Replace q with bluebird.
  • Loading branch information
dignifiedquire committed Jun 19, 2015
2 parents 45a6922 + 4bba086 commit 1997ee5
Show file tree
Hide file tree
Showing 16 changed files with 92 additions and 76 deletions.
3 changes: 1 addition & 2 deletions lib/events.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
var events = require('events')
var util = require('util')
var Q = require('q')

var helper = require('./helper')

Expand Down Expand Up @@ -63,7 +62,7 @@ var EventEmitter = function () {
// TODO(vojta): allow passing args
// TODO(vojta): ignore/throw if listener call done() multiple times
var pending = this.listeners(name).length
var deferred = Q.defer()
var deferred = helper.defer()
var done = function () {
if (!--pending) {
deferred.resolve()
Expand Down
5 changes: 2 additions & 3 deletions lib/file_list.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
var fs = require('fs')
var glob = require('glob')
var mm = require('minimatch')
var q = require('q')

var helper = require('./helper')
var log = require('./logger').create('watcher')
Expand Down Expand Up @@ -137,7 +136,7 @@ var List = function (patterns, excludes, emitter, preprocess, batchInterval) {
clearPendingTimeout()

if (!pendingDeferred) {
pendingDeferred = q.defer()
pendingDeferred = helper.defer()
emitter.emit('file_list_modified', pendingDeferred.promise)
}

Expand Down Expand Up @@ -179,7 +178,7 @@ var List = function (patterns, excludes, emitter, preprocess, batchInterval) {
errors = []

if (!pendingDeferred) {
pendingDeferred = q.defer()
pendingDeferred = helper.defer()
emitter.emit('file_list_modified', pendingDeferred.promise)
}

Expand Down
16 changes: 16 additions & 0 deletions lib/helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ var fs = require('fs')
var path = require('path')
var _ = require('lodash')
var useragent = require('useragent')
var Promise = require('bluebird')

exports.browserFullNameToShort = function (fullName) {
var agent = useragent.parse(fullName)
Expand Down Expand Up @@ -87,5 +88,20 @@ exports.mkdirIfNotExists = function mkdir (directory, done) {
/* eslint-enable handle-callback-err */
}

exports.defer = function () {
var resolve
var reject
var promise = new Promise(function () {
resolve = arguments[0]
reject = arguments[1]
})

return {
resolve: resolve,
reject: reject,
promise: promise
}
}

// export lodash
exports._ = _
10 changes: 5 additions & 5 deletions lib/launcher.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
var log = require('./logger').create('launcher')
var q = require('q')
var Promise = require('bluebird')

var baseDecorator = require('./launchers/base').decoratorFactory
var captureTimeoutDecorator = require('./launchers/capture_timeout').decoratorFactory
Expand Down Expand Up @@ -69,11 +69,11 @@ var Launcher = function (emitter, injector) {
// TODO(vojta): remove in v1.0 (BC for old launchers)
if (!browser.forceKill) {
browser.forceKill = function () {
var deferred = q.defer()
this.kill(function () {
deferred.resolve()
var self = this

return new Promise(function (resolve) {
self.kill(resolve)
})
return deferred.promise
}

browser.restart = function () {
Expand Down
5 changes: 3 additions & 2 deletions lib/launchers/base.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
var KarmaEventEmitter = require('../events').EventEmitter
var EventEmitter = require('events').EventEmitter
var q = require('q')
var Promise = require('bluebird')

var log = require('../logger').create('launcher')

var BEING_CAPTURED = 1
Expand Down Expand Up @@ -99,7 +100,7 @@ var BaseLauncher = function (id, emitter) {
}

this._done = function (error) {
killingPromise = killingPromise || q()
killingPromise = killingPromise || Promise.resolve()

this.error = this.error || error
this.emit('done')
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@
],
"dependencies": {
"body-parser": "^1.12.4",
"bluebird": "^2.9.27",
"chokidar": "^1.0.1",
"colors": "^1.1.0",
"connect": "^3.3.5",
Expand All @@ -209,7 +210,6 @@
"mime": "^1.3.4",
"minimatch": "^2.0.7",
"optimist": "^0.6.1",
"q": "^1.4.1",
"rimraf": "^2.3.3",
"socket.io": "~1.3.5",
"source-map": "^0.4.2",
Expand Down
9 changes: 5 additions & 4 deletions test/unit/launcher.spec.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# lib/launcher.js module
#==============================================================================
describe 'launcher', ->
q = require 'q'
Promise = require 'bluebird'
di = require 'di'
events = require '../../lib/events'
logger = require '../../lib/logger'
Expand All @@ -16,11 +16,12 @@ describe 'launcher', ->

# promise mock
stubPromise = (obj, method, stubAction) ->
deferred = q.defer()
promise = new Promise((resolve) ->
obj[method].resolve = resolve
)
sinon.stub obj, method, ->
stubAction() if stubAction
deferred.promise
obj[method].resolve = deferred.resolve
promise


class FakeBrowser
Expand Down
9 changes: 5 additions & 4 deletions test/unit/launchers/base.spec.coffee
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
describe 'launchers/base.js', ->
_ = require('../../../lib/helper')._
BaseLauncher = require '../../../lib/launchers/base'
EventEmitter = require('../../../lib/events').EventEmitter
launcher = emitter = null
Expand Down Expand Up @@ -45,7 +46,7 @@ describe 'launchers/base.js', ->
launcher._done()
spyOnKill.callArg 0

process.nextTick ->
_.defer ->
expect(spyOnStart).to.have.been.calledWith 'http://host:9988/?id=fake-id'
done()

Expand All @@ -68,7 +69,7 @@ describe 'launchers/base.js', ->
# the first onDone will restart
launcher._done 'crashed'

process.nextTick ->
_.defer ->
expect(spyOnKill).to.not.have.been.called
expect(spyOnStart).to.have.been.called
expect(spyOnDone).to.have.been.called
Expand Down Expand Up @@ -162,7 +163,7 @@ describe 'launchers/base.js', ->

expect(launcher.state).to.equal launcher.STATE_BEING_KILLED

process.nextTick ->
_.defer ->
spyOnKill.finished = true
spyOnKill.callArg 0

Expand Down Expand Up @@ -201,7 +202,7 @@ describe 'launchers/base.js', ->
emitter.on 'browser_process_failure', spyOnBrowserProcessFailure

launcher.on 'kill', (killDone) ->
process.nextTick ->
_.defer ->
launcher._done 'crashed'
killDone()

Expand Down
45 changes: 23 additions & 22 deletions test/unit/launchers/process.spec.coffee
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
describe 'launchers/process.js', ->
path = require 'path'
_ = require('../../../lib/helper')._
BaseLauncher = require '../../../lib/launchers/base'
RetryLauncher = require '../../../lib/launchers/retry'
CaptureTimeoutLauncher = require '../../../lib/launchers/capture_timeout'
Expand Down Expand Up @@ -44,7 +45,7 @@ describe 'launchers/process.js', ->
launcher.start 'http://host:9988/'
launcher.kill()

scheduleNextTick ->
_.defer ->
expect(mockTempDir.remove).to.have.been.called
expect(mockTempDir.remove.args[0][0]).to.equal '/temp/karma-fake-id'
done()
Expand Down Expand Up @@ -74,7 +75,7 @@ describe 'launchers/process.js', ->
mockSpawn._processes[0].emit 'exit', 1
mockTempDir.remove.callArg 1

scheduleNextTick ->
_.defer ->
expect(launcher.state).to.equal launcher.STATE_FINISHED
expect(failureSpy).to.have.been.called
done()
Expand Down Expand Up @@ -137,7 +138,7 @@ describe 'launchers/process.js', ->
mockTempDir.remove.callArg 1
mockSpawn.reset()

scheduleNextTick ->
_.defer ->
# expect re-starting
expect(mockSpawn).to.have.been.calledWith BROWSER_PATH, ['http://localhost/?id=fake-id']
expect(failureSpy).not.to.have.been.called
Expand All @@ -162,7 +163,7 @@ describe 'launchers/process.js', ->
mockTempDir.remove.callArg 1
mockTempDir.remove.reset()

scheduleNextTick ->
_.defer ->
# expect re-starting
expect(mockSpawn).to.have.been.calledWith BROWSER_PATH, ['http://localhost/?id=fake-id']
browserProcess = mockSpawn._processes.shift()
Expand All @@ -178,26 +179,26 @@ describe 'launchers/process.js', ->
mockTempDir.remove.callArg 1
mockTempDir.remove.reset()

scheduleNextTick ->
# expect re-starting
expect(mockSpawn).to.have.been.calledWith BROWSER_PATH, ['http://localhost/?id=fake-id']
browserProcess = mockSpawn._processes.shift()
expect(failureSpy).not.to.have.been.called
mockSpawn.reset()
_.defer ->
# expect re-starting
expect(mockSpawn).to.have.been.calledWith BROWSER_PATH, ['http://localhost/?id=fake-id']
browserProcess = mockSpawn._processes.shift()
expect(failureSpy).not.to.have.been.called
mockSpawn.reset()

# timeout - third time
mockTimer.wind 201
# timeout - third time
mockTimer.wind 201

# expect killing browser
expect(browserProcess.kill).to.have.been.called
browserProcess.emit 'exit', 0
mockTempDir.remove.callArg 1
mockTempDir.remove.reset()
# expect killing browser
expect(browserProcess.kill).to.have.been.called
browserProcess.emit 'exit', 0
mockTempDir.remove.callArg 1
mockTempDir.remove.reset()

scheduleNextTick ->
expect(mockSpawn).to.not.have.been.called
expect(failureSpy).to.have.been.called
done()
_.defer ->
expect(mockSpawn).to.not.have.been.called
expect(failureSpy).to.have.been.called
done()


# when the browser fails to start, it should restart
Expand All @@ -215,7 +216,7 @@ describe 'launchers/process.js', ->
mockTempDir.remove.callArg 1
mockTempDir.remove.reset()

scheduleNextTick ->
_.defer ->
# expect re-starting
expect(mockSpawn).to.have.been.calledWith BROWSER_PATH, ['http://localhost/?id=fake-id']
browserProcess = mockSpawn._processes.shift()
Expand Down
27 changes: 14 additions & 13 deletions test/unit/launchers/retry.spec.coffee
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
describe 'launchers/retry.js', ->
_ = require('../../../lib/helper')._
BaseLauncher = require '../../../lib/launchers/base'
RetryLauncher = require '../../../lib/launchers/retry'
EventEmitter = require('../../../lib/events').EventEmitter
Expand All @@ -23,7 +24,7 @@ describe 'launchers/retry.js', ->
# simulate crash
launcher._done 'crash'

scheduleNextTick ->
_.defer ->
expect(launcher.start).to.have.been.called
expect(spyOnBrowserProcessFailure).not.to.have.been.called
done()
Expand All @@ -41,26 +42,26 @@ describe 'launchers/retry.js', ->
# simulate first crash
launcher._done 'crash'

scheduleNextTick ->
_.defer ->
expect(launcher.start).to.have.been.called
expect(spyOnBrowserProcessFailure).not.to.have.been.called
launcher.start.reset()

# simulate second crash
launcher._done 'crash'

scheduleNextTick ->
expect(launcher.start).to.have.been.called
expect(spyOnBrowserProcessFailure).not.to.have.been.called
launcher.start.reset()
_.defer ->
expect(launcher.start).to.have.been.called
expect(spyOnBrowserProcessFailure).not.to.have.been.called
launcher.start.reset()

# simulate third crash
launcher._done 'crash'
# simulate third crash
launcher._done 'crash'

scheduleNextTick ->
expect(launcher.start).not.to.have.been.called
expect(spyOnBrowserProcessFailure).to.have.been.called
done()
_.defer ->
expect(launcher.start).not.to.have.been.called
expect(spyOnBrowserProcessFailure).to.have.been.called
done()


it 'should not restart if killed normally', (done) ->
Expand All @@ -75,7 +76,7 @@ describe 'launchers/retry.js', ->
# process just exited normally
launcher._done()

scheduleNextTick ->
_.defer ->
expect(launcher.start).not.to.have.been.called
expect(spyOnBrowserProcessFailure).not.to.have.been.called
expect(launcher.state).to.equal launcher.STATE_FINISHED
Expand Down
4 changes: 2 additions & 2 deletions test/unit/middleware/karma.spec.coffee
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
describe 'middleware.karma', ->
q = require 'q'
helper = require '../../../lib/helper'
constants = require '../../../lib/constants'

mocks = require 'mocks'
Expand Down Expand Up @@ -30,7 +30,7 @@ describe 'middleware.karma', ->
clientConfig = foo: 'bar'
nextSpy = sinon.spy()
response = new HttpResponseMock
filesDeferred = q.defer()
filesDeferred = helper.defer()
serveFile = createServeFile fsMock, '/karma/static'
handler = createKarmaMiddleware filesDeferred.promise, serveFile,
'/base/path', '/__karma__/', clientConfig
Expand Down
5 changes: 2 additions & 3 deletions test/unit/middleware/source_files.spec.coffee
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
http = require 'http'
q = require 'q'
mocks = require 'mocks'
request = require 'supertest-as-promised'

helper = require '../../../lib/helper'
File = require('../../../lib/file_list').File
Url = require('../../../lib/file_list').Url
createServeFile = require('../../../lib/middleware/common').createServeFile
Expand Down Expand Up @@ -37,7 +36,7 @@ describe 'middleware.source_files', ->
handler req, res, next

beforeEach ->
files = q.defer()
files = helper.defer()
server = createServer files, serveFile, '/base/path'

afterEach ->
Expand Down
2 changes: 0 additions & 2 deletions test/unit/middleware/strip_host.spec.coffee
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
describe 'middleware.strip_host', ->
q = require 'q'

mocks = require 'mocks'
HttpResponseMock = mocks.http.ServerResponse
HttpRequestMock = mocks.http.ServerRequest
Expand Down

0 comments on commit 1997ee5

Please sign in to comment.