Improve error message when reading invalid YAML file.

This commit is contained in:
Koen Kanters
2019-09-11 21:42:44 +02:00
parent 17f1a865b4
commit d53e1330f5
2 changed files with 44 additions and 1 deletions
+17 -1
View File
@@ -2,7 +2,23 @@ const yaml = require('js-yaml');
const fs = require('fs');
function read(file) {
return yaml.safeLoad(fs.readFileSync(file, 'utf8'));
try {
return yaml.safeLoad(fs.readFileSync(file, 'utf8'));
} catch (error) {
if (error.name === 'YAMLException') {
error.message =
`\n\n\n` +
`\t====================================================================\n` +
`\tYour YAML file '${file}' is invalid\n` +
`\tUse e.g. https://jsonformatter.org/yaml-validator to find and fix the issue.\n` +
`\t====================================================================\n` +
`\n\n` +
error.message;
}
throw error;
}
}
function readIfExists(file) {
+27
View File
@@ -394,4 +394,31 @@ describe('Settings', () => {
settings.banDevice('0x1234');
expect(settings.get().ban).toStrictEqual(['0x123', '0x1234']);
});
it('Should throw error when yaml file is invalid', () => {
fs.writeFileSync(configurationFile, `
good: 9
\t wrong
`)
let error;
try {
settings._reRead();
} catch (e) {
error = e;
}
expect(error.message).toContain(`Your YAML file '${configurationFile}' is invalid`);
});
it('Should throw error when yaml file does not exist', () => {
let error;
try {
settings._reRead();
} catch (e) {
error = e;
}
expect(error.message).toContain(`no such file or directory, open`);
});
});