js: test runner for inline mode now also output the full tested code

This commit is contained in:
Clement Denis 2021-04-29 17:39:42 +01:00
parent 25f4cf4e6f
commit 3a7568aa9f
1 changed files with 19 additions and 7 deletions

View File

@ -111,15 +111,27 @@ const runInlineTests = async ({ json, name }) => {
const solution = await loadAndSanitizeSolution(name)
for (const { description, code } of JSON.parse(json)) {
logs.length = 0
const [provided, tests] = code.includes('// Your code')
? code.split('// Your code')
: ['', code]
const fullCode = `
${provided ? '// Provided setup' : ''}
${provided.trim()}
// Your code
${solution.code.trim()}
// The tests
${tests.trim()}`.trim()
try {
eval(
code.includes('// Your code')
? code.replace('// Your code', solution.code)
: `${solution.code}\n\n${code}`,
)
console.info(`${description}:`, '\u001b[32mPASS\u001b[0m')
eval(fullCode)
console.info(`${description}:`, 'PASS')
} catch (err) {
console.info(`${description}:`, '\u001b[31mFAIL\u001b[0m')
console.info(`${description}:`, 'FAIL')
console.info(`\n======= Code ======= \n${fullCode}`)
console.info('\n======= Error ======')
die(' ->', err.message)
}
}