Skip to content

Commit e1c53f8

Browse files
committed
Merge pull request #9 from azu/defaults-pattern
implement: default pattern fix #8
2 parents 1370079 + 1edfa49 commit e1c53f8

File tree

6 files changed

+123
-33
lines changed

6 files changed

+123
-33
lines changed

.gitignore

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Created by .ignore support plugin (hsz.mobi)
2+
### Node template
3+
# Logs
4+
logs
5+
*.log
6+
7+
# Runtime data
8+
pids
9+
*.pid
10+
*.seed
11+
12+
# Directory for instrumented libs generated by jscoverage/JSCover
13+
lib-cov
14+
15+
# Coverage directory used by tools like istanbul
16+
coverage
17+
18+
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
19+
.grunt
20+
21+
# node-waf configuration
22+
.lock-wscript
23+
24+
# Compiled binary addons (http://nodejs.org/api/addons.html)
25+
build/Release
26+
27+
# Dependency directory
28+
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git-
29+
node_modules
30+
31+

intelli-espower-loader.js

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,8 @@
11
"use strict";
2-
var fs = require("fs");
3-
var assert = require("assert");
42
var pather = require("path");
5-
var normalizeDir = require("./lib/normalize-dir");
6-
var packageName = require("./package.json").name;
7-
8-
function findPackageDir(paths) {
9-
if (!paths) {
10-
return null;
11-
}
12-
for (var i = 0; i < paths.length; ++i) {
13-
var dir = pather.dirname(paths[i]);
14-
var dirName = dir.split(pather.sep).pop();
15-
if (dirName !== packageName && fs.existsSync(pather.join(dir, 'package.json'))) {
16-
return dir;
17-
}
18-
}
19-
}
20-
function getPackageJSON() {
21-
var dir = findPackageDir(module.paths);
22-
assert(dir, "package.json is not found");
23-
return require(pather.resolve(dir, "package.json"));
24-
}
25-
function getTestDirFromPkg(pkg) {
26-
var directories = pkg.directories;
27-
assert.equal(typeof directories, "object", 'You should setting `directories : { test : "test/" }`');
28-
assert.equal(typeof directories.test, "string", 'You should setting `directories : { test : "test/" }`');
29-
return directories.test;
30-
}
31-
var pkg = getPackageJSON();
32-
var testDirectory = getTestDirFromPkg(pkg);
3+
var pkg = require("./lib/get-package-json")(module.paths);
4+
var testDirectory = require("./lib/get-test-dir")(pkg);
335
require('espower-loader')({
346
cwd: process.cwd(),
35-
pattern: normalizeDir(testDirectory) + "**" + pather.sep + "*.js"
7+
pattern: testDirectory + "**" + pather.sep + "*.js"
368
});

lib/get-package-json.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// LICENSE : MIT
2+
"use strict";
3+
4+
var assert = require("assert");
5+
var path = require("path");
6+
var packageName = require("../package.json").name;
7+
8+
function findPackageDir(paths) {
9+
if (!paths) {
10+
return null;
11+
}
12+
for (var i = 0; i < paths.length; ++i) {
13+
var dir = path.dirname(paths[i]);
14+
var dirName = dir.split(path.sep).pop();
15+
if (dirName !== packageName) {
16+
return dir;
17+
}
18+
}
19+
}
20+
/**
21+
* find package.json directory and return package json.
22+
* You should pass `module.paths` to `paths`.
23+
* @param {string[]} paths the paths for look-up
24+
* @returns {object}
25+
*/
26+
function getPackageJSON(paths) {
27+
var dir = findPackageDir(paths);
28+
assert(dir, "package.json is not found");
29+
return require(path.resolve(dir, "package.json"));
30+
}
31+
module.exports = getPackageJSON;

lib/get-test-dir.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// LICENSE : MIT
2+
"use strict";
3+
var normalizeDir = require("./normalize-dir");
4+
var defaultTestDir = "test/";
5+
/**
6+
* Return `dir/` string
7+
* always suffix with `/`
8+
* @param {object} pkg
9+
* @returns {string}
10+
*/
11+
function getTestDirFromPkg(pkg) {
12+
if (pkg &&
13+
typeof pkg.directories === 'object' &&
14+
typeof pkg.directories.test === 'string') {
15+
return normalizeDir(pkg.directories.test);
16+
}
17+
return defaultTestDir;
18+
}
19+
20+
module.exports = getTestDirFromPkg;

readme.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ npm install power-assert --save-dev
1616

1717
## Usage
1818

19-
1. You have to set test directory to your `package.json`
19+
### 1. (Optional) You have to set test directory to your `package.json`
2020

2121
``` json
2222
{
@@ -37,7 +37,9 @@ npm install power-assert --save-dev
3737
}
3838
```
3939

40-
### Run mocha with `intelli-espower-loader`
40+
If you didn't set directories.test, use 'test/' as default value.
41+
42+
### 2. Run mocha with `intelli-espower-loader`
4143

4244
``` sh
4345
mocha --require intelli-espower-loader

test/get-test-dir-test.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// LICENSE : MIT
2+
"use strict";
3+
var assert = require("assert");
4+
var getTestDir = require("../lib/get-test-dir");
5+
describe("get-test-dir-test", function () {
6+
context("when package.json does not have directories properties", function () {
7+
it("should return directories properties", function () {
8+
var packageJsonMock = {};
9+
var expected = "test/";
10+
assert.equal(getTestDir(packageJsonMock), expected);
11+
});
12+
});
13+
context("when `pkg.directories.test` is not found", function () {
14+
it("should return 'test/'", function () {
15+
var dir = getTestDir({
16+
"directories": {}
17+
});
18+
var expected = "test/";
19+
assert.equal(dir, expected);
20+
});
21+
});
22+
context("when `pkg.directories.test` is set", function () {
23+
it("should return 'user-dir/'", function () {
24+
var dir = getTestDir({
25+
"directories": {
26+
"test": "user-dir"
27+
}
28+
});
29+
var expected = "user-dir/";
30+
assert.equal(dir, expected);
31+
});
32+
});
33+
34+
});

0 commit comments

Comments
 (0)