From 7f3b69b4421335e41632b54cb799a14bb44c0a86 Mon Sep 17 00:00:00 2001 From: Eugene Matvejev Date: Mon, 2 Jan 2017 20:02:06 +0000 Subject: [PATCH 1/9] Update .gitignore --- .gitignore | 39 +++------------------------------------ 1 file changed, 3 insertions(+), 36 deletions(-) diff --git a/.gitignore b/.gitignore index 5148e52..e3a9f6b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,37 +1,4 @@ -# Logs -logs -*.log -npm-debug.log* - -# Runtime data -pids -*.pid -*.seed - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories node_modules -jspm_packages - -# Optional npm cache directory -.npm - -# Optional REPL history -.node_repl_history +lib +var +!var/.gitkeep From 4cd479567927af7de5031a141521a08d117a79a1 Mon Sep 17 00:00:00 2001 From: Eugene Matvejevs Date: Mon, 2 Jan 2017 20:04:25 +0000 Subject: [PATCH 2/9] init commit. tests will be added later --- index.js | 15 +++ lib/file.js | 13 +++ lib/processor.js | 177 ++++++++++++++++++++++++++++++ package.json | 26 +++++ src/file.js | 3 + src/processor.js | 108 ++++++++++++++++++ tests/fixtures/package.json | 15 +++ tests/fixtures/settings.json.dist | 12 ++ var/.gitkeep | 0 9 files changed, 369 insertions(+) create mode 100644 index.js create mode 100644 lib/file.js create mode 100644 lib/processor.js create mode 100644 package.json create mode 100644 src/file.js create mode 100644 src/processor.js create mode 100644 tests/fixtures/package.json create mode 100644 tests/fixtures/settings.json.dist create mode 100644 var/.gitkeep diff --git a/index.js b/index.js new file mode 100644 index 0000000..a7c0191 --- /dev/null +++ b/index.js @@ -0,0 +1,15 @@ +'use strict'; + +let fs = require('fs'); + +// let packageJsonPath = `${process.cwd()}/package.json`, +let packageJsonPath = `${process.cwd()}/tests/fixtures/package.json`, + packageJsonContent = fs.readFileSync(packageJsonPath); + +/** @param {{extra: {node_parameter_handler: []}}} content */ +let packageJson = JSON.parse(packageJsonContent), + Processor = require('./src/processor'), + processor = new Processor(packageJson.extra.node_parameter_handler, process.cwd()); + +processor.process(); +processor.write(); \ No newline at end of file diff --git a/lib/file.js b/lib/file.js new file mode 100644 index 0000000..2fba963 --- /dev/null +++ b/lib/file.js @@ -0,0 +1,13 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var File = function File() { + _classCallCheck(this, File); +}; + +exports.default = File; \ No newline at end of file diff --git a/lib/processor.js b/lib/processor.js new file mode 100644 index 0000000..adc679d --- /dev/null +++ b/lib/processor.js @@ -0,0 +1,177 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _file = require("./file"); + +var _file2 = _interopRequireDefault(_file); + +var _fs = require("fs"); + +var _fs2 = _interopRequireDefault(_fs); + +var _deepmerge = require("deepmerge"); + +var _deepmerge2 = _interopRequireDefault(_deepmerge); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Processor = function () { + // config; + // cwd; + // files; + + function Processor(config, cwd) { + var files = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; + + _classCallCheck(this, Processor); + } + + _createClass(Processor, [{ + key: "process", + value: function process() { + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = this.config[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var config = _step.value; + + var file = this.processFile(config); + + this.files.push(file); + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + } + }, { + key: "processFile", + value: function processFile(config) { + var file = new _file2.default(); + + var pathSource = this.resolvePath(config.source), + pathOutput = this.resolvePath(config.output); + + var packageJsonPath = this.resolvePath(pathSource), + packageJsonContent = _fs2.default.readFileSync(packageJsonPath); + + /** @param {{extra: {}}} content */ + var packageJson = JSON.parse(packageJsonContent), + solvedJson = this.resolveOverwritten(config), + completedJson = this.constructor.getMergedData(packageJson, solvedJson); + + file.source = pathSource; + file.output = pathOutput; + file.contex = completedJson; + + return file; + } + + /** + * @param {string} path + */ + + }, { + key: "resolvePath", + value: function resolvePath(path) { + if ('/' === path.charAt(0)) { + return path; + } + + return this.cwd + "/" + path; + } + }, { + key: "resolveOverwritten", + value: function resolveOverwritten(params) { + var object = {}; + + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = Object.keys(params)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var abstractPath = _step2.value; + + var envVariable = params[abstractPath], + value = this.constructor.getEnvironmentValue(envVariable); + + this.constructor.overwriteObjectFieldValue(abstractPath, value, object); + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + } + }], [{ + key: "getEnvironmentValue", + value: function getEnvironmentValue(index) { + return process.env[index] || undefined; + } + }, { + key: "getMergedData", + value: function getMergedData(data, overwrittenData) { + return (0, _deepmerge2.default)(data, overwrittenData); + } + }, { + key: "overwriteObjectFieldValue", + value: function overwriteObjectFieldValue(abstractPath, value, object, delimiter) { + if (undefined === value) { + return; + } + + delimiter = undefined !== delimiter ? delimiter : '.'; + + var indexes = abstractPath.split(delimiter), + lastPartIndex = indexes.length - 1; + + for (var i = 0; i <= lastPartIndex; i++) { + var index = indexes[i]; + + if (i === lastPartIndex) { + object[index] = value; + break; + } + + if (undefined === object[index]) { + object[index] = {}; + } + + object = object[index]; + } + } + }]); + + return Processor; +}(); + +exports.default = Processor; \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..1f0b218 --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "node-parameter-handler", + "version": "0.1.0", + "description": "test", + "main": "index.js", + "scripts": { + "test": "test" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/eugene-matvejev/node.js-parameter-handler.git" + }, + "keywords": [ + "test" + ], + "author": "eugene matvejev", + "license": "MIT", + "bugs": { + "url": "https://github.com/eugene-matvejev/node.js-parameter-handler/issues" + }, + "homepage": "https://github.com/eugene-matvejev/node.js-parameter-handler#readme", + "dependencies": { + "deepmerge": "^1.3.1", + "jsonfile": "^2.4.0" + } +} diff --git a/src/file.js b/src/file.js new file mode 100644 index 0000000..7d4cdf4 --- /dev/null +++ b/src/file.js @@ -0,0 +1,3 @@ +module.exports = class File { + +} \ No newline at end of file diff --git a/src/processor.js b/src/processor.js new file mode 100644 index 0000000..aeccd0a --- /dev/null +++ b/src/processor.js @@ -0,0 +1,108 @@ +let File = require('./file'); +let fs = require('fs'); +let deepmerge = require('deepmerge'); + +module.exports = class Processor { + constructor(config, cwd) { + this.config = config; + this.cwd = cwd; + } + + process() { + this.files = []; + + this.config.forEach(config => { + let file = this.processFile(config); + + this.files.push(file); + }) + } + + write() { + this.files.forEach(file => fs.writeFile(file.output, JSON.stringify(file.content, null, 2), 'UTF-8')); + } + + /** + * @param {{envMap: {}, output: string, source: string}} config + * + * @returns {*} + */ + processFile(config) { + let file = new File(); + + let pathSource = this.resolvePath(config.source), + pathOutput = this.resolvePath(config.output); + + let packageJsonPath = this.resolvePath(pathSource), + packageJsonContent = fs.readFileSync(packageJsonPath); + + /** @param {{extra: {}}} content */ + let packageJson = JSON.parse(packageJsonContent), + solvedJson = this.resolveOverwritten(config.envMap), + completedJson = this.constructor.getMergedData(packageJson, solvedJson); + + file.source = pathSource; + file.output = pathOutput; + file.content = completedJson; + + return file; + } + + /** + * @param {string} path + */ + resolvePath(path) { + if ('/' === path.charAt(0)) { + return path; + } + + return `${this.cwd}/${path}`; + } + + resolveOverwritten(envMapping) { + let object = {}; + + for (let abstractPath of Object.keys(envMapping)) { + let envVariable = envMapping[abstractPath], + value = this.constructor.getEnvironmentValue(envVariable); + + this.constructor.overwriteObjectFieldValue(abstractPath, value, object) + } + + return object; + } + + static getEnvironmentValue(index) { + return process.env[index] || undefined; + } + + static getMergedData(data, overwrittenData) { + return deepmerge(data, overwrittenData); + } + + static overwriteObjectFieldValue(abstractPath, value, object, delimiter) { + if (undefined === value) { + return; + } + + delimiter = undefined !== delimiter ? delimiter : '.'; + + let indexes = abstractPath.split(delimiter), + lastPartIndex = indexes.length - 1; + + for (let i = 0; i <= lastPartIndex; i++) { + let index = indexes[i]; + + if (i === lastPartIndex) { + object[index] = value; + break; + } + + if (undefined === object[index]) { + object[index] = {}; + } + + object = object[index]; + } + } +}; \ No newline at end of file diff --git a/tests/fixtures/package.json b/tests/fixtures/package.json new file mode 100644 index 0000000..eedb411 --- /dev/null +++ b/tests/fixtures/package.json @@ -0,0 +1,15 @@ +{ + "extra": { + "node_parameter_handler": [ + { + "source": "tests/fixtures/settings.json.dist", + "output": "var/settings.json", + "envMap": { + "touched": "BASE_URL", + "test.touched": "PWD", + "test.test.touched": "HOME" + } + } + ] + } +} diff --git a/tests/fixtures/settings.json.dist b/tests/fixtures/settings.json.dist new file mode 100644 index 0000000..86cf4dc --- /dev/null +++ b/tests/fixtures/settings.json.dist @@ -0,0 +1,12 @@ +{ + "touched": "to be replaced", + "untouched": "untouched", + "test": { + "touched": "to be replaced", + "untouched": "untouched", + "test": { + "touched": "to be replaced", + "untouched": "untouched" + } + } +} diff --git a/var/.gitkeep b/var/.gitkeep new file mode 100644 index 0000000..e69de29 From 97f6a13f33e5d5310f046a501a96fba68d3e5bb1 Mon Sep 17 00:00:00 2001 From: Eugene Matvejev Date: Mon, 2 Jan 2017 20:05:40 +0000 Subject: [PATCH 3/9] Update index.js --- index.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/index.js b/index.js index a7c0191..08e9a21 100644 --- a/index.js +++ b/index.js @@ -1,15 +1,12 @@ 'use strict'; -let fs = require('fs'); - -// let packageJsonPath = `${process.cwd()}/package.json`, -let packageJsonPath = `${process.cwd()}/tests/fixtures/package.json`, - packageJsonContent = fs.readFileSync(packageJsonPath); - +let fs = require('fs'), + packageJsonPath = `${process.cwd()}/package.json`, + packageJsonContent = fs.readFileSync(packageJsonPath), /** @param {{extra: {node_parameter_handler: []}}} content */ -let packageJson = JSON.parse(packageJsonContent), + packageJson = JSON.parse(packageJsonContent), Processor = require('./src/processor'), processor = new Processor(packageJson.extra.node_parameter_handler, process.cwd()); processor.process(); -processor.write(); \ No newline at end of file +processor.write(); From 8346532fa15897ac45e74f23e4a25c0fa839d86d Mon Sep 17 00:00:00 2001 From: Eugene Matvejev Date: Mon, 2 Jan 2017 20:06:01 +0000 Subject: [PATCH 4/9] Delete file.js --- lib/file.js | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 lib/file.js diff --git a/lib/file.js b/lib/file.js deleted file mode 100644 index 2fba963..0000000 --- a/lib/file.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var File = function File() { - _classCallCheck(this, File); -}; - -exports.default = File; \ No newline at end of file From 7bf926172f199058a1641a0f1b6c4fc285df775f Mon Sep 17 00:00:00 2001 From: Eugene Matvejev Date: Mon, 2 Jan 2017 20:06:09 +0000 Subject: [PATCH 5/9] Delete processor.js --- lib/processor.js | 177 ----------------------------------------------- 1 file changed, 177 deletions(-) delete mode 100644 lib/processor.js diff --git a/lib/processor.js b/lib/processor.js deleted file mode 100644 index adc679d..0000000 --- a/lib/processor.js +++ /dev/null @@ -1,177 +0,0 @@ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _file = require("./file"); - -var _file2 = _interopRequireDefault(_file); - -var _fs = require("fs"); - -var _fs2 = _interopRequireDefault(_fs); - -var _deepmerge = require("deepmerge"); - -var _deepmerge2 = _interopRequireDefault(_deepmerge); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var Processor = function () { - // config; - // cwd; - // files; - - function Processor(config, cwd) { - var files = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; - - _classCallCheck(this, Processor); - } - - _createClass(Processor, [{ - key: "process", - value: function process() { - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = this.config[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var config = _step.value; - - var file = this.processFile(config); - - this.files.push(file); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - } - }, { - key: "processFile", - value: function processFile(config) { - var file = new _file2.default(); - - var pathSource = this.resolvePath(config.source), - pathOutput = this.resolvePath(config.output); - - var packageJsonPath = this.resolvePath(pathSource), - packageJsonContent = _fs2.default.readFileSync(packageJsonPath); - - /** @param {{extra: {}}} content */ - var packageJson = JSON.parse(packageJsonContent), - solvedJson = this.resolveOverwritten(config), - completedJson = this.constructor.getMergedData(packageJson, solvedJson); - - file.source = pathSource; - file.output = pathOutput; - file.contex = completedJson; - - return file; - } - - /** - * @param {string} path - */ - - }, { - key: "resolvePath", - value: function resolvePath(path) { - if ('/' === path.charAt(0)) { - return path; - } - - return this.cwd + "/" + path; - } - }, { - key: "resolveOverwritten", - value: function resolveOverwritten(params) { - var object = {}; - - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = Object.keys(params)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var abstractPath = _step2.value; - - var envVariable = params[abstractPath], - value = this.constructor.getEnvironmentValue(envVariable); - - this.constructor.overwriteObjectFieldValue(abstractPath, value, object); - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - } - }], [{ - key: "getEnvironmentValue", - value: function getEnvironmentValue(index) { - return process.env[index] || undefined; - } - }, { - key: "getMergedData", - value: function getMergedData(data, overwrittenData) { - return (0, _deepmerge2.default)(data, overwrittenData); - } - }, { - key: "overwriteObjectFieldValue", - value: function overwriteObjectFieldValue(abstractPath, value, object, delimiter) { - if (undefined === value) { - return; - } - - delimiter = undefined !== delimiter ? delimiter : '.'; - - var indexes = abstractPath.split(delimiter), - lastPartIndex = indexes.length - 1; - - for (var i = 0; i <= lastPartIndex; i++) { - var index = indexes[i]; - - if (i === lastPartIndex) { - object[index] = value; - break; - } - - if (undefined === object[index]) { - object[index] = {}; - } - - object = object[index]; - } - } - }]); - - return Processor; -}(); - -exports.default = Processor; \ No newline at end of file From 169e6849dc890961d0c696c9d540d61497097f0f Mon Sep 17 00:00:00 2001 From: Eugene Matvejev Date: Mon, 2 Jan 2017 20:06:57 +0000 Subject: [PATCH 6/9] Update processor.js --- src/processor.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/processor.js b/src/processor.js index aeccd0a..6cc2e58 100644 --- a/src/processor.js +++ b/src/processor.js @@ -1,6 +1,6 @@ -let File = require('./file'); -let fs = require('fs'); -let deepmerge = require('deepmerge'); +let fs = require('fs'), + deepmerge = require('deepmerge'), + File = require('./file'); module.exports = class Processor { constructor(config, cwd) { @@ -105,4 +105,4 @@ module.exports = class Processor { object = object[index]; } } -}; \ No newline at end of file +}; From bb10e29b8c825fca10e46e1a07ef8a27304e8cfc Mon Sep 17 00:00:00 2001 From: Eugene Matvejev Date: Mon, 2 Jan 2017 20:07:12 +0000 Subject: [PATCH 7/9] Update file.js --- src/file.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/file.js b/src/file.js index 7d4cdf4..d81a6a6 100644 --- a/src/file.js +++ b/src/file.js @@ -1,3 +1,2 @@ module.exports = class File { - -} \ No newline at end of file +} From d82f51ae40566e77a8860e077016cfdbe7be18cd Mon Sep 17 00:00:00 2001 From: Eugene Matvejev Date: Mon, 2 Jan 2017 20:10:34 +0000 Subject: [PATCH 8/9] Update package.json --- package.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 1f0b218..f8fde97 100644 --- a/package.json +++ b/package.json @@ -1,24 +1,24 @@ { - "name": "node-parameter-handler", + "name": "node.js-parameter-handler", "version": "0.1.0", - "description": "test", + "description": "build .json files which can be used as settings", "main": "index.js", "scripts": { - "test": "test" + "test": "in progress" }, "repository": { "type": "git", - "url": "git+https://github.com/eugene-matvejev/node.js-parameter-handler.git" + "url": "git+https://github.com/explore-node-js/node.js-parameter-handler.git" }, "keywords": [ - "test" + "config handler, parameter handler" ], - "author": "eugene matvejev", + "author": "Eugene Matvejev ", "license": "MIT", "bugs": { - "url": "https://github.com/eugene-matvejev/node.js-parameter-handler/issues" + "url": "https://github.com/explore-node-js/node.js-parameter-handler/issues" }, - "homepage": "https://github.com/eugene-matvejev/node.js-parameter-handler#readme", + "homepage": "https://github.com/explore-node-js/node.js-parameter-handler#readme", "dependencies": { "deepmerge": "^1.3.1", "jsonfile": "^2.4.0" From 9d7325faf86085f5107f3ed262dfef2113064de3 Mon Sep 17 00:00:00 2001 From: Eugene Matvejevs Date: Wed, 4 Jan 2017 09:38:33 +0000 Subject: [PATCH 9/9] basic tests --- package.json | 23 +++++++++++++---------- tests/processor.test.js | 17 +++++++++++++++++ 2 files changed, 30 insertions(+), 10 deletions(-) create mode 100644 tests/processor.test.js diff --git a/package.json b/package.json index 1f0b218..b94db40 100644 --- a/package.json +++ b/package.json @@ -1,26 +1,29 @@ { - "name": "node-parameter-handler", + "name": "node.js-parameter-handler", "version": "0.1.0", - "description": "test", + "description": "build .json files which can be used as settings", "main": "index.js", - "scripts": { - "test": "test" - }, "repository": { "type": "git", - "url": "git+https://github.com/eugene-matvejev/node.js-parameter-handler.git" + "url": "git+https://github.com/explore-node-js/node.js-parameter-handler.git" }, "keywords": [ - "test" + "config handler, parameter handler" ], - "author": "eugene matvejev", + "author": "Eugene Matvejev ", "license": "MIT", "bugs": { - "url": "https://github.com/eugene-matvejev/node.js-parameter-handler/issues" + "url": "https://github.com/explore-node-js/node.js-parameter-handler/issues" }, - "homepage": "https://github.com/eugene-matvejev/node.js-parameter-handler#readme", + "homepage": "https://github.com/explore-node-js/node.js-parameter-handler#readme", "dependencies": { "deepmerge": "^1.3.1", "jsonfile": "^2.4.0" + }, + "devDependencies": { + "jest": "^18.1.0" + }, + "scripts": { + "test": "node node_modules/jest/bin/jest.js" } } diff --git a/tests/processor.test.js b/tests/processor.test.js new file mode 100644 index 0000000..12467b6 --- /dev/null +++ b/tests/processor.test.js @@ -0,0 +1,17 @@ +"use strict"; + +const Processor = require('../src/processor'); +const config = require('./fixtures/package.json').extra.node_parameter_handler; +const cwd = process.cwd(); + +describe('processor', () => { + describe('::resolvePath', () => { + const processor = new Processor(config, cwd); + + [ '/', 'test', 'test/', 'test/test', '/test/test' ].forEach(path => { + it(`should be converted '${path}' to absolute path`, () => { + expect(processor.resolvePath(path)).toMatch(/^\/.*/); + }) + }); + }) +});