diff --git a/.travis.yml b/.travis.yml index d689c79..dd9e44e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,7 @@ language: node_js node_js: - 4 - 5 + - stable # Make sure we have new NPM. before_install: @@ -11,6 +12,7 @@ before_install: script: - npm run lint - npm test + - npm run coverage addons: firefox: 'latest' @@ -18,3 +20,6 @@ addons: before_script: - export DISPLAY=:99.0 - sh -e /etc/init.d/xvfb start + +after_success: + - npm run coverage-publish diff --git a/circle.yml b/circle.yml new file mode 100644 index 0000000..434211a --- /dev/null +++ b/circle.yml @@ -0,0 +1,12 @@ +machine: + node: + version: stable + +dependencies: + pre: + - google-chrome --version + - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - + - sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' + - sudo apt-get update + - sudo apt-get --only-upgrade install google-chrome-stable + - google-chrome --version diff --git a/package.json b/package.json index 53a15bf..42f3b54 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,9 @@ "build": "gulp build", "release": "gulp release", "release-minor": "gulp release --type minor", - "release-major": "gulp release --type major" + "release-major": "gulp release --type major", + "coverage": "gulp coverage", + "coverage-publish": "aegir-coverage publish" }, "pre-commit": [ "lint", @@ -34,11 +36,12 @@ "dependencies": { "mafmt": "^1.0.1", "multiaddr": "^1.1.1", + "run-parallel": "^1.1.6", "simple-websocket": "github:diasdavid/simple-websocket#ec31437" }, "devDependencies": { "chai": "^3.5.0", - "aegir": "^2.0.0", + "aegir": "^3.0.1", "gulp": "^3.9.1", "interface-connection": "0.0.3", "interface-transport": "^0.1.1", @@ -49,4 +52,4 @@ "Francisco Baio Dias ", "dignifiedquire " ] -} \ No newline at end of file +} diff --git a/src/index.js b/src/index.js index 8b11ad8..228f138 100644 --- a/src/index.js +++ b/src/index.js @@ -4,6 +4,7 @@ const debug = require('debug') const log = debug('libp2p:websockets') const SWS = require('simple-websocket') const mafmt = require('mafmt') +const parallel = require('run-parallel') exports = module.exports = WebSockets @@ -64,14 +65,10 @@ function WebSockets () { log('Called close with no active listeners') return callback() } - var count = 0 - listeners.forEach((listener) => { - listener.close(() => { - if (++count === listeners.length) { - callback() - } - }) - }) + + parallel(listeners.map((listener) => { + return (cb) => listener.close(cb) + }), callback) } this.filter = (multiaddrs) => { diff --git a/test/node.js b/test/node.js index e026350..cf2cccb 100644 --- a/test/node.js +++ b/test/node.js @@ -20,9 +20,7 @@ describe('libp2p-websockets', function () { ws.createListener(mh, (socket) => { expect(socket).to.exist socket.end() - ws.close(() => { - done() - }) + ws.close(done) }, () => { const conn = ws.dial(mh) conn.end() @@ -45,9 +43,7 @@ describe('libp2p-websockets', function () { expect(socket).to.exist socket.end() expect(socket.getObservedAddrs()).to.deep.equal([]) - ws.close(() => { - done() - }) + ws.close(done) }, () => { const conn = ws.dial(mh) conn.end() @@ -76,9 +72,7 @@ describe('libp2p-websockets', function () { conn.on('data', (data) => { expect(data.toString()).to.equal(message) conn.end() - ws.close(() => { - done() - }) + ws.close(done) }) }) }) @@ -99,9 +93,7 @@ describe('libp2p-websockets', function () { conn.on('data', (data) => { expect(data.toString()).to.equal(message) conn.end() - ws.close(() => { - done() - }) + ws.close(done) }) }) })