diff --git a/lib/manager/bazel/update.js b/lib/manager/bazel/update.js index 65c7bc31f34211147d73f0a265030bf1a24384a4..e11ce82d6d83bf15c23382f5b534790d0b5ee8ac 100644 --- a/lib/manager/bazel/update.js +++ b/lib/manager/bazel/update.js @@ -16,12 +16,20 @@ function updateWithNewVersion(content, currentValue, newValue) { return newContent; } +function extractUrl(flattened) { + const urlMatch = flattened.match(/url="(.*?)"/); + if (!urlMatch) { + logger.debug('Cannot locate urls in new definition'); + return null; + } + return [urlMatch[1]]; +} + function extractUrls(content) { const flattened = content.replace(/\n/g, '').replace(/\s/g, ''); const urlsMatch = flattened.match(/urls?=\[.*?\]/); if (!urlsMatch) { - logger.debug({ content }, 'Cannot locate urls in new definition'); - return null; + return extractUrl(flattened); } const urls = urlsMatch[0] .replace(/urls?=\[/, '') diff --git a/test/manager/bazel/update.spec.js b/test/manager/bazel/update.spec.js index d2719ef580aca04ccaa1563a194ed8aca794055c..676875cc937289903cec9eb7ce033d67279f384f 100644 --- a/test/manager/bazel/update.spec.js +++ b/test/manager/bazel/update.spec.js @@ -132,6 +132,28 @@ describe('manager/bazel/update', () => { expect(res).not.toEqual(fileWithBzlExtension); expect(res.indexOf('0.8.0')).not.toBe(-1); }); + it('updates finds url instead of urls', async () => { + const upgrade = { + depName: 'bazel_skylib', + depType: 'http_archive', + repo: 'bazelbuild/bazel-skylib', + def: `http_archive( + name = "bazel_skylib", + sha256 = "eb5c57e4c12e68c0c20bc774bfbc60a568e800d025557bc4ea022c6479acc867", + strip_prefix = "bazel-skylib-0.6.0", + url = "https://github.com/bazelbuild/bazel-skylib/archive/0.6.0.tar.gz", + )`, + currentValue: '0.6.0', + newValue: '0.8.0', + }; + hasha.fromStream.mockReturnValueOnce('abc123'); + const res = await bazelfile.updateDependency( + fileWithBzlExtension, + upgrade + ); + expect(res).not.toEqual(fileWithBzlExtension); + expect(res.indexOf('0.8.0')).not.toBe(-1); + }); it('returns null if no urls resolve hashes', async () => { const upgrade = { depName: 'bazel_skylib',