diff --git a/helpers/ExerciceHelper.ts b/helpers/ExerciceHelper.ts index a51f1134709855301237f1e10610135345cc04a1..c6ff93b4ebaef25f03892ee78ac8ffbfc0d49dc9 100644 --- a/helpers/ExerciceHelper.ts +++ b/helpers/ExerciceHelper.ts @@ -6,7 +6,7 @@ import JSON5 from 'json5'; class ExerciceHelper { validateResultFile(resultsFilePath: string): { - results: ExerciceResultsFile, isValid: boolean, errors: ErrorObject<string, Record<string, any>, unknown>[] | null | undefined + results: ExerciceResultsFile | undefined, isValid: boolean, errors: Array<ErrorObject<string, Record<string, any>, unknown> | string> | null | undefined } { const ajv = new Ajv(); @@ -34,14 +34,22 @@ class ExerciceHelper { const validator = ajv.compile(schema); - const results = JSON5.parse(fs.readFileSync(resultsFilePath, 'utf8')); - const isValid = validator(results); - - return { - results: isValid ? results as ExerciceResultsFile : results as any, - isValid: isValid, - errors : validator.errors - }; + try { + const results = JSON5.parse(fs.readFileSync(resultsFilePath, 'utf8')); + const isValid = validator(results); + + return { + results: isValid ? results as ExerciceResultsFile : results as any, + isValid: isValid, + errors : validator.errors + }; + } catch ( error ) { + return { + results: undefined, + isValid: false, + errors : [ `JSON5 invalid : ${ JSON.stringify(error) }` ] + }; + } } }