Skip to content

Commit

Permalink
feat(config): warn if globalOnly option found in repo config (renov…
Browse files Browse the repository at this point in the history
…atebot#24561)

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
  • Loading branch information
2 people authored and zT-1337 committed Jan 24, 2024
1 parent e99cef6 commit 3736000
Show file tree
Hide file tree
Showing 7 changed files with 188 additions and 54 deletions.
17 changes: 12 additions & 5 deletions lib/config-validator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import {
let returnVal = 0;

async function validate(
isGlobalConfig: boolean,
desc: string,
config: RenovateConfig,
strict: boolean,
Expand All @@ -36,7 +37,7 @@ async function validate(
}
}
const massagedConfig = massageConfig(migratedConfig);
const res = await validateConfig(massagedConfig, isPreset);
const res = await validateConfig(isGlobalConfig, massagedConfig, isPreset);
if (res.errors.length) {
logger.error(
{ file: desc, errors: res.errors },
Expand Down Expand Up @@ -75,7 +76,7 @@ type PackageJson = {
const parsedContent = await getParsedContent(file);
try {
logger.info(`Validating ${file}`);
await validate(file, parsedContent, strict);
await validate(true, file, parsedContent, strict);
} catch (err) {
logger.warn({ file, err }, 'File is not valid Renovate config');
returnVal = 1;
Expand All @@ -96,7 +97,7 @@ type PackageJson = {
const parsedContent = await getParsedContent(file);
try {
logger.info(`Validating ${file}`);
await validate(file, parsedContent, strict);
await validate(false, file, parsedContent, strict);
} catch (err) {
logger.warn({ file, err }, 'File is not valid Renovate config');
returnVal = 1;
Expand All @@ -112,12 +113,18 @@ type PackageJson = {
) as PackageJson;
if (pkgJson.renovate) {
logger.info(`Validating package.json > renovate`);
await validate('package.json > renovate', pkgJson.renovate, strict);
await validate(
false,
'package.json > renovate',
pkgJson.renovate,
strict,
);
}
if (pkgJson['renovate-config']) {
logger.info(`Validating package.json > renovate-config`);
for (const presetConfig of Object.values(pkgJson['renovate-config'])) {
await validate(
false,
'package.json > renovate-config',
presetConfig,
strict,
Expand All @@ -134,7 +141,7 @@ type PackageJson = {
const file = process.env.RENOVATE_CONFIG_FILE ?? 'config.js';
logger.info(`Validating ${file}`);
try {
await validate(file, fileConfig, strict);
await validate(true, file, fileConfig, strict);
} catch (err) {
logger.error({ file, err }, 'File is not valid Renovate config');
returnVal = 1;
Expand Down
8 changes: 4 additions & 4 deletions lib/config/__snapshots__/validation.spec.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ exports[`config/validation validateConfig(config) catches invalid templates 1`]

exports[`config/validation validateConfig(config) errors for all types 1`] = `
[
{
"message": "Configuration option \`azureWorkItemId\` should be an integer. Found: false (boolean)",
"topic": "Configuration Error",
},
{
"message": "Configuration option \`enabled\` should be boolean. Found: 1 (number)",
"topic": "Configuration Error",
Expand All @@ -57,10 +61,6 @@ exports[`config/validation validateConfig(config) errors for all types 1`] = `
"message": "Configuration option \`packageRules[3].matchPackagePatterns\` should be a list (Array)",
"topic": "Configuration Error",
},
{
"message": "Configuration option \`prCommitsPerRunLimit\` should be an integer. Found: false (boolean)",
"topic": "Configuration Error",
},
{
"message": "Configuration option \`semanticCommitType\` should be a string",
"topic": "Configuration Error",
Expand Down
2 changes: 1 addition & 1 deletion lib/config/migrate-validate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export async function migrateAndValidate(
}: {
warnings: ValidationMessage[];
errors: ValidationMessage[];
} = await configValidation.validateConfig(massagedConfig);
} = await configValidation.validateConfig(false, massagedConfig);
// istanbul ignore if
if (is.nonEmptyArray(warnings)) {
logger.warn({ warnings }, 'Found renovate config warnings');
Expand Down
2 changes: 1 addition & 1 deletion lib/config/presets/internal/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ describe('config/presets/internal/index', () => {
const config = await resolveConfigPresets(
massageConfig(presetConfig),
);
const res = await validateConfig(config, true);
const res = await validateConfig(false, config, true);
expect(res.errors).toHaveLength(0);
expect(res.warnings).toHaveLength(0);
} catch (err) {
Expand Down

0 comments on commit 3736000

Please sign in to comment.