From c711fb4cea68058ad7f45cb18d27f2926542067a Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Fri, 8 Feb 2019 14:50:06 +0100
Subject: [PATCH] refactor: getArtifacts returns an array

---
 lib/manager/bundler/artifacts.js              | 12 ++++++----
 lib/manager/cargo/artifacts.js                | 12 ++++++----
 lib/manager/composer/artifacts.js             | 24 +++++++++++--------
 lib/manager/gomod/artifacts.js                | 24 +++++++++++--------
 lib/manager/pipenv/artifacts.js               | 24 +++++++++++--------
 lib/workers/branch/get-updated.js             | 17 +++++++------
 .../__snapshots__/artifacts.spec.js.snap      | 12 ++++++----
 .../__snapshots__/artifacts.spec.js.snap      | 24 +++++++++++--------
 .../__snapshots__/artifacts.spec.js.snap      | 12 ++++++----
 .../__snapshots__/artifacts.spec.js.snap      | 12 ++++++----
 test/workers/branch/get-updated.spec.js       | 24 +++++++++++--------
 11 files changed, 115 insertions(+), 82 deletions(-)

diff --git a/lib/manager/bundler/artifacts.js b/lib/manager/bundler/artifacts.js
index 86b3eee06e..57e38f37d3 100644
--- a/lib/manager/bundler/artifacts.js
+++ b/lib/manager/bundler/artifacts.js
@@ -144,12 +144,14 @@ async function getArtifacts(
       }
     }
     logger.debug('Returning updated Gemfile.lock');
-    return {
-      file: {
-        name: lockFileName,
-        contents: await fs.readFile(localLockFileName, 'utf8'),
+    return [
+      {
+        file: {
+          name: lockFileName,
+          contents: await fs.readFile(localLockFileName, 'utf8'),
+        },
       },
-    };
+    ];
   } catch (err) {
     if (
       err.stdout &&
diff --git a/lib/manager/cargo/artifacts.js b/lib/manager/cargo/artifacts.js
index 723409b2d1..48e287f091 100644
--- a/lib/manager/cargo/artifacts.js
+++ b/lib/manager/cargo/artifacts.js
@@ -15,11 +15,13 @@ async function getArtifacts(cargoTomlFileName) {
       { err, message: err.message },
       'Failed to update Cargo lock file'
     );
-    return {
-      artifactError: {
-        lockFile: cargoLockFileName,
-        stderr: err.message,
+    return [
+      {
+        artifactError: {
+          lockFile: cargoLockFileName,
+          stderr: err.message,
+        },
       },
-    };
+    ];
   }
 }
diff --git a/lib/manager/composer/artifacts.js b/lib/manager/composer/artifacts.js
index 5c3d893d67..a244b34db3 100644
--- a/lib/manager/composer/artifacts.js
+++ b/lib/manager/composer/artifacts.js
@@ -151,12 +151,14 @@ async function getArtifacts(
       }
     }
     logger.debug('Returning updated composer.lock');
-    return {
-      file: {
-        name: lockFileName,
-        contents: await fs.readFile(localLockFileName, 'utf8'),
+    return [
+      {
+        file: {
+          name: lockFileName,
+          contents: await fs.readFile(localLockFileName, 'utf8'),
+        },
       },
-    };
+    ];
   } catch (err) {
     if (
       err.message &&
@@ -171,11 +173,13 @@ async function getArtifacts(
         'Failed to generate composer.lock'
       );
     }
-    return {
-      artifactError: {
-        lockFile: lockFileName,
-        stderr: err.message,
+    return [
+      {
+        artifactError: {
+          lockFile: lockFileName,
+          stderr: err.message,
+        },
       },
-    };
+    ];
   }
 }
diff --git a/lib/manager/gomod/artifacts.js b/lib/manager/gomod/artifacts.js
index f21f604dfb..3437d3d0cb 100644
--- a/lib/manager/gomod/artifacts.js
+++ b/lib/manager/gomod/artifacts.js
@@ -93,19 +93,23 @@ async function getArtifacts(
       }
     }
     logger.debug('Returning updated go.sum');
-    return {
-      file: {
-        name: sumFileName,
-        contents: await fs.readFile(localGoSumFileName, 'utf8'),
+    return [
+      {
+        file: {
+          name: sumFileName,
+          contents: await fs.readFile(localGoSumFileName, 'utf8'),
+        },
       },
-    };
+    ];
   } catch (err) {
     logger.warn({ err, message: err.message }, 'Failed to update go.sum');
-    return {
-      artifactError: {
-        lockFile: sumFileName,
-        stderr: err.message,
+    return [
+      {
+        artifactError: {
+          lockFile: sumFileName,
+          stderr: err.message,
+        },
       },
-    };
+    ];
   }
 }
diff --git a/lib/manager/pipenv/artifacts.js b/lib/manager/pipenv/artifacts.js
index 1dd4a10e36..228f490ae6 100644
--- a/lib/manager/pipenv/artifacts.js
+++ b/lib/manager/pipenv/artifacts.js
@@ -86,19 +86,23 @@ async function getArtifacts(
       }
     }
     logger.debug('Returning updated Pipfile.lock');
-    return {
-      file: {
-        name: lockFileName,
-        contents: await fs.readFile(localLockFileName, 'utf8'),
+    return [
+      {
+        file: {
+          name: lockFileName,
+          contents: await fs.readFile(localLockFileName, 'utf8'),
+        },
       },
-    };
+    ];
   } catch (err) {
     logger.warn({ err, message: err.message }, 'Failed to update Pipfile.lock');
-    return {
-      artifactError: {
-        lockFile: lockFileName,
-        stderr: err.message,
+    return [
+      {
+        artifactError: {
+          lockFile: lockFileName,
+          stderr: err.message,
+        },
       },
-    };
+    ];
   }
 }
diff --git a/lib/workers/branch/get-updated.js b/lib/workers/branch/get-updated.js
index 5896738578..62e396bedf 100644
--- a/lib/workers/branch/get-updated.js
+++ b/lib/workers/branch/get-updated.js
@@ -1,3 +1,4 @@
+const is = require('@sindresorhus/is');
 const { get } = require('../../manager');
 
 module.exports = {
@@ -63,18 +64,20 @@ async function getUpdatedPackageFiles(config) {
     const updatedDeps = packageFileUpdatedDeps[packageFile.name];
     const getArtifacts = get(manager, 'getArtifacts');
     if (getArtifacts) {
-      const res = await getArtifacts(
+      const results = await getArtifacts(
         packageFile.name,
         updatedDeps,
         packageFile.contents,
         config
       );
-      if (res) {
-        const { file, artifactError } = res;
-        if (file) {
-          updatedArtifacts.push(file);
-        } else if (artifactError) {
-          artifactErrors.push(artifactError);
+      if (is.nonEmptyArray(results)) {
+        for (const res of results) {
+          const { file, artifactError } = res;
+          if (file) {
+            updatedArtifacts.push(file);
+          } else if (artifactError) {
+            artifactErrors.push(artifactError);
+          }
         }
       }
     }
diff --git a/test/manager/cargo/__snapshots__/artifacts.spec.js.snap b/test/manager/cargo/__snapshots__/artifacts.spec.js.snap
index f8966d6004..b5ff11202e 100644
--- a/test/manager/cargo/__snapshots__/artifacts.spec.js.snap
+++ b/test/manager/cargo/__snapshots__/artifacts.spec.js.snap
@@ -1,10 +1,12 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
 exports[`cargo.getArtifacts() catches errors 1`] = `
-Object {
-  "artifactError": Object {
-    "lockFile": undefined,
-    "stderr": "Cannot read property 'replace' of undefined",
+Array [
+  Object {
+    "artifactError": Object {
+      "lockFile": undefined,
+      "stderr": "Cannot read property 'replace' of undefined",
+    },
   },
-}
+]
 `;
diff --git a/test/manager/composer/__snapshots__/artifacts.spec.js.snap b/test/manager/composer/__snapshots__/artifacts.spec.js.snap
index d5576599a9..f4b89c9286 100644
--- a/test/manager/composer/__snapshots__/artifacts.spec.js.snap
+++ b/test/manager/composer/__snapshots__/artifacts.spec.js.snap
@@ -1,19 +1,23 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
 exports[`.getArtifacts() catches errors 1`] = `
-Object {
-  "artifactError": Object {
-    "lockFile": "composer.lock",
-    "stderr": "not found",
+Array [
+  Object {
+    "artifactError": Object {
+      "lockFile": "composer.lock",
+      "stderr": "not found",
+    },
   },
-}
+]
 `;
 
 exports[`.getArtifacts() catches unmet requirements errors 1`] = `
-Object {
-  "artifactError": Object {
-    "lockFile": "composer.lock",
-    "stderr": "fooYour requirements could not be resolved to an installable set of packages.bar",
+Array [
+  Object {
+    "artifactError": Object {
+      "lockFile": "composer.lock",
+      "stderr": "fooYour requirements could not be resolved to an installable set of packages.bar",
+    },
   },
-}
+]
 `;
diff --git a/test/manager/gomod/__snapshots__/artifacts.spec.js.snap b/test/manager/gomod/__snapshots__/artifacts.spec.js.snap
index 15e0db1f79..1ea549e9ed 100644
--- a/test/manager/gomod/__snapshots__/artifacts.spec.js.snap
+++ b/test/manager/gomod/__snapshots__/artifacts.spec.js.snap
@@ -1,10 +1,12 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
 exports[`.getArtifacts() catches errors 1`] = `
-Object {
-  "artifactError": Object {
-    "lockFile": "go.sum",
-    "stderr": "This update totally doesnt work",
+Array [
+  Object {
+    "artifactError": Object {
+      "lockFile": "go.sum",
+      "stderr": "This update totally doesnt work",
+    },
   },
-}
+]
 `;
diff --git a/test/manager/pipenv/__snapshots__/artifacts.spec.js.snap b/test/manager/pipenv/__snapshots__/artifacts.spec.js.snap
index 444dc17b12..29d6b76183 100644
--- a/test/manager/pipenv/__snapshots__/artifacts.spec.js.snap
+++ b/test/manager/pipenv/__snapshots__/artifacts.spec.js.snap
@@ -1,10 +1,12 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
 exports[`.getArtifacts() catches errors 1`] = `
-Object {
-  "artifactError": Object {
-    "lockFile": "Pipfile.lock",
-    "stderr": "not found",
+Array [
+  Object {
+    "artifactError": Object {
+      "lockFile": "Pipfile.lock",
+      "stderr": "not found",
+    },
   },
-}
+]
 `;
diff --git a/test/workers/branch/get-updated.spec.js b/test/workers/branch/get-updated.spec.js
index f1766028c3..19294d0b76 100644
--- a/test/workers/branch/get-updated.spec.js
+++ b/test/workers/branch/get-updated.spec.js
@@ -49,12 +49,14 @@ describe('workers/branch/get-updated', () => {
         manager: 'composer',
       });
       composer.updateDependency.mockReturnValue('some new content');
-      composer.getArtifacts.mockReturnValue({
-        file: {
-          name: 'composer.json',
-          contents: 'some contents',
+      composer.getArtifacts.mockReturnValue([
+        {
+          file: {
+            name: 'composer.json',
+            contents: 'some contents',
+          },
         },
-      });
+      ]);
       const res = await getUpdatedPackageFiles(config);
       expect(res).toMatchSnapshot();
     });
@@ -64,12 +66,14 @@ describe('workers/branch/get-updated', () => {
         manager: 'composer',
       });
       composer.updateDependency.mockReturnValue('some new content');
-      composer.getArtifacts.mockReturnValue({
-        artifactError: {
-          name: 'composer.lock',
-          stderr: 'some error',
+      composer.getArtifacts.mockReturnValue([
+        {
+          artifactError: {
+            name: 'composer.lock',
+            stderr: 'some error',
+          },
         },
-      });
+      ]);
       const res = await getUpdatedPackageFiles(config);
       expect(res).toMatchSnapshot();
     });
-- 
GitLab