From c1f46ff4a8dc3da9f1e3b44f05252b9a9e6f50ce Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Thu, 20 Jun 2019 10:25:17 +0200 Subject: [PATCH] fix(pip_requirements): handle complex index-url Closes #3944 --- lib/manager/pip_requirements/extract.js | 2 +- .../__snapshots__/extract.spec.js.snap | 51 ++++++++++--------- .../__snapshots__/update.spec.js.snap | 5 +- .../_fixtures/requirements4.txt | 1 + test/manager/pip_requirements/extract.spec.js | 9 ++-- 5 files changed, 39 insertions(+), 29 deletions(-) diff --git a/lib/manager/pip_requirements/extract.js b/lib/manager/pip_requirements/extract.js index caae795cd9..99c1274faf 100644 --- a/lib/manager/pip_requirements/extract.js +++ b/lib/manager/pip_requirements/extract.js @@ -22,7 +22,7 @@ function extractPackageFile(content) { let registryUrls; content.split('\n').forEach(line => { if (line.startsWith('--index-url ')) { - const registryUrl = line.substring('--index-url '.length); + const registryUrl = line.substring('--index-url '.length).split(' ')[0]; registryUrls = [registryUrl]; } }); diff --git a/test/manager/pip_requirements/__snapshots__/extract.spec.js.snap b/test/manager/pip_requirements/__snapshots__/extract.spec.js.snap index 5b093bc9da..5e78df4c1b 100644 --- a/test/manager/pip_requirements/__snapshots__/extract.spec.js.snap +++ b/test/manager/pip_requirements/__snapshots__/extract.spec.js.snap @@ -112,27 +112,32 @@ Array [ ] `; -exports[`lib/manager/pip_requirements/extract extractPackageFile() handles extras 1`] = ` -Array [ - Object { - "currentValue": "==2.0.12", - "datasource": "pypi", - "depName": "Django", - "fromVersion": "2.0.12", - "lineNumber": 0, - }, - Object { - "currentValue": "==4.1.1", - "datasource": "pypi", - "depName": "celery", - "fromVersion": "4.1.1", - "lineNumber": 1, - }, - Object { - "currentValue": " == 3.2.1", - "datasource": "pypi", - "depName": "foo", - "lineNumber": 2, - }, -] +exports[`lib/manager/pip_requirements/extract extractPackageFile() handles extras and complex index url 1`] = ` +Object { + "deps": Array [ + Object { + "currentValue": "==2.0.12", + "datasource": "pypi", + "depName": "Django", + "fromVersion": "2.0.12", + "lineNumber": 1, + }, + Object { + "currentValue": "==4.1.1", + "datasource": "pypi", + "depName": "celery", + "fromVersion": "4.1.1", + "lineNumber": 2, + }, + Object { + "currentValue": " == 3.2.1", + "datasource": "pypi", + "depName": "foo", + "lineNumber": 3, + }, + ], + "registryUrls": Array [ + "https://artifactory.company.com/artifactory/api/pypi/python/simple", + ], +} `; diff --git a/test/manager/pip_requirements/__snapshots__/update.spec.js.snap b/test/manager/pip_requirements/__snapshots__/update.spec.js.snap index b015dff212..5d21201e80 100644 --- a/test/manager/pip_requirements/__snapshots__/update.spec.js.snap +++ b/test/manager/pip_requirements/__snapshots__/update.spec.js.snap @@ -20,8 +20,9 @@ wsgiref==0.1.2 # something else `; exports[`manager/pip_requirements/update updateDependency replaces existing value with extras 1`] = ` -"Django[argon2]==2.0.12 -celery [redis]==4.1.2 +"--index-url https://artifactory.company.com/artifactory/api/pypi/python/simple --trusted-host artifactory.company.com --default-timeout 600 +Django[argon2]==4.1.2 +celery [redis]==4.1.1 foo [bar] == 3.2.1 # handles extra white space " `; diff --git a/test/manager/pip_requirements/_fixtures/requirements4.txt b/test/manager/pip_requirements/_fixtures/requirements4.txt index d7def5af29..c8da95e7de 100644 --- a/test/manager/pip_requirements/_fixtures/requirements4.txt +++ b/test/manager/pip_requirements/_fixtures/requirements4.txt @@ -1,3 +1,4 @@ +--index-url https://artifactory.company.com/artifactory/api/pypi/python/simple --trusted-host artifactory.company.com --default-timeout 600 Django[argon2]==2.0.12 celery [redis]==4.1.1 foo [bar] == 3.2.1 # handles extra white space diff --git a/test/manager/pip_requirements/extract.spec.js b/test/manager/pip_requirements/extract.spec.js index 60c7adc012..ac357ea81a 100644 --- a/test/manager/pip_requirements/extract.spec.js +++ b/test/manager/pip_requirements/extract.spec.js @@ -46,10 +46,13 @@ describe('lib/manager/pip_requirements/extract', () => { expect(res).toMatchSnapshot(); expect(res).toHaveLength(5); }); - it('handles extras', () => { - const res = extractPackageFile(requirements4, config).deps; + it('handles extras and complex index url', () => { + const res = extractPackageFile(requirements4, config); expect(res).toMatchSnapshot(); - expect(res).toHaveLength(3); + expect(res.registryUrls).toEqual([ + 'https://artifactory.company.com/artifactory/api/pypi/python/simple', + ]); + expect(res.deps).toHaveLength(3); }); }); }); -- GitLab