UNPKG

1.31 kBJavaScriptView Raw
1/**
2 * Bud for mocha test.
3 * @function mochaTestJsBud
4 * @param {object} config - Mocha testcase configuration.
5 * @param {string|string[]} config.src - Source file name pattern.
6 * @param {string} [config.dest] - Destination directory path.
7 * @returns {object} - Bud for mocha testcase.
8 */
9
10'use strict'
11
12const path = require('path')
13const assert = require('assert')
14const aglob = require('aglob')
15const _tmpl = require('./_tmpl')
16
17/** @lends mochaTestJsBud */
18function mochaTestJsBud (config) {
19 let src = config.src
20 let dest = config.dest || process.cwd()
21 assert.ok(!!src, 'config.src is required.')
22 return aglob.sync(src)
23 .filter((src) =>
24 path.basename(src) !== 'index.js'
25 )
26 .filter((src) =>
27 !/^[\._\-]/.test(path.basename(src))
28 )
29 .filter((src) => {
30 try {
31 return !!require.resolve(src)
32 } catch (e) {
33 return false
34 }
35 })
36 .map((src) => {
37 let basename = path.basename(src, path.extname(src))
38 return {
39 force: false,
40 mode: '644',
41 mkdirp: false,
42 tmpl: _tmpl('hbs/mocha_test.js.hbs'),
43 path: path.resolve(dest, basename + '_test.js'),
44 data: {
45 name: basename,
46 relative: path.relative(dest, src)
47 }
48 }
49 })
50}
51
52module.exports = mochaTestJsBud