From 21e0aa28b53e443a94f70a3e7466d904f43150d2 Mon Sep 17 00:00:00 2001 From: Braydon Fuller Date: Sun, 18 Oct 2015 22:50:07 -0400 Subject: [PATCH] Added a Node.js version check based on the package.json engine. --- index.js | 11 +++++++++++ package.json | 2 +- test/index.unit.js | 19 +++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 test/index.unit.js diff --git a/index.js b/index.js index da3b0539..4b2aa56a 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,17 @@ 'use strict'; +var semver = require('semver'); +var packageData = require('./package.json'); + +function nodeVersionCheck(version, expected) { + if (!semver.satisfies(version, expected)) { + throw new Error('Node.js version ' + version + ' is expected to be ' + expected); + } +} +nodeVersionCheck(process.versions.node, packageData.engines.node); + module.exports = require('./lib'); +module.exports.nodeVersionCheck = nodeVersionCheck; module.exports.Node = require('./lib/node'); module.exports.Transaction = require('./lib/transaction'); module.exports.Service = require('./lib/service'); diff --git a/package.json b/package.json index 8f7de0bd..c4564730 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "bitcore-p2p": "~1.0.0" }, "engines": { - "node": ">=0.12.0" + "node": "^0.12" }, "os": [ "darwin", diff --git a/test/index.unit.js b/test/index.unit.js new file mode 100644 index 00000000..c2190441 --- /dev/null +++ b/test/index.unit.js @@ -0,0 +1,19 @@ +'use strict'; + +var should = require('chai').should(); +var index = require('..'); + +describe('Index', function() { + describe('#nodeVersionCheck', function() { + it('will throw informative error message with incompatible Node.js version 4.1.2', function() { + (function() { + index.nodeVersionCheck('4.1.2', '>=0.12.0 <1'); + }).should.throw('Node.js version'); + }); + it('will throw informative error message with incompatible Node.js version 0.10.40', function() { + (function() { + index.nodeVersionCheck('4.1.2', '>=0.12.0 <1'); + }).should.throw('Node.js version'); + }); + }); +});