fix: error reporting (#41249)
parent
24209a3629
commit
f4e1fe11fc
|
@ -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 }
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue