fix: error reporting (#41249)

pull/41262/head
Oliver Eyton-Williams 2021-02-25 15:39:28 +01:00 committed by GitHub
parent 24209a3629
commit f4e1fe11fc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 20 deletions

View File

@ -82,15 +82,13 @@ async function initTestFrame(e = { code: {} }) {
try {
// eslint-disable-next-line no-eval
const test = eval(testString);
resolve({ test });
resolve(test);
} catch (err) {
reject({ err });
reject(err);
}
})
);
const { test, err } = await testPromise;
if (err) throw err;
const test = await testPromise;
if (typeof test === 'function') {
await test(e.getUserInput);
}
@ -99,8 +97,11 @@ async function initTestFrame(e = { code: {} }) {
if (!(err instanceof chai.AssertionError)) {
console.error(err);
}
// return the error so that the curriculum tests are more informative
return { err };
// to provide useful debugging information when debugging the tests, we
// 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 {
const { pass, err } = await evaluator.evaluate(testString, 5000);
if (!pass) {
throw new AssertionError(err.message);
throw err;
}
} catch (err) {
// add more info to the error so the failing test can be identified.
text = 'Test text: ' + text;
const message = solutionFromNext
const newMessage = solutionFromNext
? 'Check next step for solution!\n' + 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
);
}
function reThrow(err, text) {
const newMessage = `${text}
${err.message}`;
if (err.name === 'AssertionError') {
throw new AssertionError(newMessage);
} else {
throw Error(newMessage);
}
}