UNPKG

kocha

Version:

Modern, simpler Mocha clone, no globals, lint friendly

86 lines (68 loc) 2.02 kB
'use strict'; 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;