diff --git a/lib/manager/maven/extract.js b/lib/manager/maven/extract.js index 9b62ed7fecee1dea6602b1e2a428112932230ef1..ce99fff75bc2e11d94f6580959bbb7bfe0fe71b6 100644 --- a/lib/manager/maven/extract.js +++ b/lib/manager/maven/extract.js @@ -69,10 +69,14 @@ function applyProps(dep, props) { let fileReplacePosition = dep.fileReplacePosition; let propSource = null; + let groupName = null; const currentValue = dep.currentValue.replace(/^\${.*?}$/, substr => { const propKey = substr.slice(2, -1).trim(); const propValue = props[propKey]; if (propValue) { + if (!groupName) { + groupName = propKey; + } fileReplacePosition = propValue.fileReplacePosition; propSource = propValue.packageFile; return propValue.val; @@ -89,6 +93,10 @@ function applyProps(dep, props) { currentValue, }; + if (groupName) { + result.groupName = groupName; + } + if (containsPlaceholder(depName)) { result.skipReason = 'name-placeholder'; } else if (containsPlaceholder(currentValue)) { diff --git a/test/manager/maven/__snapshots__/extract.spec.js.snap b/test/manager/maven/__snapshots__/extract.spec.js.snap index 4144c21d3ea2ac213ec704c3a1ff77ee1027ac91..601c732451fc11802c0837f6a4d3083fc71af5e2 100644 --- a/test/manager/maven/__snapshots__/extract.spec.js.snap +++ b/test/manager/maven/__snapshots__/extract.spec.js.snap @@ -74,11 +74,21 @@ Object { "https://maven.atlassian.com/content/repositories/atlassian-public/", ], }, + Object { + "currentValue": "\${quuxVersion}", + "datasource": "maven", + "depName": "\${quuxGroup}:\${quuxId}-test", + "fileReplacePosition": 2684, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "https://maven.atlassian.com/content/repositories/atlassian-public/", + ], + }, Object { "currentValue": "1.2.3", "datasource": "maven", "depName": "org.example:quuz", - "fileReplacePosition": 2673, + "fileReplacePosition": 2832, "registryUrls": Array [ "https://repo.maven.apache.org/maven2", "https://maven.atlassian.com/content/repositories/atlassian-public/", @@ -88,7 +98,7 @@ Object { "currentValue": "it's not a version", "datasource": "maven", "depName": "org.example:quuuz", - "fileReplacePosition": 2813, + "fileReplacePosition": 2972, "registryUrls": Array [ "https://repo.maven.apache.org/maven2", "https://maven.atlassian.com/content/repositories/atlassian-public/", @@ -98,7 +108,7 @@ Object { "currentValue": "[1.0.0]", "datasource": "maven", "depName": "org.example:hard-range", - "fileReplacePosition": 2971, + "fileReplacePosition": 3130, "registryUrls": Array [ "https://repo.maven.apache.org/maven2", "https://maven.atlassian.com/content/repositories/atlassian-public/", @@ -108,7 +118,7 @@ Object { "currentValue": "\${profile-placeholder}", "datasource": "maven", "depName": "org.example:profile-artifact", - "fileReplacePosition": 3233, + "fileReplacePosition": 3392, "registryUrls": Array [ "https://repo.maven.apache.org/maven2", "https://maven.atlassian.com/content/repositories/atlassian-public/", @@ -118,7 +128,7 @@ Object { "currentValue": "2.17", "datasource": "maven", "depName": "org.apache.maven.plugins:maven-checkstyle-plugin", - "fileReplacePosition": 3509, + "fileReplacePosition": 3668, "registryUrls": Array [ "https://repo.maven.apache.org/maven2", "https://maven.atlassian.com/content/repositories/atlassian-public/", diff --git a/test/manager/maven/__snapshots__/index.spec.js.snap b/test/manager/maven/__snapshots__/index.spec.js.snap new file mode 100644 index 0000000000000000000000000000000000000000..dab2e477fe2e1e838474d84e7dd5bb46b92362ca --- /dev/null +++ b/test/manager/maven/__snapshots__/index.spec.js.snap @@ -0,0 +1,178 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`manager/maven extractAllPackageFiles should return package files info 1`] = ` +Array [ + Object { + "datasource": "maven", + "deps": Array [ + Object { + "currentValue": "42", + "datasource": "maven", + "depName": "org.example:parent", + "fileReplacePosition": 186, + "propSource": null, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "https://maven.atlassian.com/content/repositories/atlassian-public/", + ], + }, + Object { + "currentValue": "0.0.1", + "datasource": "maven", + "depName": "org.example:foo", + "fileReplacePosition": 905, + "propSource": null, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "https://maven.atlassian.com/content/repositories/atlassian-public/", + ], + }, + Object { + "currentValue": "1.0.0", + "datasource": "maven", + "depName": "org.example:bar", + "fileReplacePosition": 1053, + "propSource": null, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "https://maven.atlassian.com/content/repositories/atlassian-public/", + ], + }, + Object { + "currentValue": "1.8.1", + "datasource": "maven", + "depName": "org.apache.maven.scm:maven-scm-provider-gitexe", + "fileReplacePosition": 1485, + "propSource": null, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "https://maven.atlassian.com/content/repositories/atlassian-public/", + ], + }, + Object { + "currentValue": "0.0.1", + "datasource": "maven", + "depName": "org.example:\${artifact-id-placeholder}", + "fileReplacePosition": 2230, + "propSource": null, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "https://maven.atlassian.com/content/repositories/atlassian-public/", + ], + "skipReason": "name-placeholder", + }, + Object { + "currentValue": "0.0.1", + "datasource": "maven", + "depName": "\${group-id-placeholder}:baz", + "fileReplacePosition": 2380, + "propSource": null, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "https://maven.atlassian.com/content/repositories/atlassian-public/", + ], + "skipReason": "name-placeholder", + }, + Object { + "currentValue": "1.2.3.4", + "datasource": "maven", + "depName": "org.example:quux", + "fileReplacePosition": 698, + "groupName": "quuxVersion", + "propSource": "random.pom.xml", + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "https://maven.atlassian.com/content/repositories/atlassian-public/", + ], + }, + Object { + "currentValue": "1.2.3.4", + "datasource": "maven", + "depName": "org.example:quux-test", + "fileReplacePosition": 698, + "groupName": "quuxVersion", + "propSource": "random.pom.xml", + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "https://maven.atlassian.com/content/repositories/atlassian-public/", + ], + }, + Object { + "currentValue": "1.2.3", + "datasource": "maven", + "depName": "org.example:quuz", + "fileReplacePosition": 2832, + "propSource": null, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "https://maven.atlassian.com/content/repositories/atlassian-public/", + ], + }, + Object { + "currentValue": "it's not a version", + "datasource": "maven", + "depName": "org.example:quuuz", + "fileReplacePosition": 2972, + "propSource": null, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "https://maven.atlassian.com/content/repositories/atlassian-public/", + ], + "skipReason": "not-a-version", + }, + Object { + "currentValue": "[1.0.0]", + "datasource": "maven", + "depName": "org.example:hard-range", + "fileReplacePosition": 3130, + "propSource": null, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "https://maven.atlassian.com/content/repositories/atlassian-public/", + ], + }, + Object { + "currentValue": "\${profile-placeholder}", + "datasource": "maven", + "depName": "org.example:profile-artifact", + "fileReplacePosition": 3392, + "propSource": null, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "https://maven.atlassian.com/content/repositories/atlassian-public/", + ], + "skipReason": "version-placeholder", + }, + Object { + "currentValue": "2.17", + "datasource": "maven", + "depName": "org.apache.maven.plugins:maven-checkstyle-plugin", + "fileReplacePosition": 3668, + "propSource": null, + "registryUrls": Array [ + "https://repo.maven.apache.org/maven2", + "https://maven.atlassian.com/content/repositories/atlassian-public/", + ], + }, + ], + "mavenProps": Object { + "quuxGroup": Object { + "fileReplacePosition": 631, + "packageFile": "random.pom.xml", + "val": "org.example", + }, + "quuxId": Object { + "fileReplacePosition": 667, + "packageFile": "random.pom.xml", + "val": "quux", + }, + "quuxVersion": Object { + "fileReplacePosition": 698, + "packageFile": "random.pom.xml", + "val": "1.2.3.4", + }, + }, + "packageFile": "random.pom.xml", + }, +] +`; diff --git a/test/manager/maven/_fixtures/simple.pom.xml b/test/manager/maven/_fixtures/simple.pom.xml index ed76aeb9981f811d276072e0f7ae9da647cd71e2..cbebf2027950817fff3da22e6763ea609435d960 100644 --- a/test/manager/maven/_fixtures/simple.pom.xml +++ b/test/manager/maven/_fixtures/simple.pom.xml @@ -98,6 +98,11 @@ <artifactId>${quuxId}</artifactId> <version>${quuxVersion}</version> </dependency> + <dependency> + <groupId>${quuxGroup}</groupId> + <artifactId>${quuxId}-test</artifactId> + <version>${quuxVersion}</version> + </dependency> <dependency> <groupId>org.example</groupId> <artifactId>quuz</artifactId> diff --git a/test/manager/maven/index.spec.js b/test/manager/maven/index.spec.js index db5f91edc376c8b8e19cc5b88236caa2b3779f02..a52c4251f7ed9ce5180b95a08a595fe448070062 100644 --- a/test/manager/maven/index.spec.js +++ b/test/manager/maven/index.spec.js @@ -42,12 +42,7 @@ describe('manager/maven', () => { it('should return package files info', async () => { platform.getFile.mockReturnValueOnce(pomContent); const packages = await extractAllPackageFiles({}, ['random.pom.xml']); - expect(packages).toHaveLength(1); - - const pkg = packages[0]; - expect(pkg.packageFile).toEqual('random.pom.xml'); - expect(pkg.datasource).toEqual('maven'); - expect(pkg.deps).not.toBeNull(); + expect(packages).toMatchSnapshot(); }); });