From 8a60f3214a2499a8a34285eead81b60f0b86a745 Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Thu, 11 Feb 2021 09:44:00 -0800 Subject: [PATCH] fix(owl-bot): fix two timing related bugs (#1413) --- packages/gcf-utils/src/gcf-utils.ts | 2 +- packages/owl-bot/src/handlers.ts | 7 ++++++- packages/owl-bot/test/owl-bot.ts | 28 ++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/packages/gcf-utils/src/gcf-utils.ts b/packages/gcf-utils/src/gcf-utils.ts index 28e0f8002c1..2cf1c25334e 100644 --- a/packages/gcf-utils/src/gcf-utils.ts +++ b/packages/gcf-utils/src/gcf-utils.ts @@ -151,7 +151,7 @@ export class GCFBootstrapper { this.probot = createProbot({overrides: cfg}); } - this.probot.load(appFn); + await this.probot.load(appFn); return this.probot; } diff --git a/packages/owl-bot/src/handlers.ts b/packages/owl-bot/src/handlers.ts index c5c75466f3a..813e89b76bd 100644 --- a/packages/owl-bot/src/handlers.ts +++ b/packages/owl-bot/src/handlers.ts @@ -66,7 +66,12 @@ export async function onPostProcessorPublished( installation: configs.installationId, }); // TODO(bcoe): switch updatedAt to date from PubSub payload: - createOnePullRequestForUpdatingLock(configsStore, octokit, repo, lock); + await createOnePullRequestForUpdatingLock( + configsStore, + octokit, + repo, + lock + ); } } } diff --git a/packages/owl-bot/test/owl-bot.ts b/packages/owl-bot/test/owl-bot.ts index fc7bc6f0e0b..5463c366d20 100644 --- a/packages/owl-bot/test/owl-bot.ts +++ b/packages/owl-bot/test/owl-bot.ts @@ -119,4 +119,32 @@ describe('owlBot', () => { githubMock.done(); }); }); + it('loads async app before handling request', async () => { + const probot = createProbot({ + overrides: { + githubToken: 'abc123', + Octokit: ProbotOctokit.defaults({ + retry: {enabled: false}, + throttle: {enabled: false}, + }), + }, + }); + await probot.load(async (app: Probot) => { + await new Promise(resolve => { + setTimeout(() => { + return resolve(undefined); + }, 100); + }); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + owlBot('abc123', app, sandbox.stub() as any); + }); + const loggerStub = sandbox.stub(logger, 'info'); + await probot.receive({ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + name: 'pubsub.message' as any, + payload: {}, + id: 'abc123', + }); + sandbox.assert.calledOnce(loggerStub); + }); });