Skip to content
Snippets Groups Projects
Commit 9a3c9cab authored by Sergio Zharinov's avatar Sergio Zharinov Committed by Rhys Arkins
Browse files

feat(maven): Group dependencies by common version property (#4028)

parent 6490f1be
No related merge requests found
...@@ -69,10 +69,14 @@ function applyProps(dep, props) { ...@@ -69,10 +69,14 @@ function applyProps(dep, props) {
let fileReplacePosition = dep.fileReplacePosition; let fileReplacePosition = dep.fileReplacePosition;
let propSource = null; let propSource = null;
let groupName = null;
const currentValue = dep.currentValue.replace(/^\${.*?}$/, substr => { const currentValue = dep.currentValue.replace(/^\${.*?}$/, substr => {
const propKey = substr.slice(2, -1).trim(); const propKey = substr.slice(2, -1).trim();
const propValue = props[propKey]; const propValue = props[propKey];
if (propValue) { if (propValue) {
if (!groupName) {
groupName = propKey;
}
fileReplacePosition = propValue.fileReplacePosition; fileReplacePosition = propValue.fileReplacePosition;
propSource = propValue.packageFile; propSource = propValue.packageFile;
return propValue.val; return propValue.val;
...@@ -89,6 +93,10 @@ function applyProps(dep, props) { ...@@ -89,6 +93,10 @@ function applyProps(dep, props) {
currentValue, currentValue,
}; };
if (groupName) {
result.groupName = groupName;
}
if (containsPlaceholder(depName)) { if (containsPlaceholder(depName)) {
result.skipReason = 'name-placeholder'; result.skipReason = 'name-placeholder';
} else if (containsPlaceholder(currentValue)) { } else if (containsPlaceholder(currentValue)) {
......
...@@ -74,11 +74,21 @@ Object { ...@@ -74,11 +74,21 @@ Object {
"https://maven.atlassian.com/content/repositories/atlassian-public/", "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 { Object {
"currentValue": "1.2.3", "currentValue": "1.2.3",
"datasource": "maven", "datasource": "maven",
"depName": "org.example:quuz", "depName": "org.example:quuz",
"fileReplacePosition": 2673, "fileReplacePosition": 2832,
"registryUrls": Array [ "registryUrls": Array [
"https://repo.maven.apache.org/maven2", "https://repo.maven.apache.org/maven2",
"https://maven.atlassian.com/content/repositories/atlassian-public/", "https://maven.atlassian.com/content/repositories/atlassian-public/",
...@@ -88,7 +98,7 @@ Object { ...@@ -88,7 +98,7 @@ Object {
"currentValue": "it's not a version", "currentValue": "it's not a version",
"datasource": "maven", "datasource": "maven",
"depName": "org.example:quuuz", "depName": "org.example:quuuz",
"fileReplacePosition": 2813, "fileReplacePosition": 2972,
"registryUrls": Array [ "registryUrls": Array [
"https://repo.maven.apache.org/maven2", "https://repo.maven.apache.org/maven2",
"https://maven.atlassian.com/content/repositories/atlassian-public/", "https://maven.atlassian.com/content/repositories/atlassian-public/",
...@@ -98,7 +108,7 @@ Object { ...@@ -98,7 +108,7 @@ Object {
"currentValue": "[1.0.0]", "currentValue": "[1.0.0]",
"datasource": "maven", "datasource": "maven",
"depName": "org.example:hard-range", "depName": "org.example:hard-range",
"fileReplacePosition": 2971, "fileReplacePosition": 3130,
"registryUrls": Array [ "registryUrls": Array [
"https://repo.maven.apache.org/maven2", "https://repo.maven.apache.org/maven2",
"https://maven.atlassian.com/content/repositories/atlassian-public/", "https://maven.atlassian.com/content/repositories/atlassian-public/",
...@@ -108,7 +118,7 @@ Object { ...@@ -108,7 +118,7 @@ Object {
"currentValue": "\${profile-placeholder}", "currentValue": "\${profile-placeholder}",
"datasource": "maven", "datasource": "maven",
"depName": "org.example:profile-artifact", "depName": "org.example:profile-artifact",
"fileReplacePosition": 3233, "fileReplacePosition": 3392,
"registryUrls": Array [ "registryUrls": Array [
"https://repo.maven.apache.org/maven2", "https://repo.maven.apache.org/maven2",
"https://maven.atlassian.com/content/repositories/atlassian-public/", "https://maven.atlassian.com/content/repositories/atlassian-public/",
...@@ -118,7 +128,7 @@ Object { ...@@ -118,7 +128,7 @@ Object {
"currentValue": "2.17", "currentValue": "2.17",
"datasource": "maven", "datasource": "maven",
"depName": "org.apache.maven.plugins:maven-checkstyle-plugin", "depName": "org.apache.maven.plugins:maven-checkstyle-plugin",
"fileReplacePosition": 3509, "fileReplacePosition": 3668,
"registryUrls": Array [ "registryUrls": Array [
"https://repo.maven.apache.org/maven2", "https://repo.maven.apache.org/maven2",
"https://maven.atlassian.com/content/repositories/atlassian-public/", "https://maven.atlassian.com/content/repositories/atlassian-public/",
......
// 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",
},
]
`;
...@@ -98,6 +98,11 @@ ...@@ -98,6 +98,11 @@
<artifactId>${quuxId}</artifactId> <artifactId>${quuxId}</artifactId>
<version>${quuxVersion}</version> <version>${quuxVersion}</version>
</dependency> </dependency>
<dependency>
<groupId>${quuxGroup}</groupId>
<artifactId>${quuxId}-test</artifactId>
<version>${quuxVersion}</version>
</dependency>
<dependency> <dependency>
<groupId>org.example</groupId> <groupId>org.example</groupId>
<artifactId>quuz</artifactId> <artifactId>quuz</artifactId>
......
...@@ -42,12 +42,7 @@ describe('manager/maven', () => { ...@@ -42,12 +42,7 @@ describe('manager/maven', () => {
it('should return package files info', async () => { it('should return package files info', async () => {
platform.getFile.mockReturnValueOnce(pomContent); platform.getFile.mockReturnValueOnce(pomContent);
const packages = await extractAllPackageFiles({}, ['random.pom.xml']); const packages = await extractAllPackageFiles({}, ['random.pom.xml']);
expect(packages).toHaveLength(1); expect(packages).toMatchSnapshot();
const pkg = packages[0];
expect(pkg.packageFile).toEqual('random.pom.xml');
expect(pkg.datasource).toEqual('maven');
expect(pkg.deps).not.toBeNull();
}); });
}); });
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment