From 7e2dfe9f0d0cdc9e7c2d73c50cc212c89694d5b2 Mon Sep 17 00:00:00 2001 From: simov Date: Wed, 19 Nov 2014 11:51:08 +0200 Subject: [PATCH 1/5] Add Coveralls configuration --- .gitignore | 1 + .travis.yml | 1 + package.json | 4 +++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 3c3629e64..ba2a97b57 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ node_modules +coverage diff --git a/.travis.yml b/.travis.yml index 742c7dfa0..c1e214d9d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,7 @@ language: node_js node_js: - "0.8" - "0.10" +script: ./node_modules/.bin/istanbul cover ./node_modules/tape/bin/tape tests/test-*.js --report lcovonly && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js --verbose webhooks: urls: https://webhooks.gitter.im/e/237280ed4796c19cc626 on_success: change # options: [always|never|change] default: always diff --git a/package.json b/package.json index b3db50d5f..c85d3ac6c 100755 --- a/package.json +++ b/package.json @@ -47,6 +47,8 @@ "eslint": "0.5.1", "rimraf": "~2.2.8", "tape": "~3.0.0", - "taper": "~0.3.0" + "taper": "~0.3.0", + "istanbul": "~0.3.2", + "coveralls": "~2.11.2" } } From 877262dea6b63d36dbd50e4ac05b00c359319fe2 Mon Sep 17 00:00:00 2001 From: simov Date: Thu, 20 Nov 2014 18:44:02 +0200 Subject: [PATCH 2/5] Use travis-ci after_script for test coverage --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c1e214d9d..a77174926 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ language: node_js node_js: - "0.8" - "0.10" -script: ./node_modules/.bin/istanbul cover ./node_modules/tape/bin/tape tests/test-*.js --report lcovonly && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js --verbose +after_script: ./node_modules/.bin/istanbul cover ./node_modules/tape/bin/tape tests/test-*.js --report lcovonly && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js --verbose webhooks: urls: https://webhooks.gitter.im/e/237280ed4796c19cc626 on_success: change # options: [always|never|change] default: always From 5eb86dcdaf10cae2af9a9aad7032c47586eae1b7 Mon Sep 17 00:00:00 2001 From: simov Date: Sat, 22 Nov 2014 11:13:27 +0200 Subject: [PATCH 3/5] Fix 'piping from a file' test --- tests/test-pipes.js | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/tests/test-pipes.js b/tests/test-pipes.js index 8d55fb5de..22b7eee4d 100644 --- a/tests/test-pipes.js +++ b/tests/test-pipes.js @@ -137,6 +137,7 @@ tape('piping from a file', function(t) { if (req.method === 'PUT') { t.equal(req.headers['content-type'], 'application/javascript') t.end() + res.end() } }) fs.createReadStream(__filename).pipe(request.put(s.url + '/pushjs')) @@ -275,12 +276,5 @@ tape('request.pipefilter is called correctly', function(t) { tape('cleanup', function(t) { s.close() - // TODO - which test is causing the process not to exit? - setTimeout(function() { - t.end() - setTimeout(function() { - /*eslint no-process-exit:0*/ - process.exit(0) - }, 10) - }, 300) + t.end() }) From 44b627aea636a1a6ce67a174e943e669fc7a3a8d Mon Sep 17 00:00:00 2001 From: simov Date: Sat, 22 Nov 2014 11:15:00 +0200 Subject: [PATCH 4/5] Wrap the whole test in if/else statement instead of using process.exit on Travis-CI --- tests/test-timeout.js | 181 +++++++++++++++++++++--------------------- 1 file changed, 90 insertions(+), 91 deletions(-) diff --git a/tests/test-timeout.js b/tests/test-timeout.js index e4cd3a5be..2e59a6c85 100644 --- a/tests/test-timeout.js +++ b/tests/test-timeout.js @@ -1,119 +1,118 @@ 'use strict' -if (process.env.TRAVIS === 'true') { - console.error('This test is unreliable on Travis; skipping.') - /*eslint no-process-exit:0*/ - process.exit(0) -} - -var server = require('./server') - , events = require('events') - , stream = require('stream') - , request = require('../index') - , tape = require('tape') - -var s = server.createServer() - -// Request that waits for 200ms -s.on('/timeout', function(req, res) { - setTimeout(function() { - res.writeHead(200, {'content-type':'text/plain'}) - res.write('waited') - res.end() - }, 200) -}) - function checkErrCode(t, err) { t.notEqual(err, null) t.ok(err.code === 'ETIMEDOUT' || err.code === 'ESOCKETTIMEDOUT', 'Error ETIMEDOUT or ESOCKETTIMEDOUT') } -tape('setup', function(t) { - s.listen(s.port, function() { - t.end() +if (process.env.TRAVIS === 'true') { + console.error('This test is unreliable on Travis; skipping.') + /*eslint no-process-exit:0*/ +} else { + var server = require('./server') + , events = require('events') + , stream = require('stream') + , request = require('../index') + , tape = require('tape') + + var s = server.createServer() + + // Request that waits for 200ms + s.on('/timeout', function(req, res) { + setTimeout(function() { + res.writeHead(200, {'content-type':'text/plain'}) + res.write('waited') + res.end() + }, 200) }) -}) -tape('should timeout', function(t) { - var shouldTimeout = { - url: s.url + '/timeout', - timeout: 100 - } - - request(shouldTimeout, function(err, res, body) { - checkErrCode(t, err) - t.end() + tape('setup', function(t) { + s.listen(s.port, function() { + t.end() + }) }) -}) - -tape('should timeout with events', function(t) { - t.plan(3) - var shouldTimeoutWithEvents = { - url: s.url + '/timeout', - timeout: 100 - } + tape('should timeout', function(t) { + var shouldTimeout = { + url: s.url + '/timeout', + timeout: 100 + } - var eventsEmitted = 0 - request(shouldTimeoutWithEvents) - .on('error', function(err) { - eventsEmitted++ - t.equal(1, eventsEmitted) + request(shouldTimeout, function(err, res, body) { checkErrCode(t, err) + t.end() }) -}) + }) + + tape('should timeout with events', function(t) { + t.plan(3) + + var shouldTimeoutWithEvents = { + url: s.url + '/timeout', + timeout: 100 + } + + var eventsEmitted = 0 + request(shouldTimeoutWithEvents) + .on('error', function(err) { + eventsEmitted++ + t.equal(1, eventsEmitted) + checkErrCode(t, err) + }) + }) -tape('should not timeout', function(t) { - var shouldntTimeout = { - url: s.url + '/timeout', - timeout: 1200 - } + tape('should not timeout', function(t) { + var shouldntTimeout = { + url: s.url + '/timeout', + timeout: 1200 + } - request(shouldntTimeout, function(err, res, body) { - t.equal(err, null) - t.equal(body, 'waited') - t.end() + request(shouldntTimeout, function(err, res, body) { + t.equal(err, null) + t.equal(body, 'waited') + t.end() + }) }) -}) -tape('no timeout', function(t) { - var noTimeout = { - url: s.url + '/timeout' - } + tape('no timeout', function(t) { + var noTimeout = { + url: s.url + '/timeout' + } - request(noTimeout, function(err, res, body) { - t.equal(err, null) - t.equal(body, 'waited') - t.end() + request(noTimeout, function(err, res, body) { + t.equal(err, null) + t.equal(body, 'waited') + t.end() + }) }) -}) -tape('negative timeout', function(t) { // should be treated a zero or the minimum delay - var negativeTimeout = { - url: s.url + '/timeout', - timeout: -1000 - } + tape('negative timeout', function(t) { // should be treated a zero or the minimum delay + var negativeTimeout = { + url: s.url + '/timeout', + timeout: -1000 + } - request(negativeTimeout, function(err, res, body) { - checkErrCode(t, err) - t.end() + request(negativeTimeout, function(err, res, body) { + checkErrCode(t, err) + t.end() + }) }) -}) -tape('float timeout', function(t) { // should be rounded by setTimeout anyway - var floatTimeout = { - url: s.url + '/timeout', - timeout: 100.76 - } + tape('float timeout', function(t) { // should be rounded by setTimeout anyway + var floatTimeout = { + url: s.url + '/timeout', + timeout: 100.76 + } - request(floatTimeout, function(err, res, body) { - checkErrCode(t, err) - t.end() + request(floatTimeout, function(err, res, body) { + checkErrCode(t, err) + t.end() + }) }) -}) -tape('cleanup', function(t) { - s.close() - t.end() -}) + tape('cleanup', function(t) { + s.close() + t.end() + }) +} From 37e226854b2ae8cd9c1e9ae020fece1f8ecdcc71 Mon Sep 17 00:00:00 2001 From: simov Date: Sat, 22 Nov 2014 11:16:16 +0200 Subject: [PATCH 5/5] Clear stderr array before each test in node-debug --- tests/test-node-debug.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test-node-debug.js b/tests/test-node-debug.js index ab27e3682..c9f7b9d31 100644 --- a/tests/test-node-debug.js +++ b/tests/test-node-debug.js @@ -24,6 +24,7 @@ tape('setup', function(t) { tape('a simple request should not fail with debugging enabled', function(t) { request.debug = true + stderr = [] request('http://localhost:6767', function(err, res, body) { t.ifError(err, 'the request did not fail')