From 1e747648896b5a3ac83a6dab75e688b3c3703c99 Mon Sep 17 00:00:00 2001 From: Sergei Zharinov <zharinov@users.noreply.github.com> Date: Sun, 2 Oct 2022 09:39:43 +0300 Subject: [PATCH] refactor(git): Refactor push-related error handling (#18075) --- lib/util/git/errors.spec.ts | 15 ++++++++++++--- lib/util/git/index.ts | 3 ++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/util/git/errors.spec.ts b/lib/util/git/errors.spec.ts index 39d3f95faa..19e3696a6e 100644 --- a/lib/util/git/errors.spec.ts +++ b/lib/util/git/errors.spec.ts @@ -1,11 +1,20 @@ import { bulkChangesDisallowed } from './error'; +const errorMsg = ` +To https://github.com/the-org/st-mono.git +!\t:refs/renovate/branches/renovate/foo\t[remote failure] (remote failed to report status) +!\t:refs/renovate/branches/renovate/bar\t[remote failure] (remote failed to report status) +Done +Pushing to https://github.com/foo/bar.git +POST git-receive-pack (1234 bytes) +remote: Repository policies do not allow pushes that update more than 2 branches or tags. +error: failed to push some refs to 'https://github.com/foo/bar.git' +`.trimStart(); + describe('util/git/errors', () => { describe('bulkChangesDisallowed', () => { it('should match the expected error', () => { - const err = new Error( - "To https://github.com/the-org/st-mono.git\n!\t:refs/renovate/branches/renovate/Dependencies-mobile-ios-minor\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/database-mongodb-4.x\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-add-field-major-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-add-field-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-count-characters-major-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-count-characters-pin-dependencies\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-count-characters-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-counter-major-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-counter-pin-dependencies\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-counter-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-header-major-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-header-pin-dependencies\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-header-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-mega-menu-major-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-mega-menu-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-nav-scroller-major-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-nav-scroller-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-quantity-counter-major-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-scrollspy-major-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-scrollspy-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-show-animation-major-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-show-animation-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-step-form-major-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-sticky-block-major-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-sticky-block-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-switch-major-web-shared-norm\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-switch-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-toggle-state-major-web-shared-norm\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-toggle-state-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-video-bg-major-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-video-bg-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-video-player-major-web-shared-norm\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/hs-video-player-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/infrastructure-mongodbatlas-1.x\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/infrastructure-random-3.x\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/web-blog-vapor-leaf-4.x\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/web-blog-vapor-vapor-4.x\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/web-shared-major-web-shared-dev\t[remote failure] (remote failed to report status)\n!\t:refs/renovate/branches/renovate/web-shared-web-shared-dev\t[remote failure] (remote failed to report status)\nDone\nPushing to https://github.com/the-org/st-mono.git\nPOST git-receive-pack (5863 bytes)\nremote: Repository policies do not allow pushes that update more than 2 branches or tags.\nerror: failed to push some refs to 'https://github.com/the-org/st-mono.git'\n" - ); + const err = new Error(errorMsg); expect(bulkChangesDisallowed(err)).toBe(true); }); }); diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts index 93cfad07e0..98544d3855 100644 --- a/lib/util/git/index.ts +++ b/lib/util/git/index.ts @@ -1193,7 +1193,8 @@ export async function clearRenovateRefs(): Promise<void> { try { const pushOpts = ['--delete', 'origin', ...obsoleteRefs]; await git.push(pushOpts); - } catch (err) /* istanbul ignore next */ { + } catch (err) { + /* istanbul ignore else */ if (bulkChangesDisallowed(err)) { for (const ref of obsoleteRefs) { const pushOpts = ['--delete', 'origin', ref]; -- GitLab