diff options
| -rw-r--r-- | .travis.yml | 4 | ||||
| -rw-r--r-- | index.js | 9 | ||||
| -rw-r--r-- | lib/getOptions.js | 16 | ||||
| -rw-r--r-- | lib/logger.js | 8 | ||||
| -rw-r--r-- | lib/sendToCoveralls.js | 13 | ||||
| -rw-r--r-- | package.json | 3 | ||||
| -rw-r--r-- | test/getOptions.js | 6 | ||||
| -rw-r--r-- | test/logger.js | 8 | ||||
| -rw-r--r-- | test/sendToCoveralls.js | 25 |
9 files changed, 62 insertions, 30 deletions
diff --git a/.travis.yml b/.travis.yml index 284a527..90c3aeb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,6 @@ node_js: - stable - 4.2 - 0.10 - - 0.11 + - 0.12 script: make test-coveralls - +sudo: false @@ -1,3 +1,12 @@ +var minimist = require('minimist'); + +// this needs to go before the other require()s so that +// the other files can already use index.options +exports.options = minimist(process.argv.slice(2), { + boolean: ['verbose', 'stdout'], + alias: { 'v': 'verbose', 's': 'stdout' } +}); + var dir = './lib/'; exports.convertLcovToCoveralls = require(dir + 'convertLcovToCoveralls'); exports.sendToCoveralls = require(dir + 'sendToCoveralls'); diff --git a/lib/getOptions.js b/lib/getOptions.js index 144d0ad..4c53e36 100644 --- a/lib/getOptions.js +++ b/lib/getOptions.js @@ -1,6 +1,7 @@ var fs = require('fs'); var path = require('path'); var yaml = require('js-yaml'); +var index = require('../index'); var logger = require('./logger')(); var fetchGitData = require('./fetchGitData'); @@ -128,16 +129,11 @@ var getOptions = function(cb, _userOptions){ var userOptions = _userOptions || {}; getBaseOptions(function(err, options){ - // try to get filepath from the command-line - if (process.argv[2]) { - if (~['-v', '--verbose'].indexOf(process.argv[2])) { - if (process.argv[3]) { - options.filepath = process.argv[3]; - } - } else { - options.filepath = process.argv[2]; - } - } + // minimist populates options._ with non-option command line arguments + var firstNonOptionArgument = index.options._[0]; + + if (firstNonOptionArgument) + options.filepath = firstNonOptionArgument; // lodash or else would be better, but no need for the extra dependency for (var option in userOptions) { diff --git a/lib/logger.js b/lib/logger.js index 9c27e0b..f834586 100644 --- a/lib/logger.js +++ b/lib/logger.js @@ -1,18 +1,16 @@ +var index = require('../index'); + module.exports = function(){ return require('log-driver')({level : getLogLevel()}); }; function getLogLevel(){ - if (hasVerboseCommandLineOption() || hasDebugEnvVariable()) { + if (index.options.verbose || hasDebugEnvVariable()) { return 'warn'; } return 'error'; } -function hasVerboseCommandLineOption(){ - return process.argv[2] && ~['-v', '--verbose'].indexOf(process.argv[2]); -} - function hasDebugEnvVariable(){ return process.env.NODE_COVERALLS_DEBUG == 1; } diff --git a/lib/sendToCoveralls.js b/lib/sendToCoveralls.js index 38b37f7..fcf63a8 100644 --- a/lib/sendToCoveralls.js +++ b/lib/sendToCoveralls.js @@ -1,4 +1,5 @@ var request = require('request'); +var index = require('../index'); var sendToCoveralls = function(obj, cb){ var urlBase = 'https://coveralls.io'; @@ -8,9 +9,15 @@ var sendToCoveralls = function(obj, cb){ var str = JSON.stringify(obj); var url = urlBase + '/api/v1/jobs'; - request.post({url : url, form : { json : str}}, function(err, response, body){ - cb(err, response, body); - }); + + if (index.options.stdout) { + process.stdout.write(str); + cb(null, { statusCode: 200 }, ''); + } else { + request.post({url : url, form : { json : str}}, function(err, response, body){ + cb(err, response, body); + }); + } }; module.exports = sendToCoveralls; diff --git a/package.json b/package.json index fe4d25c..7e7f4e1 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,8 @@ "js-yaml": "3.0.1", "lcov-parse": "0.0.6", "log-driver": "1.2.4", - "request": "2.67.0" + "request": "2.67.0", + "minimist": "1.2.0" }, "devDependencies": { "sinon-restore": "1.0.0", diff --git a/test/getOptions.js b/test/getOptions.js index 0943fe1..897427c 100644 --- a/test/getOptions.js +++ b/test/getOptions.js @@ -70,7 +70,7 @@ describe("getOptions", function(){ done(); }); it ("should get a filepath if there is one", function(done){ - process.argv[2] = "somepath"; + index.options._ = ["somepath"]; getOptions(function(err, options){ options.filepath.should.equal("somepath"); done(); @@ -78,8 +78,8 @@ describe("getOptions", function(){ }); it ("should get a filepath if there is one, even in verbose mode", function(done){ - process.argv[2] = "--verbose"; - process.argv[3] = "somepath"; + index.options.verbose = "true"; + index.options._ = ["somepath"]; getOptions(function(err, options){ options.filepath.should.equal("somepath"); done(); diff --git a/test/logger.js b/test/logger.js index 15767ff..19767df 100644 --- a/test/logger.js +++ b/test/logger.js @@ -4,27 +4,27 @@ var index = require('../index'); describe("logger", function(){ it ("should log at debug level when --verbose is set", function(){ - process.argv[2] = '--verbose'; + index.options.verbose = true; var logger = require('../index').logger(); logger.level.should.equal('warn'); }); it ("should log at debug level when NODE_COVERALLS_DEBUG is set in env", function(){ - process.argv = []; + index.options.verbose = false; process.env.NODE_COVERALLS_DEBUG = 1; var logger = require('../index').logger(); logger.level.should.equal('warn'); }); it ("should log at debug level when NODE_COVERALLS_DEBUG is set in env as a string", function(){ - process.argv = []; + index.options.verbose = false; process.env.NODE_COVERALLS_DEBUG = '1'; var logger = require('../index').logger(); logger.level.should.equal('warn'); }); it ("should log at warn level when NODE_COVERALLS_DEBUG not set and no --verbose", function(){ - process.argv = []; + index.options.verbose = false; process.env.NODE_COVERALLS_DEBUG = 0; var logger = require('../index').logger(); logger.level.should.equal('error'); diff --git a/test/sendToCoveralls.js b/test/sendToCoveralls.js index f809319..6121bbb 100644 --- a/test/sendToCoveralls.js +++ b/test/sendToCoveralls.js @@ -27,7 +27,8 @@ describe("sendToCoveralls", function(){ }); var obj = {"some":"obj"}; - index.sendToCoveralls(obj, function(err, response, body){ + + index.sendToCoveralls(obj, function(err, response, body){ err.should.equal('err'); response.should.equal('response'); body.should.equal('body'); @@ -44,11 +45,31 @@ describe("sendToCoveralls", function(){ }); var obj = {"some":"obj"}; - index.sendToCoveralls(obj, function(err, response, body){ + index.sendToCoveralls(obj, function(err, response, body){ err.should.equal('err'); response.should.equal('response'); body.should.equal('body'); done(); }); }); + it ("writes output to stdout when --stdout is passed", function(done) { + var obj = {"some":"obj"}; + + // set up mock process.stdout.write temporarily + var origStdoutWrite = process.stdout.write; + process.stdout.write = function(string) { + if (string == JSON.stringify(obj)) { + process.stdout.write = origStdoutWrite; + return done(); + } + + origStdoutWrite.apply(this, arguments); + }; + + index.options.stdout = true; + + index.sendToCoveralls(obj, function(err, response, body) { + response.statusCode.should.equal(200); + }); + }); }); |
