From 291defc7e1ab2c472be26b945784ca065061795d Mon Sep 17 00:00:00 2001 From: Johannes Feichtner <343448+Churro@users.noreply.github.com> Date: Wed, 13 Mar 2024 06:04:21 +0100 Subject: [PATCH] feat(manager/gradle): add support for new header used by gradle-consistent-versions plugin (#27895) --- .../extract/consistent-versions-plugin.spec.ts | 13 ++++++++++++- .../gradle/extract/consistent-versions-plugin.ts | 10 +++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/lib/modules/manager/gradle/extract/consistent-versions-plugin.spec.ts b/lib/modules/manager/gradle/extract/consistent-versions-plugin.spec.ts index c5e89a4dd9f50a..dcf567152bf501 100644 --- a/lib/modules/manager/gradle/extract/consistent-versions-plugin.spec.ts +++ b/lib/modules/manager/gradle/extract/consistent-versions-plugin.spec.ts @@ -20,6 +20,18 @@ describe('modules/manager/gradle/extract/consistent-versions-plugin', () => { expect(usesGcv('othersub/versions.props', fsMock)).toBeFalse(); }); + it('detects lock file header introduced with gradle-consistent-versions version 2.20.0', () => { + const fsMock = { + 'build.gradle.kts': `(this file contains) 'com.palantir.consistent-versions'`, + 'versions.props': `org.apache.lucene:* = 1.2.3`, + 'versions.lock': stripIndent` + # Run ./gradlew writeVersionsLock to regenerate this file + org.apache.lucene:lucene-core:1.2.3`, + }; + + expect(usesGcv('versions.props', fsMock)).toBeTrue(); + }); + it('gradle-consistent-versions plugin correct position for CRLF and LF', () => { const crlfProps = parsePropsFile(`a.b:c.d=1\r\na.b:c.e=2`); expect(crlfProps).toBeArrayOfSize(2); @@ -47,7 +59,6 @@ describe('modules/manager/gradle/extract/consistent-versions-plugin', () => { expect(parsedProps[0]).toMatchObject({ size: 1 }); // no 7 is valid exact dep expect(parsedProps[1]).toMatchObject({ size: 1 }); // no 8 is valid glob dep - // lockfile const parsedLock = parseLockFile(stripIndent` # comment:foo.bar:1 (10 constraints: 95be0c15) 123.foo:bar:2 (10 constraints: 95be0c15) diff --git a/lib/modules/manager/gradle/extract/consistent-versions-plugin.ts b/lib/modules/manager/gradle/extract/consistent-versions-plugin.ts index 8a1d602a2d1ff1..032fa1c086c8fa 100644 --- a/lib/modules/manager/gradle/extract/consistent-versions-plugin.ts +++ b/lib/modules/manager/gradle/extract/consistent-versions-plugin.ts @@ -8,8 +8,9 @@ import { isDependencyString, versionLikeSubstring } from '../utils'; export const VERSIONS_PROPS = 'versions.props'; export const VERSIONS_LOCK = 'versions.lock'; -const LOCKFILE_HEADER_TEXT = - '# Run ./gradlew --write-locks to regenerate this file'; +export const LOCKFIlE_HEADER_TEXT = regEx( + /^# Run \.\/gradlew (?:--write-locks|writeVersionsLock) to regenerate this file/, +); /** * Determines if Palantir gradle-consistent-versions is in use, https://github.com/palantir/gradle-consistent-versions. @@ -26,9 +27,8 @@ export function usesGcv( versionsPropsFilename, VERSIONS_LOCK, ); - return ( - fileContents[versionsLockFile]?.startsWith(LOCKFILE_HEADER_TEXT) ?? false - ); + + return !!fileContents[versionsLockFile]?.match(LOCKFIlE_HEADER_TEXT); } /**