Skip to content

Commit

Permalink
Improved checking for import, moved removeComments
Browse files Browse the repository at this point in the history
Improved checking of imports and moved removeComments to separate function, clearly explaining that it's limited to javascript type of comments.
  • Loading branch information
sagarishere authored and HarryVasanth committed Dec 13, 2024
1 parent 19a872d commit c698e50
Showing 1 changed file with 19 additions and 9 deletions.
28 changes: 19 additions & 9 deletions js/tests/test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -149,17 +149,27 @@ ${tests.trim()};`.trim()
}

const loadAndSanitizeSolution = async () => {
const path = `${solutionPath}/${name}.js`
const rawCode = await read(path, "student solution")

// this is a very crude and basic removal of comments
// since checking code is only use to prevent cheating
// it's not that important if it doesn't work 100% of the time.
const code = rawCode.replace(/\/\*[\s\S]*?\*\/|\/\/.*/g, "").trim()
if (code.includes("import")) fatal("import keyword not allowed")
return { code, rawCode, path }
try {
const path = `${solutionPath}/${name}.js`
const rawCode = await read(path, "student solution")
const sanitizedCode = removeComments(rawCode)

if (sanitizedCode.includes("import ")) { // space is important as it prevents "imported" or "importance" or other words containing "import"
throw new Error("The use of the 'import' keyword is not allowed.")
}
return { code: sanitizedCode, rawCode, path }
} catch (error) {
console.error(error)
}
}

const removeComments = (code) => {
// removes JS single line and multi-line comments only. Not for bash files etc.
// for use with multiple file-types, I suggest writing a removeComments function with language-type as input and then handling accordingly
return code.replace(/\/\*[\s\S]*?\*\/|\/\/.*/g, "").trim()
}


const runTests = async ({ url, path, code }) => {
const { setup, tests } = await import(url).catch(err =>
fatal(`Unable to execute ${name}, error:\n${stackFmt(err, url)}`),
Expand Down

0 comments on commit c698e50

Please sign in to comment.