Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: Replace q with bluebird. #1449

Merged
merged 1 commit into from
Jun 19, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
18 changes: 17 additions & 1 deletion lib/helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ 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)
return agent.family !== 'Other' ? agent.toAgent() + ' (' + agent.os + ')' : fullName;
return agent.family !== 'Other' ? agent.toAgent() + ' (' + agent.os + ')' : fullName
}

exports.isDefined = function (value) {
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
Loading