mirror of
https://github.com/renovatebot/renovate.git
synced 2026-11-01 18:19:51 +00:00
b2d3b64c48
* refactor(lint): enforce err key for errors in logger metadata * refactor(lint): flag error message and stack strings in logger-err-key
123 lines
4.1 KiB
TypeScript
123 lines
4.1 KiB
TypeScript
import { RuleTester } from 'oxlint/plugins-dev';
|
|
import rule from './logger-err-key.ts';
|
|
|
|
RuleTester.describe = describe;
|
|
RuleTester.it = it;
|
|
|
|
const ruleTester = new RuleTester({
|
|
languageOptions: { parserOptions: { lang: 'ts' } },
|
|
});
|
|
|
|
ruleTester.run('logger-err-key', rule, {
|
|
valid: [
|
|
`logger.error({ err }, 'Failed');`,
|
|
`logger.debug({ err: res.error }, 'Failed');`,
|
|
`logger.once.warn({ err }, 'Failed');`,
|
|
// non-error-ish value under the error key is fine
|
|
`logger.error({ error: 'string' }, 'Failed');`,
|
|
`logger.error({ error: res.message }, 'Failed');`,
|
|
`logger.error({ error: err.code }, 'Failed');`,
|
|
`logger.error({ error: err['message'] }, 'Failed');`,
|
|
// other keys holding an error are not flagged
|
|
`logger.warn({ configError: error }, 'Failed');`,
|
|
// computed keys and spreads are ignored
|
|
`logger.error({ [key]: err }, 'Failed');`,
|
|
`logger.error({ ...meta }, 'Failed');`,
|
|
// no metadata object
|
|
`logger.error('Failed');`,
|
|
`logger.error();`,
|
|
// not a logger call
|
|
`other.error({ error: err }, 'Failed');`,
|
|
`logger['error']({ error: err }, 'Failed');`,
|
|
`logger.child.error({ error: err }, 'Failed');`,
|
|
],
|
|
invalid: [
|
|
{
|
|
code: `logger.error({ error: err }, 'Failed');`,
|
|
errors: [{ messageId: 'errKey' }],
|
|
output: `logger.error({ err }, 'Failed');`,
|
|
},
|
|
{
|
|
code: `logger.debug({ error }, 'Failed');`,
|
|
errors: [{ messageId: 'errKey' }],
|
|
output: `logger.debug({ err: error }, 'Failed');`,
|
|
},
|
|
{
|
|
code: `logger.info({ error: err }, 'Failed');`,
|
|
errors: [{ messageId: 'errKey' }],
|
|
output: `logger.info({ err }, 'Failed');`,
|
|
},
|
|
{
|
|
code: `logger.trace({ error: err }, 'Failed');`,
|
|
errors: [{ messageId: 'errKey' }],
|
|
output: `logger.trace({ err }, 'Failed');`,
|
|
},
|
|
{
|
|
code: `logger.once.warn({ error: err }, 'Failed');`,
|
|
errors: [{ messageId: 'errKey' }],
|
|
output: `logger.once.warn({ err }, 'Failed');`,
|
|
},
|
|
{
|
|
code: `logger.error({ exception: err }, 'Failed');`,
|
|
errors: [{ messageId: 'errKey' }],
|
|
output: `logger.error({ err }, 'Failed');`,
|
|
},
|
|
{
|
|
code: `logger.error({ error: new SomeError('x') }, 'Failed');`,
|
|
errors: [{ messageId: 'errKey' }],
|
|
output: `logger.error({ err: new SomeError('x') }, 'Failed');`,
|
|
},
|
|
{
|
|
code: `logger.error({ error: res.parseError }, 'Failed');`,
|
|
errors: [{ messageId: 'errKey' }],
|
|
output: `logger.error({ err: res.parseError }, 'Failed');`,
|
|
},
|
|
{
|
|
code: `logger.error({ error: err as Error }, 'Failed');`,
|
|
errors: [{ messageId: 'errKey' }],
|
|
output: `logger.error({ err: err as Error }, 'Failed');`,
|
|
},
|
|
{
|
|
code: `logger.error({ 'error': err }, 'Failed');`,
|
|
errors: [{ messageId: 'errKey' }],
|
|
output: `logger.error({ err }, 'Failed');`,
|
|
},
|
|
{
|
|
code: `logger.error({ url, error: err }, 'Failed');`,
|
|
errors: [{ messageId: 'errKey' }],
|
|
output: `logger.error({ url, err }, 'Failed');`,
|
|
},
|
|
// error message or stack strings under a non-canonical key
|
|
{
|
|
code: `logger.warn({ error: err.message }, 'Failed');`,
|
|
errors: [{ messageId: 'errString' }],
|
|
output: `logger.warn({ err }, 'Failed');`,
|
|
},
|
|
{
|
|
code: `logger.fatal({ error: err.stack }, 'Failed');`,
|
|
errors: [{ messageId: 'errString' }],
|
|
output: `logger.fatal({ err }, 'Failed');`,
|
|
},
|
|
{
|
|
code: `logger.warn({ url, error: error.message }, 'Failed');`,
|
|
errors: [{ messageId: 'errString' }],
|
|
output: `logger.warn({ url, err: error }, 'Failed');`,
|
|
},
|
|
{
|
|
code: `logger.debug({ error: res.parseError.message }, 'Failed');`,
|
|
errors: [{ messageId: 'errString' }],
|
|
output: `logger.debug({ err: res.parseError }, 'Failed');`,
|
|
},
|
|
{
|
|
code: `logger.debug({ error: (err as Error).message }, 'Failed');`,
|
|
errors: [{ messageId: 'errString' }],
|
|
output: `logger.debug({ err: err as Error }, 'Failed');`,
|
|
},
|
|
{
|
|
code: `logger.debug({ exception: err.stack as string }, 'Failed');`,
|
|
errors: [{ messageId: 'errString' }],
|
|
output: `logger.debug({ err }, 'Failed');`,
|
|
},
|
|
],
|
|
});
|