diff --git a/lib/modules/datasource/golang-version/__snapshots__/index.spec.ts.snap b/lib/modules/datasource/golang-version/__snapshots__/index.spec.ts.snap index d57eabb7e3a8c6067964f91f6334ab0ed4fdab7c..4275a6e4ab03f00b72ce0f26159c5d4781530b30 100644 --- a/lib/modules/datasource/golang-version/__snapshots__/index.spec.ts.snap +++ b/lib/modules/datasource/golang-version/__snapshots__/index.spec.ts.snap @@ -529,18 +529,10 @@ Object { "releaseTimestamp": "2022-03-03T00:00:00.000Z", "version": "1.17.8", }, - Object { - "releaseTimestamp": "2022-04-07T00:00:00.000Z", - "version": "1.17.9", - }, Object { "releaseTimestamp": "2022-03-15T00:00:00.000Z", "version": "1.18.0", }, - Object { - "releaseTimestamp": "2022-04-07T00:00:00.000Z", - "version": "1.18.1", - }, ], "sourceUrl": "https://github.com/golang/go", } diff --git a/lib/modules/datasource/golang-version/index.spec.ts b/lib/modules/datasource/golang-version/index.spec.ts index 5ad18ff23b3155db643e58487c70e50c014e56d6..9fe3e9d9370f45f01503149945171f0563c3a4ac 100644 --- a/lib/modules/datasource/golang-version/index.spec.ts +++ b/lib/modules/datasource/golang-version/index.spec.ts @@ -25,7 +25,7 @@ describe('modules/datasource/golang-version/index', () => { datasource, depName: 'golang', }); - expect(res.releases).toHaveLength(134); + expect(res.releases).toHaveLength(132); expect(res.releases[0]).toEqual({ releaseTimestamp: '2012-03-28T00:00:00.000Z', version: '1.0.0', diff --git a/lib/modules/datasource/golang-version/index.ts b/lib/modules/datasource/golang-version/index.ts index 1a674c16748477b6115ba420fab5f4f50a2b705f..dac2bb89c900ce335143f3651f5c85e38072244a 100644 --- a/lib/modules/datasource/golang-version/index.ts +++ b/lib/modules/datasource/golang-version/index.ts @@ -14,6 +14,7 @@ const releaseDateRegex = regEx( const releaseVersionRegex = regEx( `Version\\{(?<versionMajor>\\d+),\\s+(?<versionMinor>\\d+),\\s+(?<patch>\\d+)\\}` ); +const releaseFutureRegex = regEx(`Future:\\s+true`); export class GolangVersionDatasource extends Datasource { static readonly id = 'golang-version'; @@ -57,6 +58,7 @@ export class GolangVersionDatasource extends Datasource { // Parse the release list let release: Release = { version: undefined }; + let skipFutureRelease = false; while (lines.length !== 0) { const line = lines.shift(); if (line === releaseBeginningChar) { @@ -66,14 +68,22 @@ export class GolangVersionDatasource extends Datasource { ); } } else if (line === releaseTerminationChar) { - if (release.version === undefined) { - throw new ExternalHostError( - new Error('Invalid file - release has empty version') - ); + if (skipFutureRelease) { + skipFutureRelease = false; + } else { + if (release.version === undefined) { + throw new ExternalHostError( + new Error('Invalid file - release has empty version') + ); + } + res.releases.push(release); } - res.releases.push(release); release = { version: undefined }; } else { + const isFutureRelease = releaseFutureRegex.test(line); + if (isFutureRelease) { + skipFutureRelease = true; + } const releaseDateMatch = releaseDateRegex.exec(line); if (releaseDateMatch) { // Make a valid UTC timestamp