Skip to content

Commit 1acea30

Browse files
authored
Tap reporter: report thrown error messages (#3317)
original work by @chrmod; continuation of PR #2908. BREAKING CHANGES; SEMVER MAJOR Signed-off-by: Christopher Hiller <[email protected]>
1 parent 741b0bd commit 1acea30

File tree

2 files changed

+77
-1
lines changed

2 files changed

+77
-1
lines changed

lib/reporters/tap.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ function TAP (runner) {
4646
runner.on('fail', function (test, err) {
4747
failures++;
4848
console.log('not ok %d %s', n, title(test));
49+
if (err.message) {
50+
console.log(err.message.replace(/^/gm, ' '));
51+
}
4952
if (err.stack) {
5053
console.log(err.stack.replace(/^/gm, ' '));
5154
}

test/reporters/tap.spec.js

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,41 @@ describe('TAP reporter', function () {
8080
});
8181

8282
describe('on fail', function () {
83+
describe('if there is an error message', function () {
84+
it('should write expected message and error message', function () {
85+
var expectedTitle = 'some title';
86+
var countAfterTestEnd = 2;
87+
var expectedErrorMessage = 'some error';
88+
var test = {
89+
fullTitle: function () {
90+
return expectedTitle;
91+
},
92+
slow: function () {}
93+
};
94+
var error = {
95+
message: expectedErrorMessage
96+
};
97+
runner.on = function (event, callback) {
98+
if (event === 'test end') {
99+
callback();
100+
}
101+
if (event === 'fail') {
102+
callback(test, error);
103+
}
104+
};
105+
runner.suite = '';
106+
runner.grepTotal = function () { };
107+
TAP.call({}, runner);
108+
109+
process.stdout.write = stdoutWrite;
110+
111+
var expectedArray = [
112+
'not ok ' + countAfterTestEnd + ' ' + expectedTitle + '\n',
113+
' ' + expectedErrorMessage + '\n'
114+
];
115+
expect(stdout).to.eql(expectedArray);
116+
});
117+
});
83118
describe('if there is an error stack', function () {
84119
it('should write expected message and stack', function () {
85120
var expectedStack = 'some stack';
@@ -100,7 +135,45 @@ describe('TAP reporter', function () {
100135
expect(stdout).to.eql(expectedArray);
101136
});
102137
});
103-
describe('if there is no error stack', function () {
138+
describe('if there is an error stack and error message', function () {
139+
it('should write expected message and stack', function () {
140+
var expectedTitle = 'some title';
141+
var countAfterTestEnd = 2;
142+
var expectedStack = 'some stack';
143+
var expectedErrorMessage = 'some error';
144+
var test = {
145+
fullTitle: function () {
146+
return expectedTitle;
147+
},
148+
slow: function () {}
149+
};
150+
var error = {
151+
stack: expectedStack,
152+
message: expectedErrorMessage
153+
};
154+
runner.on = function (event, callback) {
155+
if (event === 'test end') {
156+
callback();
157+
}
158+
if (event === 'fail') {
159+
callback(test, error);
160+
}
161+
};
162+
runner.suite = '';
163+
runner.grepTotal = function () { };
164+
TAP.call({}, runner);
165+
166+
process.stdout.write = stdoutWrite;
167+
168+
var expectedArray = [
169+
'not ok ' + countAfterTestEnd + ' ' + expectedTitle + '\n',
170+
' ' + expectedErrorMessage + '\n',
171+
' ' + expectedStack + '\n'
172+
];
173+
expect(stdout).to.eql(expectedArray);
174+
});
175+
});
176+
describe('if there is no error stack or error message', function () {
104177
it('should write expected message only', function () {
105178
var error = {};
106179
runner.on = runner.once = function (event, callback) {

0 commit comments

Comments
 (0)