From 79f626f8f41cda7f9c6f72ee2f2b767c853b3b52 Mon Sep 17 00:00:00 2001 From: azu Date: Mon, 19 Jan 2015 14:40:22 +0900 Subject: [PATCH] feat(intelli-espower-loader): add default patterns --- .gitignore | 31 +++++++++++++++++++++++++++++++ intelli-espower-loader.js | 34 +++------------------------------- lib/get-package-json.js | 29 +++++++++++++++++++++++++++++ lib/get-test-dir.js | 19 +++++++++++++++++++ test/get-test-dir-test.js | 24 ++++++++++++++++++++++++ 5 files changed, 106 insertions(+), 31 deletions(-) create mode 100644 .gitignore create mode 100644 lib/get-package-json.js create mode 100644 lib/get-test-dir.js create mode 100644 test/get-test-dir-test.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d34f62f --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +# Created by .ignore support plugin (hsz.mobi) +### Node template +# Logs +logs +*.log + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# 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 directory +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git- +node_modules + + diff --git a/intelli-espower-loader.js b/intelli-espower-loader.js index 2975b3c..0536400 100644 --- a/intelli-espower-loader.js +++ b/intelli-espower-loader.js @@ -1,36 +1,8 @@ "use strict"; -var fs = require("fs"); -var assert = require("assert"); var pather = require("path"); -var normalizeDir = require("./lib/normalize-dir"); -var packageName = require("./package.json").name; - -function findPackageDir(paths) { - if (!paths) { - return null; - } - for (var i = 0; i < paths.length; ++i) { - var dir = pather.dirname(paths[i]); - var dirName = dir.split(pather.sep).pop(); - if (dirName !== packageName && fs.existsSync(pather.join(dir, 'package.json'))) { - return dir; - } - } -} -function getPackageJSON() { - var dir = findPackageDir(module.paths); - assert(dir, "package.json is not found"); - return require(pather.resolve(dir, "package.json")); -} -function getTestDirFromPkg(pkg) { - var directories = pkg.directories; - assert.equal(typeof directories, "object", 'You should setting `directories : { test : "test/" }`'); - assert.equal(typeof directories.test, "string", 'You should setting `directories : { test : "test/" }`'); - return directories.test; -} -var pkg = getPackageJSON(); -var testDirectory = getTestDirFromPkg(pkg); +var pkg = require("./lib/get-package-json")(module.paths); +var testDirectory = require("./lib/get-test-dir")(pkg); require('espower-loader')({ cwd: process.cwd(), - pattern: normalizeDir(testDirectory) + "**" + pather.sep + "*.js" + pattern: testDirectory + "**" + pather.sep + "*.js" }); diff --git a/lib/get-package-json.js b/lib/get-package-json.js new file mode 100644 index 0000000..8b63338 --- /dev/null +++ b/lib/get-package-json.js @@ -0,0 +1,29 @@ +// LICENSE : MIT +"use strict"; +var fs = require("fs"); +var assert = require("assert"); +var pather = require("path"); +var packageName = require("../package.json").name; + +function findPackageDir(paths) { + if (!paths) { + return null; + } + for (var i = 0; i < paths.length; ++i) { + var dir = pather.dirname(paths[i]); + var dirName = dir.split(pather.sep).pop(); + if (dirName !== packageName && fs.existsSync(pather.join(dir, 'package.json'))) { + return dir; + } + } +} +/** + * @param {string[]} paths the paths for look-up + * @returns {*} + */ +function getPackageJSON(paths) { + var dir = findPackageDir(paths); + assert(dir, "package.json is not found"); + return require(pather.resolve(dir, "package.json")); +} +module.exports = getPackageJSON; \ No newline at end of file diff --git a/lib/get-test-dir.js b/lib/get-test-dir.js new file mode 100644 index 0000000..80fd94a --- /dev/null +++ b/lib/get-test-dir.js @@ -0,0 +1,19 @@ +// LICENSE : MIT +"use strict"; +var normalizeDir = require("./normalize-dir"); +/** + * Return `dir/` string + * always suffix with `/` + * @param {object} pkg + * @returns {string} + */ +function getTestDirFromPkg(pkg) { + if (pkg && + typeof pkg.directories === 'object' && + typeof pkg.directories.test === 'string') { + return normalizeDir(pkg.directories.test); + } + return "test/"; // default value +} + +module.exports = getTestDirFromPkg; \ No newline at end of file diff --git a/test/get-test-dir-test.js b/test/get-test-dir-test.js new file mode 100644 index 0000000..6596882 --- /dev/null +++ b/test/get-test-dir-test.js @@ -0,0 +1,24 @@ +// LICENSE : MIT +"use strict"; +var assert = require("assert"); +var getTestDir = require("../lib/get-test-dir"); +describe("get-test-dir-test", function () { + context("when `pkg.directories.test` is not found", function () { + it("should return 'test/'", function () { + var dir = getTestDir({ + "directories": {} + }); + assert.equal(dir, "test/"); + }); + }); + context("when `pkg.directories.test` is set", function () { + it("should return 'test/'", function () { + var dir = getTestDir({ + "directories": { + "test": "user-dir" + } + }); + assert.equal(dir, "user-dir/"); + }); + }); +}); \ No newline at end of file