kocha
Version:
Modern, simpler Mocha clone, no globals, lint friendly
86 lines (68 loc) • 2.02 kB
JavaScript
var path = require('path');
var glob = require('glob');
var fs = require('fs');
var statSync = fs.statSync;
var existsSync = fs.existsSync;
/**
* Flattens the given arrays.
* @param {Array[]} arrays
* @return {Array}
*/
var flatten = function flatten(arrays) {
return Array.prototype.concat.apply([], arrays
/**
* Looks up the all files from the given patterns and options.
* @param {string[]} patterns The patterns
* @param {Object} options The options
* @return {string[]}
*/
);
};var lookupFilesAll = function lookupFilesAll(patterns, options) {
return flatten(patterns.map(function (pattern) {
var files = lookupFiles(pattern, options);
if (files.length === 0) {
console.log('Warning: Could not find any test files matching pattern: ' + pattern);
}
return files;
})
/**
* Looks up the files from the given pattern
* @param {string[]} pattern The pattern
* @param {Object} options The options
*/
);
};var lookupFiles = function lookupFiles(pattern, options) {
if (existsSync(pattern)) {
return lookupFilesFromPath(pattern, options);
}
if (existsSync(pattern + '.js')) {
return lookupFilesFromPath(pattern + '.js', options);
}
return lookupFilesFromGlob(pattern, options);
};
var lookupFilesFromGlob = function lookupFilesFromGlob(pattern, options) {
var cwd = options.cwd;
return glob.sync(pattern, options).map(function (scriptPath) {
return path.resolve(cwd, scriptPath);
});
};
var lookupFilesFromPath = function lookupFilesFromPath(filepath, options) {
var cwd = options.cwd;
var stat = void 0;
try {
stat = statSync(filepath);
} catch (e) {
// Path doesn't work, returns an empty array.
return [];
}
if (stat.isFile()) {
return [path.resolve(cwd, filepath)];
}
if (stat.isDirectory()) {
return lookupFilesFromGlob(path.join(filepath, '**/*.js'), options);
}
return [];
};
module.exports = lookupFilesAll;
module.exports.lookupFiles = lookupFiles;
;