diff --git a/lib/modules/manager/gradle/extract/catalog.spec.ts b/lib/modules/manager/gradle/extract/catalog.spec.ts index 6f470a04b77c07f471fe201208effc2de4f86ebf..41463cf24c76dbf3f1ec1dd461dac267702ebcb9 100644 --- a/lib/modules/manager/gradle/extract/catalog.spec.ts +++ b/lib/modules/manager/gradle/extract/catalog.spec.ts @@ -191,4 +191,44 @@ describe('modules/manager/gradle/extract/catalog', () => { }, ]); }); + + it('supports templated toml', () => { + const input = codeBlock` + [versions] + # Releases: http://someWebsite.com/junit/1.4.9 + mocha-junit-reporter = "2.0.2" + {%- if cookiecutter.service_uses_junit %} + # JUnit 1.4.9 is awesome! + junit = "1.4.9" + {%- endif %} + + [libraries] + {%- if cookiecutter.service_uses_junit %} + junit-legacy = { module = "junit:junit", version.ref = "junit" } + {%- endif %} + mocha-junit = { module = "mocha-junit:mocha-junit", version.ref = "mocha.junit.reporter" } + `; + const res = parseCatalog('gradle/libs.versions.toml', input); + + expect(res).toStrictEqual([ + { + depName: 'junit:junit', + sharedVariableName: 'junit', + currentValue: '1.4.9', + managerData: { + fileReplacePosition: 166, + packageFile: 'gradle/libs.versions.toml', + }, + }, + { + depName: 'mocha-junit:mocha-junit', + sharedVariableName: 'mocha.junit.reporter', + currentValue: '2.0.2', + managerData: { + fileReplacePosition: 82, + packageFile: 'gradle/libs.versions.toml', + }, + }, + ]); + }); }); diff --git a/lib/modules/manager/gradle/extract/catalog.ts b/lib/modules/manager/gradle/extract/catalog.ts index 36a21a5b80639e0cdfb7c8746594c62bdd4fa3d8..b4b19174222f6a4ab4a5d123d11c67f90ae10fc1 100644 --- a/lib/modules/manager/gradle/extract/catalog.ts +++ b/lib/modules/manager/gradle/extract/catalog.ts @@ -3,7 +3,7 @@ import deepmerge from 'deepmerge'; import type { SkipReason } from '../../../../types'; import { hasKey } from '../../../../util/object'; import { escapeRegExp, regEx } from '../../../../util/regex'; -import { parse as parseToml } from '../../../../util/toml'; +import { massage, parse as parseToml } from '../../../../util/toml'; import type { PackageDependency } from '../../types'; import type { GradleCatalog, @@ -246,7 +246,7 @@ export function parseCatalog( packageFile: string, content: string, ): PackageDependency<GradleManagerData>[] { - const tomlContent = parseToml(content) as GradleCatalog; + const tomlContent = parseToml(massage(content)) as GradleCatalog; const versions = tomlContent.versions ?? {}; const libs = tomlContent.libraries ?? {}; const libStartIndex = content.indexOf('libraries');