forked from gulpjs/gulp-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
/
execution-errors.js
100 lines (85 loc) · 3.33 KB
/
execution-errors.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
89
90
91
92
93
94
95
96
97
98
99
100
'use strict';
var expect = require('expect');
var exec = require('child_process').exec;
var path = require('path');
var os = require('os');
var tildify = require('../lib/shared/tildify');
var eraseTime = require('./tool/erase-time');
var eraseLapse = require('./tool/erase-lapse');
var sliceLines = require('./tool/slice-lines');
var gulp = require('./tool/gulp-cmd');
describe('execution error', function() {
it('should output an error if a task is not defined', function(done) {
var opts = { cwd: path.join(__dirname, './fixtures/gulpfiles') };
exec(gulp('a'), opts, cb);
function cb(err, stdout, stderr) {
expect(err).not.toBeNull();
expect(err.code).toEqual(1);
expect(eraseTime(stdout)).toMatch('Using gulpfile ');
expect(eraseTime(stderr)).toEqual(
'Task never defined: a\n' +
'To list available tasks, try running: gulp --tasks\n');
done();
}
});
it('should output an error if a task is not defined but a similar task is found', function(done) {
var opts = { cwd: path.join(__dirname, './fixtures/gulpfiles') };
exec(gulp('test0'), opts, cb);
function cb(err, stdout, stderr) {
expect(err).not.toBeNull();
expect(err.code).toEqual(1);
expect(eraseTime(stdout)).toMatch('Using gulpfile ');
expect(eraseTime(stderr)).toEqual(
'Task never defined: test0 - did you mean? test1, test2, test3, test4, test5, test6, test7, test8\n' +
'To list available tasks, try running: gulp --tasks\n');
done();
}
});
it('should output an error if gulp version is unsupported', function(done) {
var opts = { cwd: path.join(__dirname, './fixtures/errors/bad-gulp-version') };
exec(gulp(), opts, cb);
function cb(err, stdout, stderr) {
expect(err).not.toBeNull();
expect(err.code).toEqual(1);
expect(eraseTime(stdout)).toEqual('');
expect(eraseTime(stderr)).toEqual('Unsupported gulp version 1.2.3\n');
done();
}
});
it('should output an error if gulp is not found', function(done) {
var opts = { cwd: os.tmpdir() };
exec(gulp(), opts, cb);
function cb(err, stdout, stderr) {
expect(err).not.toBeNull();
expect(err.code).toEqual(1);
expect(sliceLines(stderr, 0, 1)).toMatch('Local gulp not found in ');
expect(sliceLines(stderr, 1, 2)).toEqual('Try running: npm install gulp');
done();
}
});
it('should log a same error once', function(done) {
var dir = path.join(__dirname, 'fixtures/gulpfiles');
var gulpfileName = 'gulpfile-dedup-errorlog.js';
exec(gulp(
'--gulpfile', gulpfileName
), { cwd: dir }, cb);
function cb(err, stdout, stderr) {
expect(err).not.toBeNull();
expect(err.code).toEqual(1);
expect(sliceLines(stdout)).toEqual(
'Using gulpfile ' + tildify(path.join(dir, gulpfileName)) + '\n' +
'Starting \'default\'...\n' +
'Starting \'b\'...\n' +
'Starting \'a\'...\n' +
'');
stderr = eraseLapse(eraseTime(stderr)).split(/[\r\n]+/);
var n = stderr.length;
expect(stderr[0]).toEqual('\'a\' errored after ?');
expect(stderr[1]).toEqual('Error: Task \'a\' failed!');
expect(stderr[n - 3]).toEqual('\'b\' errored after ?');
expect(stderr[n - 2]).toEqual('\'default\' errored after ?');
expect(stderr[n - 1]).toEqual('');
done();
}
});
});