0
0
Fork 0
mirror of https://github.com/renovatebot/renovate.git synced 2025-02-28 10:34:06 +00:00
renovatebot_renovate/lib/config/parse.spec.ts
2025-02-26 12:40:30 +00:00

59 lines
1.8 KiB
TypeScript

import jsonValidator from 'json-dup-key-validator';
import { parseFileConfig } from './parse';
vi.mock('json-dup-key-validator', { spy: true });
describe('config/parse', () => {
describe('json', () => {
it('parses', () => {
expect(parseFileConfig('config.json', '{}')).toEqual({
success: true,
parsedContents: {},
});
});
it('returns error', () => {
// syntax validation
expect(parseFileConfig('config.json', '{')).toEqual({
success: false,
validationError: 'Invalid JSON (parsing failed)',
validationMessage: 'Syntax error: unclosed statement near {',
});
// duplicate keys
vi.mocked(jsonValidator).validate.mockReturnValueOnce(undefined);
expect(parseFileConfig('config.json', '{')).toEqual({
success: false,
validationError: 'Duplicate keys in JSON',
validationMessage: '"Syntax error: unclosed statement near {"',
});
// JSON.parse
vi.mocked(jsonValidator).validate.mockReturnValue(undefined);
expect(parseFileConfig('config.json', '{')).toEqual({
success: false,
validationError: 'Invalid JSON (parsing failed)',
validationMessage:
'JSON.parse error: `JSON5: invalid end of input at 1:2`',
});
});
});
describe('json5', () => {
it('parses', () => {
expect(parseFileConfig('config.json5', '{}')).toEqual({
success: true,
parsedContents: {},
});
});
it('returns error', () => {
expect(parseFileConfig('config.json5', '{')).toEqual({
success: false,
validationError: 'Invalid JSON5 (parsing failed)',
validationMessage:
'JSON5.parse error: `JSON5: invalid end of input at 1:2`',
});
});
});
});