Skip to content

Commit

Permalink
jest-jasmine2: pretty-print non-Error errors
Browse files Browse the repository at this point in the history
  • Loading branch information
wmertens committed Apr 13, 2018
1 parent 3919925 commit 019041a
Show file tree
Hide file tree
Showing 6 changed files with 186 additions and 55 deletions.
165 changes: 128 additions & 37 deletions integration-tests/__tests__/__snapshots__/failures.test.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,96 @@ exports[`not throwing Error objects 4`] = `
"
`;
exports[`not throwing Error objects 5`] = `
"FAIL __tests__/during_tests.test.js
✕ Promise thrown during test
✕ Boolean thrown during test
✕ undefined thrown during test
✕ Object thrown during test
✕ Error during test
✕ done(Error)
✕ done(non-error)
● Promise thrown during test
thrown: Promise {}
at packages/jest-jasmine2/build/expectation_result_factory.js:42:47
● Boolean thrown during test
thrown: false
at packages/jest-jasmine2/build/expectation_result_factory.js:42:47
● undefined thrown during test
thrown: undefined
at packages/jest-jasmine2/build/expectation_result_factory.js:42:47
● Object thrown during test
thrown: Object {
\\"notAnError\\": Array [
Object {
\\"hello\\": true,
\\"tooDeep\\": [Object],
},
],
}
at packages/jest-jasmine2/build/expectation_result_factory.js:42:47
● Error during test
ReferenceError: doesNotExist is not defined
26 | test('Error during test', () => {
27 | // eslint-disable-next-line no-undef
> 28 | doesNotExist.alsoThisNot;
29 | });
30 |
31 | test('done(Error)', done => {
at __tests__/during_tests.test.js:28:3
done(Error)
this is an error
30 |
31 | test('done(Error)', done => {
> 32 | done(new Error('this is an error'));
33 | });
34 |
35 | test('done(non-error)', done => {
at __tests__/during_tests.test.js:32:8
done(non-error)
Failed: Object {
\\"notAnError\\": Array [
Object {
\\"hello\\": true,
\\"tooDeep\\": [Object],
},
],
}
34 |
35 | test('done(non-error)', done => {
> 36 | done(deepObject);
37 | });
38 |
at packages/jest-jasmine2/build/expectation_result_factory.js:42:47
at __tests__/during_tests.test.js:36:3
"
`;
exports[`works with assertions in separate files 1`] = `
"FAIL __tests__/test_macro.test.js
✕ use some imported macro to make assertion
Expand Down Expand Up @@ -142,7 +232,7 @@ exports[`works with node assert 1`] = `
● assert
assert.equal(received, expected) or assert(received)
thrown: \\"assert.equal(received, expected) or assert(received)
Expected value to be (operator: ==):
true
Expand All @@ -160,7 +250,7 @@ exports[`works with node assert 1`] = `
assert with a message
assert.equal(received, expected) or assert(received)
thrown: \\"assert.equal(received, expected) or assert(received)
Expected value to be (operator: ==):
true
Expand All @@ -181,7 +271,7 @@ exports[`works with node assert 1`] = `
assert.ok
assert.equal(received, expected) or assert(received)
thrown: \\"assert.equal(received, expected) or assert(received)
Expected value to be (operator: ==):
true
Expand All @@ -199,7 +289,7 @@ exports[`works with node assert 1`] = `
assert.ok with a message
assert.equal(received, expected) or assert(received)
thrown: \\"assert.equal(received, expected) or assert(received)
Expected value to be (operator: ==):
true
Expand All @@ -220,7 +310,7 @@ exports[`works with node assert 1`] = `
assert.equal
assert.equal(received, expected) or assert(received)
thrown: \\"assert.equal(received, expected) or assert(received)
Expected value to be (operator: ==):
2
Expand All @@ -238,7 +328,7 @@ exports[`works with node assert 1`] = `
assert.notEqual
assert.notEqual(received, expected)
thrown: \\"assert.notEqual(received, expected)
Expected value not to be (operator: !=):
1
Expand All @@ -260,23 +350,23 @@ exports[`works with node assert 1`] = `
assert.deepEqual
assert.deepEqual(received, expected)
thrown: \\"assert.deepEqual(received, expected)
Expected value to deeply equal to:
{\\"a\\": {\\"b\\": {\\"c\\": 6}}}
{\\\\\\"a\\\\\\": {\\\\\\"b\\\\\\": {\\\\\\"c\\\\\\": 6}}}
Received:
{\\"a\\": {\\"b\\": {\\"c\\": 5}}}
{\\\\\\"a\\\\\\": {\\\\\\"b\\\\\\": {\\\\\\"c\\\\\\": 5}}}
Difference:
- Expected
+ Received
Object {
\\"a\\": Object {
\\"b\\": Object {
- \\"c\\": 6,
+ \\"c\\": 5,
\\\\\\"a\\\\\\": Object {
\\\\\\"b\\\\\\": Object {
- \\\\\\"c\\\\\\": 6,
+ \\\\\\"c\\\\\\": 5,
},
},
}
Expand All @@ -292,12 +382,12 @@ exports[`works with node assert 1`] = `
assert.deepEqual with a message
assert.deepEqual(received, expected)
thrown: \\"assert.deepEqual(received, expected)
Expected value to deeply equal to:
{\\"a\\": {\\"b\\": {\\"c\\": 7}}}
{\\\\\\"a\\\\\\": {\\\\\\"b\\\\\\": {\\\\\\"c\\\\\\": 7}}}
Received:
{\\"a\\": {\\"b\\": {\\"c\\": 5}}}
{\\\\\\"a\\\\\\": {\\\\\\"b\\\\\\": {\\\\\\"c\\\\\\": 5}}}
Message:
this is a message
Expand All @@ -308,10 +398,10 @@ exports[`works with node assert 1`] = `
+ Received
Object {
\\"a\\": Object {
\\"b\\": Object {
- \\"c\\": 7,
+ \\"c\\": 5,
\\\\\\"a\\\\\\": Object {
\\\\\\"b\\\\\\": Object {
- \\\\\\"c\\\\\\": 7,
+ \\\\\\"c\\\\\\": 5,
},
},
}
Expand All @@ -327,12 +417,12 @@ exports[`works with node assert 1`] = `
assert.notDeepEqual
assert.notDeepEqual(received, expected)
thrown: \\"assert.notDeepEqual(received, expected)
Expected value not to deeply equal to:
{\\"a\\": 1}
{\\\\\\"a\\\\\\": 1}
Received:
{\\"a\\": 1}
{\\\\\\"a\\\\\\": 1}
Difference:
Expand All @@ -349,7 +439,7 @@ exports[`works with node assert 1`] = `
assert.strictEqual
assert.strictEqual(received, expected)
thrown: \\"assert.strictEqual(received, expected)
Expected value to be (operator: ===):
NaN
Expand All @@ -367,7 +457,7 @@ exports[`works with node assert 1`] = `
assert.notStrictEqual
assert.notStrictEqual(received, expected)
thrown: \\"assert.notStrictEqual(received, expected)
Expected value not to be (operator: !==):
1
Expand All @@ -392,21 +482,21 @@ exports[`works with node assert 1`] = `
assert.deepStrictEqual
assert.deepStrictEqual(received, expected)
thrown: \\"assert.deepStrictEqual(received, expected)
Expected value to deeply and strictly equal to:
{\\"a\\": 2}
{\\\\\\"a\\\\\\": 2}
Received:
{\\"a\\": 1}
{\\\\\\"a\\\\\\": 1}
Difference:
- Expected
+ Received
Object {
- \\"a\\": 2,
+ \\"a\\": 1,
- \\\\\\"a\\\\\\": 2,
+ \\\\\\"a\\\\\\": 1,
}
57 |
Expand All @@ -420,12 +510,12 @@ exports[`works with node assert 1`] = `
assert.notDeepStrictEqual
assert.notDeepStrictEqual(received, expected)
thrown: \\"assert.notDeepStrictEqual(received, expected)
Expected value not to deeply and strictly equal to:
{\\"a\\": 1}
{\\\\\\"a\\\\\\": 1}
Received:
{\\"a\\": 1}
{\\\\\\"a\\\\\\": 1}
Difference:
Expand All @@ -442,12 +532,13 @@ exports[`works with node assert 1`] = `
assert.ifError
Error
1 thrown
thrown: 1
at packages/jest-jasmine2/build/expectation_result_factory.js:42:47
assert.doesNotThrow
assert.doesNotThrow(function)
thrown: \\"assert.doesNotThrow(function)
Expected the function not to throw an error.
Instead, it threw:
Expand All @@ -467,7 +558,7 @@ exports[`works with node assert 1`] = `
assert.throws
assert.throws(function)
thrown: \\"assert.throws(function)
Expected the function to throw an error.
But it didn't throw anything.
Expand Down
10 changes: 6 additions & 4 deletions integration-tests/__tests__/failures.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ test('not throwing Error objects', () => {
expect(extractSummary(stderr).rest).toMatchSnapshot();
stderr = runJest(dir, ['assertion_count.test.js']).stderr;
expect(extractSummary(cleanupStackTrace(stderr)).rest).toMatchSnapshot();
stderr = runJest(dir, ['during_tests.test.js']).stderr;
expect(extractSummary(stderr).rest).toMatchSnapshot();
});

test('works with node assert', () => {
Expand All @@ -63,23 +65,23 @@ test('works with node assert', () => {
if (Number(process.versions.node.split('.')[0]) >= 9) {
expect(summary).toContain(`
assert.doesNotThrow(function)
Expected the function not to throw an error.
Instead, it threw:
[Error: err!]
Message:
Got unwanted exception.
err!
err!
69 |
69 |
70 | test('assert.doesNotThrow', () => {
> 71 | assert.doesNotThrow(() => {
72 | throw Error('err!');
73 | });
74 | });
at __tests__/node_assertion_error.test.js:71:10
`);

Expand Down
37 changes: 37 additions & 0 deletions integration-tests/failures/__tests__/during_tests.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
'use strict';

const deepObject = {
notAnError: [{hello: true, tooDeep: {notVisible: true}}],
};

test('Promise thrown during test', () => {
throw Promise.resolve(5);
});

test('Boolean thrown during test', () => {
// eslint-disable-next-line no-throw-literal
throw false;
});

test('undefined thrown during test', () => {
// eslint-disable-next-line no-throw-literal
throw undefined;
});

test('Object thrown during test', () => {
// eslint-disable-next-line no-throw-literal
throw deepObject;
});

test('Error during test', () => {
// eslint-disable-next-line no-undef
doesNotExist.alsoThisNot;
});

test('done(Error)', done => {
done(new Error('this is an error'));
});

test('done(non-error)', done => {
done(deepObject);
});

0 comments on commit 019041a

Please sign in to comment.