From f6581028bc3bcb97b2074f39705d956401280267 Mon Sep 17 00:00:00 2001 From: tofferman Date: Thu, 25 Apr 2024 22:55:48 +0200 Subject: [PATCH 1/2] fix(maven-wrapper): wrapperVersion instead of wrapperUrl which is the standard after 3.3.0 --- .../manager/maven-wrapper/extract.spec.ts | 73 +++++++++++++++++++ lib/modules/manager/maven-wrapper/extract.ts | 9 ++- 2 files changed, 81 insertions(+), 1 deletion(-) diff --git a/lib/modules/manager/maven-wrapper/extract.spec.ts b/lib/modules/manager/maven-wrapper/extract.spec.ts index c83008c4694465..9039d388f64eb1 100644 --- a/lib/modules/manager/maven-wrapper/extract.spec.ts +++ b/lib/modules/manager/maven-wrapper/extract.spec.ts @@ -2,11 +2,19 @@ import { extractPackageFile } from '.'; const onlyWrapperProperties = 'wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar'; + +const onlyWrapperVersionProperties = + 'wrapperVersion=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar'; + const onlyMavenProperties = 'distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip'; const wrapperAndMavenProperties = `distributionUrl=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip\nwrapperUrl=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar`; +const wrapperVersionAndMavenProperties = `distributionUrl=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip\nwrapperVersion=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar`; + +const wrapperVersionAndMavenPropertiesAndWrapperUrl = `distributionUrl=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip\nwrapperVersion=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar\nwrapperUrl=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar`; + describe('modules/manager/maven-wrapper/extract', () => { describe('extractPackageFile()', () => { it('extracts version for property file with distribution type "bin" in distributionUrl', () => { @@ -64,6 +72,71 @@ describe('modules/manager/maven-wrapper/extract', () => { ]); }); + it('extracts version for property file with maven wrapper version and maven version', () => { + const res = extractPackageFile(wrapperVersionAndMavenProperties); + expect(res?.deps).toEqual([ + { + currentValue: '3.8.4', + replaceString: + 'https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip', + datasource: 'maven', + depName: 'maven', + packageName: 'org.apache.maven:apache-maven', + versioning: 'maven', + }, + { + currentValue: '3.3.0', + replaceString: + 'https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar', + datasource: 'maven', + depName: 'maven-wrapper', + packageName: 'org.apache.maven.wrapper:maven-wrapper', + versioning: 'maven', + }, + ]); + }); + + it('extracts version for property file with maven wrapper version first if both wrapperUrl and version are present', () => { + const res = extractPackageFile( + wrapperVersionAndMavenPropertiesAndWrapperUrl, + ); + expect(res?.deps).toEqual([ + { + currentValue: '3.8.4', + replaceString: + 'https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip', + datasource: 'maven', + depName: 'maven', + packageName: 'org.apache.maven:apache-maven', + versioning: 'maven', + }, + { + currentValue: '3.3.0', + replaceString: + 'https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar', + datasource: 'maven', + depName: 'maven-wrapper', + packageName: 'org.apache.maven.wrapper:maven-wrapper', + versioning: 'maven', + }, + ]); + }); + + it('extracts version for property file with maven wrapper version', () => { + const res = extractPackageFile(onlyWrapperVersionProperties); + expect(res?.deps).toEqual([ + { + currentValue: '3.3.0', + replaceString: + 'https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar', + datasource: 'maven', + depName: 'maven-wrapper', + packageName: 'org.apache.maven.wrapper:maven-wrapper', + versioning: 'maven', + }, + ]); + }); + it('it should return null when there is no string matching the maven properties regex', () => { const res = extractPackageFile('nowrapper'); expect(res).toBeNull(); diff --git a/lib/modules/manager/maven-wrapper/extract.ts b/lib/modules/manager/maven-wrapper/extract.ts index 27c7199b1d97e1..3c8efd4a1086e0 100644 --- a/lib/modules/manager/maven-wrapper/extract.ts +++ b/lib/modules/manager/maven-wrapper/extract.ts @@ -15,10 +15,17 @@ const WRAPPER_URL_REGEX = regEx( '^(?:wrapperUrl\\s*=\\s*)(?\\S*-(?\\d+\\.\\d+(?:\\.\\d+)?(?:-\\w+)*)(?:.jar))', ); +const WRAPPER_VERSION_REGEX = regEx( + '^(?:wrapperVersion\\s*=\\s*)(?\\S*-(?\\d+\\.\\d+(?:\\.\\d+)?(?:-\\w+)*)(?:.jar))', +); + function extractVersions(fileContent: string): MavenVersionExtract { const lines = coerceArray(fileContent?.split(newlineRegex)); const maven = extractLineInfo(lines, DISTRIBUTION_URL_REGEX) ?? undefined; - const wrapper = extractLineInfo(lines, WRAPPER_URL_REGEX) ?? undefined; + const wrapper = + extractLineInfo(lines, WRAPPER_VERSION_REGEX) ?? + extractLineInfo(lines, WRAPPER_URL_REGEX) ?? + undefined; return { maven, wrapper }; } From d442e8a1b7ca50aea27fa55da9e4a612ee89f2fb Mon Sep 17 00:00:00 2001 From: tofferman Date: Wed, 15 May 2024 23:06:45 +0200 Subject: [PATCH 2/2] fix-maven-wrapper-28668: fix version regex --- .../manager/maven-wrapper/extract.spec.ts | 22 ++++++++----------- lib/modules/manager/maven-wrapper/extract.ts | 9 ++++---- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/lib/modules/manager/maven-wrapper/extract.spec.ts b/lib/modules/manager/maven-wrapper/extract.spec.ts index 9039d388f64eb1..6fe4810d87231b 100644 --- a/lib/modules/manager/maven-wrapper/extract.spec.ts +++ b/lib/modules/manager/maven-wrapper/extract.spec.ts @@ -3,17 +3,16 @@ import { extractPackageFile } from '.'; const onlyWrapperProperties = 'wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar'; -const onlyWrapperVersionProperties = - 'wrapperVersion=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar'; +const onlyWrapperVersionProperties = 'wrapperVersion=3.3.8'; const onlyMavenProperties = 'distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip'; const wrapperAndMavenProperties = `distributionUrl=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip\nwrapperUrl=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar`; -const wrapperVersionAndMavenProperties = `distributionUrl=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip\nwrapperVersion=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar`; +const wrapperVersionAndMavenProperties = `distributionUrl=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip\nwrapperVersion=3.3.8`; -const wrapperVersionAndMavenPropertiesAndWrapperUrl = `distributionUrl=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip\nwrapperVersion=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar\nwrapperUrl=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar`; +const wrapperVersionAndMavenPropertiesAndWrapperUrl = `distributionUrl=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/apache-maven/3.8.4/apache-maven-3.8.4-bin.zip\nwrapperVersion=3.3.8\nwrapperUrl=https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar`; describe('modules/manager/maven-wrapper/extract', () => { describe('extractPackageFile()', () => { @@ -85,9 +84,8 @@ describe('modules/manager/maven-wrapper/extract', () => { versioning: 'maven', }, { - currentValue: '3.3.0', - replaceString: - 'https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar', + currentValue: '3.3.8', + replaceString: null, datasource: 'maven', depName: 'maven-wrapper', packageName: 'org.apache.maven.wrapper:maven-wrapper', @@ -111,9 +109,8 @@ describe('modules/manager/maven-wrapper/extract', () => { versioning: 'maven', }, { - currentValue: '3.3.0', - replaceString: - 'https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar', + currentValue: '3.3.8', + replaceString: null, datasource: 'maven', depName: 'maven-wrapper', packageName: 'org.apache.maven.wrapper:maven-wrapper', @@ -126,9 +123,8 @@ describe('modules/manager/maven-wrapper/extract', () => { const res = extractPackageFile(onlyWrapperVersionProperties); expect(res?.deps).toEqual([ { - currentValue: '3.3.0', - replaceString: - 'https://internal.artifactory.acme.org/artifactory/maven-bol/org/apache/maven/wrapper/maven-wrapper/3.3.0/maven-wrapper-3.3.0.jar', + currentValue: '3.3.8', + replaceString: null, datasource: 'maven', depName: 'maven-wrapper', packageName: 'org.apache.maven.wrapper:maven-wrapper', diff --git a/lib/modules/manager/maven-wrapper/extract.ts b/lib/modules/manager/maven-wrapper/extract.ts index 3c8efd4a1086e0..b94303cba0249c 100644 --- a/lib/modules/manager/maven-wrapper/extract.ts +++ b/lib/modules/manager/maven-wrapper/extract.ts @@ -15,13 +15,12 @@ const WRAPPER_URL_REGEX = regEx( '^(?:wrapperUrl\\s*=\\s*)(?\\S*-(?\\d+\\.\\d+(?:\\.\\d+)?(?:-\\w+)*)(?:.jar))', ); -const WRAPPER_VERSION_REGEX = regEx( - '^(?:wrapperVersion\\s*=\\s*)(?\\S*-(?\\d+\\.\\d+(?:\\.\\d+)?(?:-\\w+)*)(?:.jar))', -); +const WRAPPER_VERSION_REGEX = regEx(/wrapperVersion=(?\d+(\.\d+)*)/); function extractVersions(fileContent: string): MavenVersionExtract { const lines = coerceArray(fileContent?.split(newlineRegex)); const maven = extractLineInfo(lines, DISTRIBUTION_URL_REGEX) ?? undefined; + const wrapper = extractLineInfo(lines, WRAPPER_VERSION_REGEX) ?? extractLineInfo(lines, WRAPPER_URL_REGEX) ?? @@ -35,8 +34,8 @@ function extractLineInfo(lines: string[], regex: RegExp): Version | null { const match = regex.exec(line); if (match?.groups) { return { - url: match.groups.url, - version: match.groups.version, + url: match.groups.url ?? null, + version: match.groups.version ?? null, }; } }