mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
test_runner: add extra fields in AssertionError YAML
Many TAP reporters offer special-case handling of YAML objects containing `expected`, `actual`, and `operator` fields, as produced by `AssertionError` and similar userland Error classes. PR-URL: https://github.com/nodejs/node/pull/44952 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
0a7ba84335
commit
e260b373f1
@ -179,17 +179,30 @@ function jsToYaml(indent, name, value) {
|
||||
code,
|
||||
failureType,
|
||||
message,
|
||||
expected,
|
||||
actual,
|
||||
operator,
|
||||
stack,
|
||||
} = value;
|
||||
let errMsg = message ?? '<unknown error>';
|
||||
let errStack = stack;
|
||||
let errCode = code;
|
||||
let errExpected = expected;
|
||||
let errActual = actual;
|
||||
let errOperator = operator;
|
||||
let errIsAssertion = isAssertionLike(value);
|
||||
|
||||
// If the ERR_TEST_FAILURE came from an error provided by user code,
|
||||
// then try to unwrap the original error message and stack.
|
||||
if (code === 'ERR_TEST_FAILURE' && kUnwrapErrors.has(failureType)) {
|
||||
errStack = cause?.stack ?? errStack;
|
||||
errCode = cause?.code ?? errCode;
|
||||
if (isAssertionLike(cause)) {
|
||||
errExpected = cause.expected;
|
||||
errActual = cause.actual;
|
||||
errOperator = cause.operator ?? errOperator;
|
||||
errIsAssertion = true;
|
||||
}
|
||||
if (failureType === kTestCodeFailure) {
|
||||
errMsg = cause?.message ?? errMsg;
|
||||
}
|
||||
@ -201,6 +214,14 @@ function jsToYaml(indent, name, value) {
|
||||
result += jsToYaml(indent, 'code', errCode);
|
||||
}
|
||||
|
||||
if (errIsAssertion) {
|
||||
result += jsToYaml(indent, 'expected', errExpected);
|
||||
result += jsToYaml(indent, 'actual', errActual);
|
||||
if (errOperator) {
|
||||
result += jsToYaml(indent, 'operator', errOperator);
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof errStack === 'string') {
|
||||
const frames = [];
|
||||
|
||||
@ -229,4 +250,8 @@ function jsToYaml(indent, name, value) {
|
||||
return result;
|
||||
}
|
||||
|
||||
function isAssertionLike(value) {
|
||||
return value && typeof value === 'object' && 'expected' in value && 'actual' in value;
|
||||
}
|
||||
|
||||
module.exports = { TapStream };
|
||||
|
@ -123,6 +123,9 @@ not ok 13 - async assertion fail
|
||||
true !== false
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
expected: false
|
||||
actual: true
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
*
|
||||
*
|
||||
|
@ -133,6 +133,9 @@ not ok 13 - async assertion fail
|
||||
true !== false
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
expected: false
|
||||
actual: true
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
*
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user