fix: error reporting (#41249)
This commit is contained in:
committed by
GitHub
parent
24209a3629
commit
f4e1fe11fc
@ -82,15 +82,13 @@ async function initTestFrame(e = { code: {} }) {
|
|||||||
try {
|
try {
|
||||||
// eslint-disable-next-line no-eval
|
// eslint-disable-next-line no-eval
|
||||||
const test = eval(testString);
|
const test = eval(testString);
|
||||||
resolve({ test });
|
resolve(test);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
reject({ err });
|
reject(err);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
const { test, err } = await testPromise;
|
const test = await testPromise;
|
||||||
if (err) throw err;
|
|
||||||
|
|
||||||
if (typeof test === 'function') {
|
if (typeof test === 'function') {
|
||||||
await test(e.getUserInput);
|
await test(e.getUserInput);
|
||||||
}
|
}
|
||||||
@ -99,8 +97,11 @@ async function initTestFrame(e = { code: {} }) {
|
|||||||
if (!(err instanceof chai.AssertionError)) {
|
if (!(err instanceof chai.AssertionError)) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
}
|
}
|
||||||
// return the error so that the curriculum tests are more informative
|
// to provide useful debugging information when debugging the tests, we
|
||||||
return { err };
|
// have to extract the message and stack before returning
|
||||||
|
return {
|
||||||
|
err: { message: err.message, stack: err.stack }
|
||||||
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -528,14 +528,21 @@ async function createTestRunner(
|
|||||||
try {
|
try {
|
||||||
const { pass, err } = await evaluator.evaluate(testString, 5000);
|
const { pass, err } = await evaluator.evaluate(testString, 5000);
|
||||||
if (!pass) {
|
if (!pass) {
|
||||||
throw new AssertionError(err.message);
|
throw err;
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
// add more info to the error so the failing test can be identified.
|
||||||
text = 'Test text: ' + text;
|
text = 'Test text: ' + text;
|
||||||
const message = solutionFromNext
|
const newMessage = solutionFromNext
|
||||||
? 'Check next step for solution!\n' + text
|
? 'Check next step for solution!\n' + text
|
||||||
: text;
|
: text;
|
||||||
reThrow(err, message);
|
// if the stack is missing, the message should be included. Otherwise it
|
||||||
|
// is redundant.
|
||||||
|
err.message = err.stack
|
||||||
|
? newMessage
|
||||||
|
: `${newMessage}
|
||||||
|
${err.message}`;
|
||||||
|
throw err;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -578,13 +585,3 @@ async function initializeTestRunner(build, sources, code, loadEnzyme) {
|
|||||||
loadEnzyme
|
loadEnzyme
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function reThrow(err, text) {
|
|
||||||
const newMessage = `${text}
|
|
||||||
${err.message}`;
|
|
||||||
if (err.name === 'AssertionError') {
|
|
||||||
throw new AssertionError(newMessage);
|
|
||||||
} else {
|
|
||||||
throw Error(newMessage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Reference in New Issue
Block a user