From 968c8041d1d25c604d8fd5ee78064c68a6db4143 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Mon, 22 Jul 2019 09:42:08 +0200
Subject: [PATCH] refactor: pip_requirements managerData

---
 lib/manager/pip_requirements/extract.js       |   2 +-
 lib/manager/pip_requirements/update.js        |   4 +-
 .../__snapshots__/extract.spec.js.snap        | 136 +++++++++++++-----
 test/manager/pip_requirements/update.spec.js  |  10 +-
 4 files changed, 110 insertions(+), 42 deletions(-)

diff --git a/lib/manager/pip_requirements/extract.js b/lib/manager/pip_requirements/extract.js
index 434cfa7973..af13cfd3f8 100644
--- a/lib/manager/pip_requirements/extract.js
+++ b/lib/manager/pip_requirements/extract.js
@@ -65,7 +65,7 @@ function extractPackageFile(content, _, config) {
         ...dep,
         depName,
         currentValue,
-        lineNumber,
+        managerData: { lineNumber },
         datasource: 'pypi',
       };
       if (
diff --git a/lib/manager/pip_requirements/update.js b/lib/manager/pip_requirements/update.js
index ba1ad061cb..7809aa63a8 100644
--- a/lib/manager/pip_requirements/update.js
+++ b/lib/manager/pip_requirements/update.js
@@ -9,7 +9,7 @@ function updateDependency(fileContent, upgrade) {
   try {
     logger.debug(`pip_requirements.updateDependency(): ${upgrade.newValue}`);
     const lines = fileContent.split('\n');
-    const oldValue = lines[upgrade.lineNumber];
+    const oldValue = lines[upgrade.managerData.lineNumber];
     let newValue;
     const multiDependencyRegex = new RegExp(
       `(install_requires\\s*[=]\\s*\\[.*)(${upgrade.depName}.+?(?='))(.*])`,
@@ -32,7 +32,7 @@ function updateDependency(fileContent, upgrade) {
         `$1$2${upgrade.newValue}`
       );
     }
-    lines[upgrade.lineNumber] = newValue;
+    lines[upgrade.managerData.lineNumber] = newValue;
     return lines.join('\n');
   } catch (err) {
     logger.info({ err }, 'Error setting new package version');
diff --git a/test/manager/pip_requirements/__snapshots__/extract.spec.js.snap b/test/manager/pip_requirements/__snapshots__/extract.spec.js.snap
index f932fa4a6c..24c6295c77 100644
--- a/test/manager/pip_requirements/__snapshots__/extract.spec.js.snap
+++ b/test/manager/pip_requirements/__snapshots__/extract.spec.js.snap
@@ -8,21 +8,27 @@ Object {
       "datasource": "pypi",
       "depName": "some-package",
       "fromVersion": "0.3.1",
-      "lineNumber": 2,
+      "managerData": Object {
+        "lineNumber": 2,
+      },
     },
     Object {
       "currentValue": "==1.0.0",
       "datasource": "pypi",
       "depName": "some-other-package",
       "fromVersion": "1.0.0",
-      "lineNumber": 3,
+      "managerData": Object {
+        "lineNumber": 3,
+      },
     },
     Object {
       "currentValue": "==1.9",
       "datasource": "pypi",
       "depName": "not_semver",
       "fromVersion": "1.9",
-      "lineNumber": 4,
+      "managerData": Object {
+        "lineNumber": 4,
+      },
     },
   ],
   "registryUrls": Array [
@@ -38,35 +44,45 @@ Array [
     "datasource": "pypi",
     "depName": "Django",
     "fromVersion": "1",
-    "lineNumber": 0,
+    "managerData": Object {
+      "lineNumber": 0,
+    },
   },
   Object {
     "currentValue": "==0.6.27",
     "datasource": "pypi",
     "depName": "distribute",
     "fromVersion": "0.6.27",
-    "lineNumber": 1,
+    "managerData": Object {
+      "lineNumber": 1,
+    },
   },
   Object {
     "currentValue": "==0.2",
     "datasource": "pypi",
     "depName": "dj-database-url",
     "fromVersion": "0.2",
-    "lineNumber": 2,
+    "managerData": Object {
+      "lineNumber": 2,
+    },
   },
   Object {
     "currentValue": "==2.4.5",
     "datasource": "pypi",
     "depName": "psycopg2",
     "fromVersion": "2.4.5",
-    "lineNumber": 3,
+    "managerData": Object {
+      "lineNumber": 3,
+    },
   },
   Object {
     "currentValue": "==0.1.2",
     "datasource": "pypi",
     "depName": "wsgiref",
     "fromVersion": "0.1.2",
-    "lineNumber": 4,
+    "managerData": Object {
+      "lineNumber": 4,
+    },
   },
 ]
 `;
@@ -78,14 +94,18 @@ Array [
     "datasource": "pypi",
     "depName": "Django",
     "fromVersion": "1.11.19",
-    "lineNumber": 0,
+    "managerData": Object {
+      "lineNumber": 0,
+    },
   },
   Object {
     "currentValue": "==0.6.27",
     "datasource": "pypi",
     "depName": "distribute",
     "fromVersion": "0.6.27",
-    "lineNumber": 1,
+    "managerData": Object {
+      "lineNumber": 1,
+    },
     "skipReason": "ignored",
   },
   Object {
@@ -93,21 +113,27 @@ Array [
     "datasource": "pypi",
     "depName": "dj-database-url",
     "fromVersion": "0.2",
-    "lineNumber": 2,
+    "managerData": Object {
+      "lineNumber": 2,
+    },
   },
   Object {
     "currentValue": "==2.4.5",
     "datasource": "pypi",
     "depName": "psycopg2",
     "fromVersion": "2.4.5",
-    "lineNumber": 3,
+    "managerData": Object {
+      "lineNumber": 3,
+    },
   },
   Object {
     "currentValue": "==0.1.2",
     "datasource": "pypi",
     "depName": "wsgiref",
     "fromVersion": "0.1.2",
-    "lineNumber": 4,
+    "managerData": Object {
+      "lineNumber": 4,
+    },
   },
 ]
 `;
@@ -120,41 +146,53 @@ Object {
       "datasource": "pypi",
       "depName": "Django",
       "fromVersion": "2.0.12",
-      "lineNumber": 4,
+      "managerData": Object {
+        "lineNumber": 4,
+      },
     },
     Object {
       "currentValue": "==4.1.1",
       "datasource": "pypi",
       "depName": "celery",
       "fromVersion": "4.1.1",
-      "lineNumber": 5,
+      "managerData": Object {
+        "lineNumber": 5,
+      },
     },
     Object {
       "currentValue": " == 3.2.1",
       "datasource": "pypi",
       "depName": "foo",
-      "lineNumber": 6,
+      "managerData": Object {
+        "lineNumber": 6,
+      },
     },
     Object {
       "currentValue": "==0.3.1",
       "datasource": "pypi",
       "depName": "some-package",
       "fromVersion": "0.3.1",
-      "lineNumber": 7,
+      "managerData": Object {
+        "lineNumber": 7,
+      },
     },
     Object {
       "currentValue": "==1.0.0",
       "datasource": "pypi",
       "depName": "some-other-package",
       "fromVersion": "1.0.0",
-      "lineNumber": 8,
+      "managerData": Object {
+        "lineNumber": 8,
+      },
     },
     Object {
       "currentValue": "==1.9",
       "datasource": "pypi",
       "depName": "not_semver",
       "fromVersion": "1.9",
-      "lineNumber": 9,
+      "managerData": Object {
+        "lineNumber": 9,
+      },
     },
   ],
   "registryUrls": Array [
@@ -172,41 +210,53 @@ Object {
       "datasource": "pypi",
       "depName": "Django",
       "fromVersion": "2.0.12",
-      "lineNumber": 3,
+      "managerData": Object {
+        "lineNumber": 3,
+      },
     },
     Object {
       "currentValue": "==4.1.1",
       "datasource": "pypi",
       "depName": "celery",
       "fromVersion": "4.1.1",
-      "lineNumber": 4,
+      "managerData": Object {
+        "lineNumber": 4,
+      },
     },
     Object {
       "currentValue": " == 3.2.1",
       "datasource": "pypi",
       "depName": "foo",
-      "lineNumber": 5,
+      "managerData": Object {
+        "lineNumber": 5,
+      },
     },
     Object {
       "currentValue": "==0.3.1",
       "datasource": "pypi",
       "depName": "some-package",
       "fromVersion": "0.3.1",
-      "lineNumber": 6,
+      "managerData": Object {
+        "lineNumber": 6,
+      },
     },
     Object {
       "currentValue": "==1.0.0",
       "datasource": "pypi",
       "depName": "some-other-package",
       "fromVersion": "1.0.0",
-      "lineNumber": 7,
+      "managerData": Object {
+        "lineNumber": 7,
+      },
     },
     Object {
       "currentValue": "==1.9",
       "datasource": "pypi",
       "depName": "not_semver",
       "fromVersion": "1.9",
-      "lineNumber": 8,
+      "managerData": Object {
+        "lineNumber": 8,
+      },
     },
   ],
   "registryUrls": Array [
@@ -224,41 +274,53 @@ Object {
       "datasource": "pypi",
       "depName": "Django",
       "fromVersion": "2.0.12",
-      "lineNumber": 3,
+      "managerData": Object {
+        "lineNumber": 3,
+      },
     },
     Object {
       "currentValue": "==4.1.1",
       "datasource": "pypi",
       "depName": "celery",
       "fromVersion": "4.1.1",
-      "lineNumber": 4,
+      "managerData": Object {
+        "lineNumber": 4,
+      },
     },
     Object {
       "currentValue": " == 3.2.1",
       "datasource": "pypi",
       "depName": "foo",
-      "lineNumber": 5,
+      "managerData": Object {
+        "lineNumber": 5,
+      },
     },
     Object {
       "currentValue": "==0.3.1",
       "datasource": "pypi",
       "depName": "some-package",
       "fromVersion": "0.3.1",
-      "lineNumber": 6,
+      "managerData": Object {
+        "lineNumber": 6,
+      },
     },
     Object {
       "currentValue": "==1.0.0",
       "datasource": "pypi",
       "depName": "some-other-package",
       "fromVersion": "1.0.0",
-      "lineNumber": 7,
+      "managerData": Object {
+        "lineNumber": 7,
+      },
     },
     Object {
       "currentValue": "==1.9",
       "datasource": "pypi",
       "depName": "not_semver",
       "fromVersion": "1.9",
-      "lineNumber": 8,
+      "managerData": Object {
+        "lineNumber": 8,
+      },
     },
   ],
   "registryUrls": Array [
@@ -276,20 +338,26 @@ Object {
       "datasource": "pypi",
       "depName": "Django",
       "fromVersion": "2.0.12",
-      "lineNumber": 1,
+      "managerData": Object {
+        "lineNumber": 1,
+      },
     },
     Object {
       "currentValue": "==4.1.1",
       "datasource": "pypi",
       "depName": "celery",
       "fromVersion": "4.1.1",
-      "lineNumber": 2,
+      "managerData": Object {
+        "lineNumber": 2,
+      },
     },
     Object {
       "currentValue": " == 3.2.1",
       "datasource": "pypi",
       "depName": "foo",
-      "lineNumber": 3,
+      "managerData": Object {
+        "lineNumber": 3,
+      },
     },
   ],
   "registryUrls": Array [
diff --git a/test/manager/pip_requirements/update.spec.js b/test/manager/pip_requirements/update.spec.js
index 8a25d15ed5..d2d0056113 100644
--- a/test/manager/pip_requirements/update.spec.js
+++ b/test/manager/pip_requirements/update.spec.js
@@ -33,7 +33,7 @@ describe('manager/pip_requirements/update', () => {
     it('replaces existing value', () => {
       const upgrade = {
         depName: 'some-package',
-        lineNumber: 2,
+        managerData: { lineNumber: 2 },
         newValue: '==1.0.1',
       };
       const res = updateDependency(requirements, upgrade);
@@ -48,7 +48,7 @@ describe('manager/pip_requirements/update', () => {
     it('replaces existing value with comment', () => {
       const upgrade = {
         depName: 'psycopg2',
-        lineNumber: 3,
+        managerData: { lineNumber: 3 },
         newValue: '==2.4.6',
       };
       const res = updateDependency(requirements3, upgrade);
@@ -60,7 +60,7 @@ describe('manager/pip_requirements/update', () => {
     it('replaces existing value with extras', () => {
       const upgrade = {
         depName: 'celery',
-        lineNumber: 1,
+        managerData: { lineNumber: 1 },
         newValue: '==4.1.2',
       };
       const res = updateDependency(requirements4, upgrade);
@@ -71,7 +71,7 @@ describe('manager/pip_requirements/update', () => {
     it('handles dependencies in different lines in setup.py', () => {
       const upgrade = {
         depName: 'requests',
-        lineNumber: 64,
+        managerData: { lineNumber: 64 },
         newValue: '>=2.11.0',
       };
       const res = updateDependency(setupPy1, upgrade);
@@ -82,7 +82,7 @@ describe('manager/pip_requirements/update', () => {
     it('handles multiple dependencies in same lines in setup.py', () => {
       const upgrade = {
         depName: 'pycryptodome',
-        lineNumber: 60,
+        managerData: { lineNumber: 60 },
         newValue: '==3.8.0',
       };
       const res = updateDependency(setupPy2, upgrade);
-- 
GitLab