From ec46ec6a4af7c72bdd3cac648d6de8ccec398ff5 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Wed, 12 Jun 2019 16:14:44 +0200
Subject: [PATCH] fix(gitFs): catch more git errors

---
 lib/workers/repository/error.js       | 12 ++++++++++--
 test/workers/repository/error.spec.js |  9 ++++++++-
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/lib/workers/repository/error.js b/lib/workers/repository/error.js
index f26634b75f..050bee863a 100644
--- a/lib/workers/repository/error.js
+++ b/lib/workers/repository/error.js
@@ -121,8 +121,16 @@ async function handleError(config, err) {
     return err.message;
   }
   if (err.message.includes('The requested URL returned error: 5')) {
-    logger.debug({ err }, 'git 5xx error');
-    logger.warn('Git error - aborting');
+    logger.warn({ err }, 'Git error - aborting');
+    delete config.branchList; // eslint-disable-line no-param-reassign
+    // rewrite this error
+    return 'platform-failure';
+  }
+  if (
+    err.message.includes('The remote end hung up unexpectedly') ||
+    err.message.includes('access denied or repository not exported')
+  ) {
+    logger.warn({ err }, 'Git error - aborting');
     delete config.branchList; // eslint-disable-line no-param-reassign
     // rewrite this error
     return 'platform-failure';
diff --git a/test/workers/repository/error.spec.js b/test/workers/repository/error.spec.js
index 24f0b56a64..b0eff479f0 100644
--- a/test/workers/repository/error.spec.js
+++ b/test/workers/repository/error.spec.js
@@ -41,13 +41,20 @@ describe('workers/repository/error', () => {
         expect(res).toEqual(err);
       });
     });
-    it('rewrites git error', async () => {
+    it('rewrites git 5xx error', async () => {
       const gitError = new Error(
         "fatal: unable to access 'https://**redacted**@gitlab.com/learnox/learnox.git/': The requested URL returned error: 500\n"
       );
       const res = await handleError(config, gitError);
       expect(res).toEqual('platform-failure');
     });
+    it('rewrites git remote error', async () => {
+      const gitError = new Error(
+        'fatal: remote error: access denied or repository not exported: /b/nw/bd/27/47/159945428/108610112.git\n'
+      );
+      const res = await handleError(config, gitError);
+      expect(res).toEqual('platform-failure');
+    });
     it('handles unknown error', async () => {
       const res = await handleError(config, new Error('abcdefg'));
       expect(res).toEqual('unknown-error');
-- 
GitLab