From 0e658843a2ebd63491337fe25fbb63ae4657eb30 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Tue, 27 Mar 2018 16:02:56 +0200
Subject: [PATCH] =?UTF-8?q?fix:=20don=E2=80=99t=20raise=20config=20warning?=
 =?UTF-8?q?=20issue=20when=20onboarding?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 lib/manager/npm/package.js                        | 15 +++++++++++++--
 .../npm/__snapshots__/package.spec.js.snap        | 10 ++++++++++
 test/manager/npm/package.spec.js                  | 14 ++++++--------
 3 files changed, 29 insertions(+), 10 deletions(-)

diff --git a/lib/manager/npm/package.js b/lib/manager/npm/package.js
index 22e8f774ba..8201e950f8 100644
--- a/lib/manager/npm/package.js
+++ b/lib/manager/npm/package.js
@@ -45,8 +45,8 @@ async function getPackageUpdates(config) {
         )}`
       );
     }
-  } else {
-    if (config.updateLockFiles && config.yarnLock) {
+  } else if (config.updateLockFiles && config.yarnLock) {
+    if (config.repoIsOnboarded) {
       // Config error
       const error = new Error('config-validation');
       error.configFile = config.packageFile;
@@ -56,7 +56,18 @@ async function getPackageUpdates(config) {
       error.validationMessage =
         'This dependency lookup failure will cause all lock file updates to fail. Please either remove the dependency, or remove the lock file, or add npm authentication, or set `updateLockFiles` to false in your config.';
       throw error;
+    } else {
+      // If dependency lookup fails then error and return
+      const result = {
+        type: 'error',
+        message: `Failed to look up dependency ${
+          config.depName
+        }. This will prevent yarn.lock from being updated.`,
+      };
+      results = [result];
+      logger.info({ dependency: config.depName }, result.message);
     }
+  } else {
     // If dependency lookup fails then warn and return
     const result = {
       type: 'warning',
diff --git a/test/manager/npm/__snapshots__/package.spec.js.snap b/test/manager/npm/__snapshots__/package.spec.js.snap
index b3802a82da..09d27c448c 100644
--- a/test/manager/npm/__snapshots__/package.spec.js.snap
+++ b/test/manager/npm/__snapshots__/package.spec.js.snap
@@ -6,6 +6,16 @@ Array [
 ]
 `;
 
+exports[`lib/workers/package/npm getPackageUpdates returns error if no npm scoped dep found 1`] = `
+Array [
+  Object {
+    "message": "Failed to look up dependency @foo/something. This will prevent yarn.lock from being updated.",
+    "repositoryUrl": null,
+    "type": "error",
+  },
+]
+`;
+
 exports[`lib/workers/package/npm getPackageUpdates returns warning if no npm dep found 1`] = `
 Array [
   Object {
diff --git a/test/manager/npm/package.spec.js b/test/manager/npm/package.spec.js
index 38edda9413..1065b840a8 100644
--- a/test/manager/npm/package.spec.js
+++ b/test/manager/npm/package.spec.js
@@ -48,7 +48,8 @@ describe('lib/workers/package/npm', () => {
       expect(res[0].type).toEqual('warning');
       expect(npmApi.getDependency.mock.calls.length).toBe(1);
     });
-    it('throws error if no npm dep found and yarn.lock', async () => {
+    it('throws error if onboarded and no npm dep found and yarn.lock', async () => {
+      config.repoIsOnboarded = true;
       config.yarnLock = 'some package lock';
       let e;
       try {
@@ -59,15 +60,12 @@ describe('lib/workers/package/npm', () => {
       expect(e).toBeDefined();
     });
     it('returns error if no npm scoped dep found', async () => {
+      config.repoIsOnboarded = false;
       config.depName = '@foo/something';
       config.yarnLock = '# some yarn lock';
-      let e;
-      try {
-        await npm.getPackageUpdates(config);
-      } catch (err) {
-        e = err;
-      }
-      expect(e).toBeDefined();
+      const res = await npm.getPackageUpdates(config);
+      expect(res).toHaveLength(1);
+      expect(res).toMatchSnapshot();
     });
     it('returns warning if warning found', async () => {
       npmApi.getDependency.mockReturnValueOnce({});
-- 
GitLab