-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathcommand.use.js
88 lines (78 loc) · 1.9 KB
/
command.use.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
'use strict';
require('mocha');
var path = require('path');
var assert = require('assert');
var base = require('base');
var store = require('base-store');
var option = require('base-option');
var plugins = require('base-plugins');
var expandArgs = require('expand-args');
var minimist = require('minimist');
var cli = require('..');
var app;
function expand(argv, opts) {
return expandArgs(minimist(argv, opts), opts);
}
describe('--use', function() {
beforeEach(function(cb) {
app = base();
app.cwd = app.cwd || process.cwd();
app.use(plugins());
app.use(option());
app.use(store('base-cli-tests'));
app.use(cli());
app.cli.map('use', function(val, key, config, next) {
if (typeof val === 'string') {
val = val.split(',');
}
if (Array.isArray(val)) {
val.forEach(function(ele) {
var fp = path.resolve(config.cwd || app.cwd, ele);
var fn = require(fp);
app.use(fn);
});
}
next();
});
cb();
});
it('should use a plugin', function(cb) {
var count = 0;
app.once('use', function() {
count++
});
app.cli.process({use: 'test/fixtures/plugins/a'}, function(err) {
if (err) return cb(err);
assert.equal(count, 1);
cb();
});
});
it('should use a plugin from a cwd', function(cb) {
var count = 0;
app.once('use', function(key, val) {
count++;
});
app.cli.process({
cwd: 'test/fixtures/plugins',
use: 'a'
}, function(err) {
if (err) return cb(err);
assert.equal(count, 1);
cb();
});
});
it('should use an array of plugins from a cwd', function(cb) {
var n = 0;
app.on('use', function() {
n++;
});
app.cli.process({
cwd: 'test/fixtures/plugins',
use: 'a,b,c'
}, function(err) {
if (err) return cb(err);
assert.equal(n, 3);
cb();
});
});
});