forked from gruntjs/grunt
/
load-npm-tasks.js
49 lines (42 loc) · 1.26 KB
/
load-npm-tasks.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
'use strict';
var Log = require('grunt-legacy-log').Log;
var assert = require('assert');
var through = require('through2');
function test(grunt, fixture) {
grunt.file.setBase('../fixtures/' + fixture);
// Create a custom log to assert output
var stdout = [];
var oldlog = grunt.log;
var stream = through(function(data, enc, next) {
stdout.push(data.toString());
next(null, data);
});
stream.pipe(process.stdout);
var log = new Log({
grunt: grunt,
outStream: stream,
});
grunt.log = log;
// Load a npm task
grunt.loadNpmTasks('grunt-foo-plugin');
// Run them
grunt.registerTask('default', ['foo', 'done']);
// Assert they loaded and ran correctly
grunt.registerTask('done', function() {
grunt.log = oldlog;
stdout = stdout.join('\n');
try {
assert.ok(stdout.indexOf('foo has ran.') !== -1, 'oh-four task should have ran.');
} catch (err) {
grunt.log.subhead(err.message);
grunt.log.error('Expected ' + err.expected + ' but actually: ' + err.actual);
throw err;
}
});
}
module.exports = function(grunt) {
// NPM task package is inside $CWD/node_modules
test(grunt, 'load-npm-tasks');
// NPM task package hoisted to $CWD/../node_modules
test(grunt, 'load-npm-tasks/test-package');
};