From 93101ca9612f91454f721310ab1a2c3022341436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Louv-Jansen?= Date: Tue, 5 Mar 2024 13:55:39 +0100 Subject: [PATCH] Avoid double-encoding backticks in title template (#495) --- src/lib/github/v3/createPullRequest.test.ts | 38 +++++++++++++++++++++ src/lib/github/v3/createPullRequest.ts | 6 ++-- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/src/lib/github/v3/createPullRequest.test.ts b/src/lib/github/v3/createPullRequest.test.ts index 235a398d..c38754f9 100644 --- a/src/lib/github/v3/createPullRequest.test.ts +++ b/src/lib/github/v3/createPullRequest.test.ts @@ -560,4 +560,42 @@ describe('getTitle', () => { 'Branch: "7.x". Messages: My commit message (#55) | Another commit message (#56)', ); }); + + it('support backticks', () => { + const options = { + prTitle: '[{{targetBranch}}] {{commitMessages}}', + } as ValidConfigOptions; + + const commits = [ + { + author: { + email: 'soren.louv@elastic.co', + name: 'Søren Louv-Jansen', + }, + sourceBranch: 'main', + sourcePullRequest: { + labels: [], + title: 'My PR Title', + number: 55, + url: 'https://github.com/backport-org/different-merge-strategies/pull/55', + mergeCommit: { + sha: 'abcdefghi', + message: 'My commit message (#55)', + }, + }, + suggestedTargetBranches: [], + sourceCommit: { + branchLabelMapping: {}, + committedDate: '2020', + sha: 'abcdefghi', + message: 'My commit message with `backticks` (#55)', + }, + targetPullRequestStates: [], + }, + ]; + + expect(getTitle({ options, commits, targetBranch: '7.x' })).toEqual( + '[7.x] My commit message with `backticks` (#55)', + ); + }); }); diff --git a/src/lib/github/v3/createPullRequest.ts b/src/lib/github/v3/createPullRequest.ts index d6ecb75b..840648d4 100644 --- a/src/lib/github/v3/createPullRequest.ts +++ b/src/lib/github/v3/createPullRequest.ts @@ -163,9 +163,9 @@ export function getTitle({ const defaultPrTitle = '[{{targetBranch}}] {{commitMessages}}'; - const template = Handlebars.compile(options.prTitle ?? defaultPrTitle); - - commits[0].author.name; + const template = Handlebars.compile(options.prTitle ?? defaultPrTitle, { + noEscape: true, + }); return template({ sourcePullRequest: commits[0].sourcePullRequest, // assume that all commits are from the same PR