diff --git a/lib/manager/pipenv/extract.js b/lib/manager/pipenv/extract.js index 9d903b2d21ca39a8750d000f3064e2ff370f9acd..a4ce2a6121cc3c95c291995ea757f38a74e8dee0 100644 --- a/lib/manager/pipenv/extract.js +++ b/lib/manager/pipenv/extract.js @@ -96,6 +96,16 @@ function extractFromSection(pipfile, section) { dep.datasource = 'pypi'; } if (pipenvNestedVersion) dep.pipenvNestedVersion = pipenvNestedVersion; + if (requirements.index) { + if (is.array(pipfile.source)) { + const source = pipfile.source.find( + item => item.name === requirements.index + ); + if (source) { + dep.registryUrls = [source.url]; + } + } + } return dep; }) .filter(Boolean); diff --git a/test/manager/pipenv/__snapshots__/extract.spec.js.snap b/test/manager/pipenv/__snapshots__/extract.spec.js.snap index 2d12887d66cd13738046046366f92fb8f05f7e87..6895affd9b5793572b9b9785555e59d5df0b5881 100644 --- a/test/manager/pipenv/__snapshots__/extract.spec.js.snap +++ b/test/manager/pipenv/__snapshots__/extract.spec.js.snap @@ -82,6 +82,9 @@ Object { "depName": "pywinusb", "depType": "packages", "pipenvNestedVersion": true, + "registryUrls": Array [ + "https://pypi.python.org/simple", + ], "skipReason": "any-version", }, Object { @@ -143,3 +146,24 @@ Object { ], } `; + +exports[`lib/manager/pipenv/extract extractPackageFile() supports custom index 1`] = ` +Object { + "deps": Array [ + Object { + "currentValue": "==0.21.0", + "datasource": "pypi", + "depName": "requests", + "depType": "packages", + "pipenvNestedVersion": true, + "registryUrls": Array [ + "https://testpypi.python.org/pypi", + ], + }, + ], + "registryUrls": Array [ + "https://pypi.python.org/simple", + "https://testpypi.python.org/pypi", + ], +} +`; diff --git a/test/manager/pipenv/_fixtures/Pipfile5 b/test/manager/pipenv/_fixtures/Pipfile5 new file mode 100644 index 0000000000000000000000000000000000000000..2c373c425ebac7b6aa62a872328065d6c927f55c --- /dev/null +++ b/test/manager/pipenv/_fixtures/Pipfile5 @@ -0,0 +1,12 @@ +[[source]] +url = "https://pypi.python.org/simple" +verify_ssl = true +name = "pypi" + +[[source]] +url = "https://testpypi.python.org/pypi" +verify_ssl = true +name = "testpypi" + +[packages] +requests = {version = "==0.21.0", index = "testpypi"} diff --git a/test/manager/pipenv/extract.spec.js b/test/manager/pipenv/extract.spec.js index 32dee60d2044a808d7c6f4d92dfab01c2dd3636c..39416bdcda705c19c90726a8f94082e4f544983c 100644 --- a/test/manager/pipenv/extract.spec.js +++ b/test/manager/pipenv/extract.spec.js @@ -17,6 +17,10 @@ const pipfile4 = fs.readFileSync( 'test/manager/pipenv/_fixtures/Pipfile4', 'utf8' ); +const pipfile5 = fs.readFileSync( + 'test/manager/pipenv/_fixtures/Pipfile5', + 'utf8' +); describe('lib/manager/pipenv/extract', () => { describe('extractPackageFile()', () => { @@ -86,5 +90,13 @@ describe('lib/manager/pipenv/extract', () => { const res = extractPackageFile(pipfile4, config); expect(res).toMatchSnapshot(); }); + it('supports custom index', () => { + const res = extractPackageFile(pipfile5, config); + expect(res).toMatchSnapshot(); + expect(res.registryUrls).toBeDefined(); + expect(res.registryUrls).toHaveLength(2); + expect(res.deps[0].registryUrls).toBeDefined(); + expect(res.deps[0].registryUrls).toHaveLength(1); + }); }); });