Skip to content
Snippets Groups Projects
Unverified Commit ae4a5749 authored by Craig Andrews's avatar Craig Andrews Committed by GitHub
Browse files

fix(maven): Use correct snapshot URL in getDependencyInfo (#15380)

parent 31b10e73
Branches
No related tags found
No related merge requests found
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>org.example</groupId>
<artifactId>package</artifactId>
<versioning>
<latest>1.0.3-SNAPSHOT</latest>
<release>1.0.3-SNAPSHOT</release>
<versions>
<version>1.0.3-SNAPSHOT</version>
</versions>
<lastUpdated>20210101000000</lastUpdated>
</versioning>
</metadata>
...@@ -83,10 +83,26 @@ function mockGenericPackage(opts: MockOpts = {}) { ...@@ -83,10 +83,26 @@ function mockGenericPackage(opts: MockOpts = {}) {
} }
if (pom) { if (pom) {
if (latest.endsWith('-SNAPSHOT')) {
const [major, minor, patch] = latest
.replace('-SNAPSHOT', '')
.split('.')
.map((x) => parseInt(x, 10))
.map((x) => (x < 10 ? `0${x}` : `${x}`));
scope
.get(
`/${packagePath}/${latest}/${artifact}-${latest.replace(
'-SNAPSHOT',
''
)}-20200101.${major}${minor}${patch}-${parseInt(patch, 10)}.pom`
)
.reply(200, pom);
} else {
scope scope
.get(`/${packagePath}/${latest}/${artifact}-${latest}.pom`) .get(`/${packagePath}/${latest}/${artifact}-${latest}.pom`)
.reply(200, pom); .reply(200, pom);
} }
}
if (jars) { if (jars) {
Object.entries(jars).forEach(([version, status]) => { Object.entries(jars).forEach(([version, status]) => {
...@@ -189,6 +205,43 @@ describe('modules/datasource/maven/index', () => { ...@@ -189,6 +205,43 @@ describe('modules/datasource/maven/index', () => {
expect(res).toMatchSnapshot(); expect(res).toMatchSnapshot();
}); });
it('returns releases when only snapshot', async () => {
const meta = loadFixture('metadata-snapshot-version.xml');
mockGenericPackage({
meta: loadFixture('metadata-snapshot-only.xml'),
jars: null,
html: null,
latest: '1.0.3-SNAPSHOT',
snapshots: [
{
version: '1.0.3-SNAPSHOT',
meta: meta,
jarStatus: 200,
},
],
});
httpMock
.scope(baseUrl)
.get('/org/example/package/1.0.3-SNAPSHOT/maven-metadata.xml')
.reply(200, meta);
const res = await get();
expect(res).toEqual({
display: 'org.example:package',
group: 'org.example',
homepage: 'https://package.example.org/about',
name: 'package',
registryUrl: 'https://repo.maven.apache.org/maven2',
releases: [
{
releaseTimestamp: '2020-01-01T01:00:03.000Z',
version: '1.0.3-SNAPSHOT',
},
],
});
});
it('returns html-based releases', async () => { it('returns html-based releases', async () => {
process.env.RENOVATE_EXPERIMENTAL_NO_MAVEN_POM_CHECK = 'true'; process.env.RENOVATE_EXPERIMENTAL_NO_MAVEN_POM_CHECK = 'true';
......
...@@ -384,7 +384,12 @@ export async function getDependencyInfo( ...@@ -384,7 +384,12 @@ export async function getDependencyInfo(
recursionLimit = 5 recursionLimit = 5
): Promise<Partial<ReleaseResult>> { ): Promise<Partial<ReleaseResult>> {
const result: Partial<ReleaseResult> = {}; const result: Partial<ReleaseResult> = {};
const path = `${version}/${dependency.name}-${version}.pom`; const path = await createUrlForDependencyPom(
http,
version,
dependency,
repoUrl
);
const pomUrl = getMavenUrl(dependency, repoUrl, path); const pomUrl = getMavenUrl(dependency, repoUrl, path);
const { xml: pomContent } = await downloadMavenXml(http, pomUrl); const { xml: pomContent } = await downloadMavenXml(http, pomUrl);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment