ape-tmpl
Version:
Templates for ape framework.
52 lines (45 loc) • 5.44 kB
JavaScript
/**
* Bud for mocha test.
* @function mochaTestJsBud
* @param {object} config - Mocha testcase configuration.
* @param {string|string[]} config.src - Source file name pattern.
* @param {string} [config.dest] - Destination directory path.
* @returns {object} - Bud for mocha testcase.
*/
;
var path = require('path');
var assert = require('assert');
var aglob = require('aglob');
var _tmpl = require('./_tmpl');
/** @lends mochaTestJsBud */
function mochaTestJsBud(config) {
var src = config.src;
var dest = config.dest || process.cwd();
assert.ok(!!src, 'config.src is required.');
return aglob.sync(src).filter(function (src) {
return path.basename(src) !== 'index.js';
}).filter(function (src) {
return !/^[\._\-]/.test(path.basename(src));
}).filter(function (src) {
try {
return !!require.resolve(src);
} catch (e) {
return false;
}
}).map(function (src) {
var basename = path.basename(src, path.extname(src));
return {
force: false,
mode: '644',
mkdirp: false,
tmpl: _tmpl('hbs/mocha_test.js.hbs'),
path: path.resolve(dest, basename + '_test.js'),
data: {
name: basename,
relative: path.relative(dest, src)
}
};
});
}
module.exports = mochaTestJsBud;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vY2hhX3Rlc3RfanNfYnVkLmpzIl0sIm5hbWVzIjpbInBhdGgiLCJyZXF1aXJlIiwiYXNzZXJ0IiwiYWdsb2IiLCJfdG1wbCIsIm1vY2hhVGVzdEpzQnVkIiwiY29uZmlnIiwic3JjIiwiZGVzdCIsInByb2Nlc3MiLCJjd2QiLCJvayIsInN5bmMiLCJmaWx0ZXIiLCJiYXNlbmFtZSIsInRlc3QiLCJyZXNvbHZlIiwiZSIsIm1hcCIsImV4dG5hbWUiLCJmb3JjZSIsIm1vZGUiLCJta2RpcnAiLCJ0bXBsIiwiZGF0YSIsIm5hbWUiLCJyZWxhdGl2ZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztBQVNBOztBQUVBLElBQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsSUFBTUMsTUFBTSxHQUFHRCxPQUFPLENBQUMsUUFBRCxDQUF0Qjs7QUFDQSxJQUFNRSxLQUFLLEdBQUdGLE9BQU8sQ0FBQyxPQUFELENBQXJCOztBQUNBLElBQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLFNBQUQsQ0FBckI7QUFFQTs7O0FBQ0EsU0FBU0ksY0FBVCxDQUF5QkMsTUFBekIsRUFBaUM7QUFDL0IsTUFBTUMsR0FBRyxHQUFHRCxNQUFNLENBQUNDLEdBQW5CO0FBQ0EsTUFBTUMsSUFBSSxHQUFHRixNQUFNLENBQUNFLElBQVAsSUFBZUMsT0FBTyxDQUFDQyxHQUFSLEVBQTVCO0FBQ0FSLEVBQUFBLE1BQU0sQ0FBQ1MsRUFBUCxDQUFVLENBQUMsQ0FBQ0osR0FBWixFQUFpQix5QkFBakI7QUFDQSxTQUFPSixLQUFLLENBQUNTLElBQU4sQ0FBV0wsR0FBWCxFQUNKTSxNQURJLENBQ0csVUFBQ04sR0FBRDtBQUFBLFdBQ05QLElBQUksQ0FBQ2MsUUFBTCxDQUFjUCxHQUFkLE1BQXVCLFVBRGpCO0FBQUEsR0FESCxFQUlKTSxNQUpJLENBSUcsVUFBQ04sR0FBRDtBQUFBLFdBQ04sQ0FBQyxXQUFXUSxJQUFYLENBQWdCZixJQUFJLENBQUNjLFFBQUwsQ0FBY1AsR0FBZCxDQUFoQixDQURLO0FBQUEsR0FKSCxFQU9KTSxNQVBJLENBT0csVUFBQ04sR0FBRCxFQUFTO0FBQ2YsUUFBSTtBQUNGLGFBQU8sQ0FBQyxDQUFDTixPQUFPLENBQUNlLE9BQVIsQ0FBZ0JULEdBQWhCLENBQVQ7QUFDRCxLQUZELENBRUUsT0FBT1UsQ0FBUCxFQUFVO0FBQ1YsYUFBTyxLQUFQO0FBQ0Q7QUFDRixHQWJJLEVBY0pDLEdBZEksQ0FjQSxVQUFDWCxHQUFELEVBQVM7QUFDWixRQUFJTyxRQUFRLEdBQUdkLElBQUksQ0FBQ2MsUUFBTCxDQUFjUCxHQUFkLEVBQW1CUCxJQUFJLENBQUNtQixPQUFMLENBQWFaLEdBQWIsQ0FBbkIsQ0FBZjtBQUNBLFdBQU87QUFDTGEsTUFBQUEsS0FBSyxFQUFFLEtBREY7QUFFTEMsTUFBQUEsSUFBSSxFQUFFLEtBRkQ7QUFHTEMsTUFBQUEsTUFBTSxFQUFFLEtBSEg7QUFJTEMsTUFBQUEsSUFBSSxFQUFFbkIsS0FBSyxDQUFDLHVCQUFELENBSk47QUFLTEosTUFBQUEsSUFBSSxFQUFFQSxJQUFJLENBQUNnQixPQUFMLENBQWFSLElBQWIsRUFBbUJNLFFBQVEsR0FBRyxVQUE5QixDQUxEO0FBTUxVLE1BQUFBLElBQUksRUFBRTtBQUNKQyxRQUFBQSxJQUFJLEVBQUVYLFFBREY7QUFFSlksUUFBQUEsUUFBUSxFQUFFMUIsSUFBSSxDQUFDMEIsUUFBTCxDQUFjbEIsSUFBZCxFQUFvQkQsR0FBcEI7QUFGTjtBQU5ELEtBQVA7QUFXRCxHQTNCSSxDQUFQO0FBNEJEOztBQUVEb0IsTUFBTSxDQUFDQyxPQUFQLEdBQWlCdkIsY0FBakIiLCJzb3VyY2VSb290IjoiLi4vLi4vbGliIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCdWQgZm9yIG1vY2hhIHRlc3QuXG4gKiBAZnVuY3Rpb24gbW9jaGFUZXN0SnNCdWRcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWcgLSBNb2NoYSB0ZXN0Y2FzZSBjb25maWd1cmF0aW9uLlxuICogQHBhcmFtIHtzdHJpbmd8c3RyaW5nW119IGNvbmZpZy5zcmMgLSBTb3VyY2UgZmlsZSBuYW1lIHBhdHRlcm4uXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvbmZpZy5kZXN0XSAtIERlc3RpbmF0aW9uIGRpcmVjdG9yeSBwYXRoLlxuICogQHJldHVybnMge29iamVjdH0gLSBCdWQgZm9yIG1vY2hhIHRlc3RjYXNlLlxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxuY29uc3QgYWdsb2IgPSByZXF1aXJlKCdhZ2xvYicpXG5jb25zdCBfdG1wbCA9IHJlcXVpcmUoJy4vX3RtcGwnKVxuXG4vKiogQGxlbmRzIG1vY2hhVGVzdEpzQnVkICovXG5mdW5jdGlvbiBtb2NoYVRlc3RKc0J1ZCAoY29uZmlnKSB7XG4gIGNvbnN0IHNyYyA9IGNvbmZpZy5zcmNcbiAgY29uc3QgZGVzdCA9IGNvbmZpZy5kZXN0IHx8IHByb2Nlc3MuY3dkKClcbiAgYXNzZXJ0Lm9rKCEhc3JjLCAnY29uZmlnLnNyYyBpcyByZXF1aXJlZC4nKVxuICByZXR1cm4gYWdsb2Iuc3luYyhzcmMpXG4gICAgLmZpbHRlcigoc3JjKSA9PlxuICAgICAgcGF0aC5iYXNlbmFtZShzcmMpICE9PSAnaW5kZXguanMnXG4gICAgKVxuICAgIC5maWx0ZXIoKHNyYykgPT5cbiAgICAgICEvXltcXC5fXFwtXS8udGVzdChwYXRoLmJhc2VuYW1lKHNyYykpXG4gICAgKVxuICAgIC5maWx0ZXIoKHNyYykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuICEhcmVxdWlyZS5yZXNvbHZlKHNyYylcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSlcbiAgICAubWFwKChzcmMpID0+IHtcbiAgICAgIGxldCBiYXNlbmFtZSA9IHBhdGguYmFzZW5hbWUoc3JjLCBwYXRoLmV4dG5hbWUoc3JjKSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZvcmNlOiBmYWxzZSxcbiAgICAgICAgbW9kZTogJzY0NCcsXG4gICAgICAgIG1rZGlycDogZmFsc2UsXG4gICAgICAgIHRtcGw6IF90bXBsKCdoYnMvbW9jaGFfdGVzdC5qcy5oYnMnKSxcbiAgICAgICAgcGF0aDogcGF0aC5yZXNvbHZlKGRlc3QsIGJhc2VuYW1lICsgJ190ZXN0LmpzJyksXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBuYW1lOiBiYXNlbmFtZSxcbiAgICAgICAgICByZWxhdGl2ZTogcGF0aC5yZWxhdGl2ZShkZXN0LCBzcmMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1vY2hhVGVzdEpzQnVkXG4iXX0=