From bea96d0d51db3e8308baeb47a9fe28fe7c8836fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Louv-Jansen?= Date: Thu, 4 Apr 2024 22:20:00 +0200 Subject: [PATCH] Handle null pointer when merge commit is missing (#498) --- src/lib/prompts.ts | 2 +- src/lib/sourceCommit/getPullRequestStates.ts | 10 ++++++---- src/lib/sourceCommit/parseSourceCommit.ts | 17 ++++++++++------- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/lib/prompts.ts b/src/lib/prompts.ts index 453c8d60..9b36f91c 100644 --- a/src/lib/prompts.ts +++ b/src/lib/prompts.ts @@ -122,7 +122,7 @@ export function getChoicesForCommitPrompt( name = `${position}${message} ${pullStatus}`; } - const short = c.sourcePullRequest + const short = c.sourcePullRequest?.mergeCommit ? `#${c.sourcePullRequest.number} (${getShortSha( c.sourcePullRequest.mergeCommit.sha, )})` diff --git a/src/lib/sourceCommit/getPullRequestStates.ts b/src/lib/sourceCommit/getPullRequestStates.ts index 2d6acad8..119d9a8f 100644 --- a/src/lib/sourceCommit/getPullRequestStates.ts +++ b/src/lib/sourceCommit/getPullRequestStates.ts @@ -93,10 +93,12 @@ export function getPullRequestStates({ state: 'MERGED' as const, url: sourcePullRequest.url, number: sourcePullRequest.number, - mergeCommit: { - message: sourcePullRequest.mergeCommit.message, - sha: sourcePullRequest.mergeCommit.sha, - }, + mergeCommit: sourcePullRequest.mergeCommit + ? { + message: sourcePullRequest.mergeCommit.message, + sha: sourcePullRequest.mergeCommit.sha, + } + : undefined, }; } diff --git a/src/lib/sourceCommit/parseSourceCommit.ts b/src/lib/sourceCommit/parseSourceCommit.ts index cdd6de4b..b8ba7dac 100644 --- a/src/lib/sourceCommit/parseSourceCommit.ts +++ b/src/lib/sourceCommit/parseSourceCommit.ts @@ -25,7 +25,7 @@ export interface Commit { labels: string[]; number: number; url: string; - mergeCommit: { + mergeCommit?: { message: string; sha: string; }; @@ -45,7 +45,7 @@ export interface SourcePullRequestNode { name: string; }[]; }; - mergeCommit: { + mergeCommit?: { remoteConfigHistory: RemoteConfigHistory['remoteConfigHistory']; sha: string; message: string; @@ -171,10 +171,12 @@ export function parseSourceCommit({ title: sourcePullRequest.title, number: sourcePullRequest.number, url: sourcePullRequest.url, - mergeCommit: { - message: sourcePullRequest.mergeCommit.message, - sha: sourcePullRequest.mergeCommit.sha, - }, + mergeCommit: sourcePullRequest.mergeCommit + ? { + message: sourcePullRequest.mergeCommit.message, + sha: sourcePullRequest.mergeCommit.sha, + } + : undefined, } : undefined, sourceBranch: sourcePullRequest?.baseRefName ?? options.sourceBranch, @@ -278,7 +280,8 @@ function getSourceCommitBranchLabelMapping( const sourcePullRequest = getSourcePullRequest(sourceCommit); const remoteConfig = - sourcePullRequest?.mergeCommit.remoteConfigHistory.edges?.[0]?.remoteConfig; + sourcePullRequest?.mergeCommit?.remoteConfigHistory.edges?.[0] + ?.remoteConfig; if (remoteConfig) { return parseRemoteConfigFile(remoteConfig)?.branchLabelMapping;