fix: error reporting (#41249)

This commit is contained in:
Oliver Eyton-Williams
2021-02-25 15:39:28 +01:00
committed by GitHub
parent 24209a3629
commit f4e1fe11fc
2 changed files with 18 additions and 20 deletions

View File

@ -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 }
};
} }
}; };
} }

View File

@ -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);
}
}