From 74b6669ce1d0ef9899f73fa5e9bff71045894b58 Mon Sep 17 00:00:00 2001 From: Sergio Zharinov Date: Tue, 14 Jul 2020 19:22:48 +0400 Subject: [PATCH] chore(maven): Add 'editFile' field to extracted deps (#6752) * feat(maven): Add 'editFile' field when extracting * Set 'editFile' only for parent files --- lib/manager/common.ts | 1 + .../maven/__snapshots__/index.spec.ts.snap | 178 ++++++++++++++++++ lib/manager/maven/extract.ts | 7 +- lib/manager/maven/index.spec.ts | 1 + 4 files changed, 186 insertions(+), 1 deletion(-) diff --git a/lib/manager/common.ts b/lib/manager/common.ts index 3a916bcf1e4f94..2d86f6616d055f 100644 --- a/lib/manager/common.ts +++ b/lib/manager/common.ts @@ -171,6 +171,7 @@ export interface PackageDependency> extends Package { replaceString?: string; autoReplaceStringTemplate?: string; depIndex?: number; + editFile?: string; } export interface Upgrade> diff --git a/lib/manager/maven/__snapshots__/index.spec.ts.snap b/lib/manager/maven/__snapshots__/index.spec.ts.snap index fb701d97b254ad..b34f116b8b1a3c 100644 --- a/lib/manager/maven/__snapshots__/index.spec.ts.snap +++ b/lib/manager/maven/__snapshots__/index.spec.ts.snap @@ -156,3 +156,181 @@ Array [ }, ] `; + +exports[`manager/maven updateDependency should include registryUrls from parent pom files 1`] = ` +Array [ + Object { + "datasource": "maven", + "deps": Array [ + Object { + "currentValue": "42", + "datasource": "maven", + "depName": "org.example:child", + "fileReplacePosition": 185, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "http://example.com/nexus/xyz", + "http://example.com/", + ], + }, + Object { + "currentValue": "1.2.3.4", + "datasource": "maven", + "depName": "org.example:quux", + "editFile": "parent.pom.xml", + "fileReplacePosition": 470, + "groupName": "quuxVersion", + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "http://example.com/", + "http://example.com/nexus/xyz", + ], + }, + ], + "packageFile": "parent.pom.xml", + "parent": "child.pom.xml", + }, + Object { + "datasource": "maven", + "deps": Array [ + Object { + "currentValue": "42", + "datasource": "maven", + "depName": "org.example:parent", + "fileReplacePosition": 186, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "http://example.com/", + "http://example.com/nexus/xyz", + ], + }, + Object { + "currentValue": "0.0.1", + "datasource": "maven", + "depName": "org.example:foo", + "fileReplacePosition": 806, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "http://example.com/", + "http://example.com/nexus/xyz", + ], + }, + Object { + "currentValue": "1.0.0", + "datasource": "maven", + "depName": "org.example:bar", + "fileReplacePosition": 954, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "http://example.com/", + "http://example.com/nexus/xyz", + ], + }, + Object { + "currentValue": "2.4.2", + "datasource": "maven", + "depName": "org.apache.maven.plugins:maven-release-plugin", + "fileReplacePosition": 1188, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "http://example.com/", + "http://example.com/nexus/xyz", + ], + }, + Object { + "currentValue": "1.8.1", + "datasource": "maven", + "depName": "org.apache.maven.scm:maven-scm-provider-gitexe", + "fileReplacePosition": 1386, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "http://example.com/", + "http://example.com/nexus/xyz", + ], + }, + Object { + "currentValue": "0.0.1", + "datasource": "maven", + "depName": "org.example:\${artifact-id-placeholder}", + "fileReplacePosition": 2131, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "http://example.com/", + "http://example.com/nexus/xyz", + ], + "skipReason": "name-placeholder", + }, + Object { + "currentValue": "0.0.1", + "datasource": "maven", + "depName": "\${group-id-placeholder}:baz", + "fileReplacePosition": 2281, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "http://example.com/", + "http://example.com/nexus/xyz", + ], + "skipReason": "name-placeholder", + }, + Object { + "currentValue": "1.2.3", + "datasource": "maven", + "depName": "org.example:quuz", + "fileReplacePosition": 2574, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "http://example.com/", + "http://example.com/nexus/xyz", + ], + }, + Object { + "currentValue": "it's not a version", + "datasource": "maven", + "depName": "org.example:quuuz", + "fileReplacePosition": 2714, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "http://example.com/", + "http://example.com/nexus/xyz", + ], + }, + Object { + "currentValue": "[1.0.0]", + "datasource": "maven", + "depName": "org.example:hard-range", + "fileReplacePosition": 2872, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "http://example.com/", + "http://example.com/nexus/xyz", + ], + }, + Object { + "currentValue": "\${profile-placeholder}", + "datasource": "maven", + "depName": "org.example:profile-artifact", + "fileReplacePosition": 3134, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "http://example.com/", + "http://example.com/nexus/xyz", + ], + "skipReason": "version-placeholder", + }, + Object { + "currentValue": "2.17", + "datasource": "maven", + "depName": "org.apache.maven.plugins:maven-checkstyle-plugin", + "fileReplacePosition": 3410, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "http://example.com/", + "http://example.com/nexus/xyz", + ], + }, + ], + "packageFile": "child.pom.xml", + "parent": "parent.pom.xml", + }, +] +`; diff --git a/lib/manager/maven/extract.ts b/lib/manager/maven/extract.ts index f10dda62103308..9fef5ed3b9b9cc 100644 --- a/lib/manager/maven/extract.ts +++ b/lib/manager/maven/extract.ts @@ -89,6 +89,7 @@ function deepExtract( function applyProps( dep: PackageDependency>, + depPackageFile: string, props: MavenProp ): PackageDependency> { const replaceAll = (str: string): string => @@ -137,6 +138,10 @@ function applyProps( result.skipReason = SkipReason.VersionPlaceholder; } + if (propSource && depPackageFile !== propSource) { + result.editFile = propSource; + } + return result; } @@ -270,7 +275,7 @@ export function resolveParents(packages: PackageFile[]): PackageFile[] { packageFileNames.forEach((name) => { const pkg = extractedPackages[name]; pkg.deps.forEach((rawDep) => { - const dep = applyProps(rawDep, extractedProps[name]); + const dep = applyProps(rawDep, name, extractedProps[name]); const sourceName = dep.propSource || name; extractedDeps[sourceName].push(dep); }); diff --git a/lib/manager/maven/index.spec.ts b/lib/manager/maven/index.spec.ts index fe0ff02b482df3..10c05aea8c24d7 100644 --- a/lib/manager/maven/index.spec.ts +++ b/lib/manager/maven/index.spec.ts @@ -115,6 +115,7 @@ describe('manager/maven', () => { expect(depUrls).toEqual(urls); }); }); + expect(packages).toMatchSnapshot(); }); it('should not touch content if new and old versions are equal', () => {