diff --git a/lib/modules/manager/gradle/parser.spec.ts b/lib/modules/manager/gradle/parser.spec.ts index cb39d618c21c3a2a2a29e43fa80bc6ec0492e8a5..a0fab69af0b0643432a8dfa53b662e73a61bd134 100644 --- a/lib/modules/manager/gradle/parser.spec.ts +++ b/lib/modules/manager/gradle/parser.spec.ts @@ -737,21 +737,12 @@ describe('modules/manager/gradle/parser', () => { describe('heuristic dependency matching', () => { test.each` - input | output - ${'("foo", "bar", "1.2.3")'} | ${{ depName: 'foo:bar', currentValue: '1.2.3' }} - ${'("foo", "bar", "1.2.3", "4.5.6")'} | ${null} - ${'(["foo", "bar", "1.2.3"])'} | ${null} - ${'someMethod("foo", "bar", "1.2.3")'} | ${{ depName: 'foo:bar', currentValue: '1.2.3' }} - ${'createXmlValueRemover("defaults", "integer", "integer")'} | ${{ depName: 'defaults:integer', currentValue: 'integer', skipReason: 'ignored' }} - ${'events("passed", "skipped", "failed")'} | ${{ depName: 'passed:skipped', currentValue: 'failed', skipReason: 'ignored' }} - ${'args("foo", "bar", "baz")'} | ${{ depName: 'foo:bar', currentValue: 'baz', skipReason: 'ignored' }} - ${'arrayOf("foo", "bar", "baz")'} | ${{ depName: 'foo:bar', currentValue: 'baz', skipReason: 'ignored' }} - ${'listOf("foo", "bar", "baz")'} | ${{ depName: 'foo:bar', currentValue: 'baz', skipReason: 'ignored' }} - ${'mutableListOf("foo", "bar", "baz")'} | ${{ depName: 'foo:bar', currentValue: 'baz', skipReason: 'ignored' }} - ${'setOf("foo", "bar", "baz")'} | ${{ depName: 'foo:bar', currentValue: 'baz', skipReason: 'ignored' }} - ${'mutableSetOf("foo", "bar", "baz")'} | ${{ depName: 'foo:bar', currentValue: 'baz', skipReason: 'ignored' }} - ${'stages("foo", "bar", "baz")'} | ${{ depName: 'foo:bar', currentValue: 'baz', skipReason: 'ignored' }} - ${'mapScalar("foo", "bar", "baz")'} | ${{ depName: 'foo:bar', currentValue: 'baz', skipReason: 'ignored' }} + input | output + ${'("foo", "bar", "1.2.3")'} | ${{ depName: 'foo:bar', currentValue: '1.2.3' }} + ${'("foo", "bar", "1.2.3", "4.5.6")'} | ${null} + ${'(["foo", "bar", "1.2.3"])'} | ${null} + ${'someMethod("foo", "bar", "1.2.3")'} | ${{ depName: 'foo:bar', currentValue: '1.2.3' }} + ${'listOf("foo", "bar", "baz")'} | ${null} `('$input', ({ input, output }) => { const { deps } = parseGradle(input); expect(deps).toMatchObject([output].filter(is.truthy)); diff --git a/lib/modules/manager/gradle/parser/common.ts b/lib/modules/manager/gradle/parser/common.ts index 43a1032311811d49a1a93cb131487b70ceda27a8..6f5c17790d20c09260054dfdfbecd5ae93ac9066 100644 --- a/lib/modules/manager/gradle/parser/common.ts +++ b/lib/modules/manager/gradle/parser/common.ts @@ -35,19 +35,6 @@ export const GRADLE_PLUGINS = { spotbugs: ['toolVersion', 'com.github.spotbugs:spotbugs'], }; -export const ANNOYING_METHODS: ReadonlySet<string> = new Set([ - 'createXmlValueRemover', - 'events', - 'args', - 'arrayOf', - 'listOf', - 'mutableListOf', - 'setOf', - 'mutableSetOf', - 'stages', // https://github.com/ajoberstar/reckon, - 'mapScalar', // https://github.com/apollographql/apollo-kotlin -]); - export function storeVarToken(ctx: Ctx, node: lexer.Token): Ctx { ctx.varTokens.push(node); return ctx; diff --git a/lib/modules/manager/gradle/parser/handlers.ts b/lib/modules/manager/gradle/parser/handlers.ts index 4ffbb70a0e319ed01fd273926f0092e693257313..273ffeabbe09bc080e781a4866eca1713b8d33af 100644 --- a/lib/modules/manager/gradle/parser/handlers.ts +++ b/lib/modules/manager/gradle/parser/handlers.ts @@ -8,7 +8,6 @@ import type { parseGradle as parseGradleCallback } from '../parser'; import type { Ctx, GradleManagerData } from '../types'; import { parseDependencyString } from '../utils'; import { - ANNOYING_METHODS, GRADLE_PLUGINS, REGISTRY_URLS, findVariable, @@ -199,10 +198,6 @@ export function handleLongFormDep(ctx: Ctx): Ctx { }; } - if (methodName?.[0] && ANNOYING_METHODS.has(methodName[0].value)) { - dep.skipReason = 'ignored'; - } - ctx.deps.push(dep); return ctx; diff --git a/lib/modules/manager/gradle/utils.spec.ts b/lib/modules/manager/gradle/utils.spec.ts index 0a3ee6c05ef0d3c5976ffb8d9ae8b14e385de964..ac8bfb824d15f8ca3e37f9773b7ae44c4a402ae1 100644 --- a/lib/modules/manager/gradle/utils.spec.ts +++ b/lib/modules/manager/gradle/utils.spec.ts @@ -13,13 +13,11 @@ describe('modules/manager/gradle/utils', () => { it('versionLikeSubstring', () => { [ '1.2.3', - 'foobar', '[1.0,2.0]', '(,2.0[', '2.1.1.RELEASE', '1.0.+', '2022-05-10_55', - 'latest', ].forEach((input) => { expect(versionLikeSubstring(input)).toEqual(input); expect(versionLikeSubstring(`${input}'`)).toEqual(input); @@ -31,12 +29,14 @@ describe('modules/manager/gradle/utils', () => { expect(versionLikeSubstring('')).toBeNull(); expect(versionLikeSubstring(undefined)).toBeNull(); expect(versionLikeSubstring(null)).toBeNull(); + expect(versionLikeSubstring('foobar')).toBeNull(); + expect(versionLikeSubstring('latest')).toBeNull(); }); it('isDependencyString', () => { expect(isDependencyString('foo:bar:1.2.3')).toBeTrue(); expect(isDependencyString('foo.foo:bar.bar:1.2.3')).toBeTrue(); - expect(isDependencyString('foo:bar:baz:qux')).toBeTrue(); + expect(isDependencyString('foo:bar:baz:qux')).toBeFalse(); expect(isDependencyString('foo.bar:baz:1.2.3')).toBeTrue(); expect(isDependencyString('foo.bar:baz:1.2.3:linux-cpu-x86_64')).toBeTrue(); expect(isDependencyString('foo.bar:baz:1.2.+')).toBeTrue(); @@ -57,10 +57,6 @@ describe('modules/manager/gradle/utils', () => { depName: 'foo.foo:bar.bar', currentValue: '1.2.3', }); - expect(parseDependencyString('foo:bar:baz:qux')).toMatchObject({ - depName: 'foo:bar', - currentValue: 'baz', - }); expect(parseDependencyString('foo.bar:baz:1.2.3')).toMatchObject({ depName: 'foo.bar:baz', currentValue: '1.2.3', @@ -69,6 +65,7 @@ describe('modules/manager/gradle/utils', () => { depName: 'foo:bar', currentValue: '1.2.+', }); + expect(parseDependencyString('foo:bar:baz:qux')).toBeNull(); expect(parseDependencyString('foo:bar:baz:qux:quux')).toBeNull(); expect(parseDependencyString("foo:bar:1.2.3'")).toBeNull(); expect(parseDependencyString('foo:bar:1.2.3"')).toBeNull(); diff --git a/lib/modules/manager/gradle/utils.ts b/lib/modules/manager/gradle/utils.ts index c2c898b3806455524592db6c91762900dfdf1c61..bed8720663dc5f34e7d5d8a7c475e0714be2fba1 100644 --- a/lib/modules/manager/gradle/utils.ts +++ b/lib/modules/manager/gradle/utils.ts @@ -18,8 +18,17 @@ const versionLikeRegex = regEx('^(?<version>[-_.\\[\\](),a-zA-Z0-9+]+)'); export function versionLikeSubstring( input: string | null | undefined ): string | null { - const match = input ? versionLikeRegex.exec(input) : null; - return match?.groups?.version ?? null; + if (!input) { + return null; + } + + const match = versionLikeRegex.exec(input); + const version = match?.groups?.version; + if (!version || !regEx(/\d/).test(version)) { + return null; + } + + return version; } export function isDependencyString(input: string): boolean {