UNPKG

1.57 kBJavaScriptView Raw
1/**
2 * apeman task to measure coverage.
3 * @memberof module:apeman-task-coverage/lib
4 * @function define
5 * @param {string} script - Script to run for coverage.
6 * @param {options} [options] - Optional settings.
7 * @param {string} [options.out="coverage"] - Output directory.
8 * @returns {function} - Defined task function.
9 */
10
11"use strict";
12
13var argx = require('argx'),
14 execcli = require('execcli'),
15 findout = require('findout'),
16 objnest = require('objnest');
17
18/** @lends define */
19function define(script, options) {
20 var args = argx(arguments);
21 options = objnest.expand(args.pop('object') || {});
22
23 var out = options.out || 'coverage';
24
25 /**
26 * Defined task.
27 * @function task
28 * @param {object} context - Apeman task context.
29 * @param {function} callback - Callback when done.
30 */
31 function task(context, callback) {
32 var logger = context.logger,
33 verbose = context.verbose;
34
35 var cmdArgs = ['cover'].concat(script.split(' ')).concat({
36 dir: out
37 });
38 define.istanbul(cmdArgs, callback);
39 }
40
41 task.$desc = "Measure test coverage.";
42 return task;
43}
44
45define.istanbul = function istanbul(args, callback) {
46 function _resolveBy(cwd) {
47 return findout.resolve('node_modules/.bin/istanbul', {
48 safe: true,
49 cwd: cwd
50 });
51 }
52
53 var cmd = _resolveBy(process.cwd()) || _resolveBy(__dirname) || 'istanbul';
54 execcli(cmd, args, {
55 notfound: 'try `npm install istanbul -g`'
56 }, callback);
57};
58
59module.exports = define;