From cc55f15f823cef45d7771e485787e457928285e1 Mon Sep 17 00:00:00 2001
From: RahulGautamSingh <rahultesnik@gmail.com>
Date: Fri, 15 Jul 2022 12:50:55 +0530
Subject: [PATCH] feat: semantic pr title for migrationPRs (#16490)

* generate PR title using ConfigMigrationCommitMessageFactory

* add test
---
 .../config-migration/pr/index.spec.ts         | 34 +++++++++++++++++++
 .../repository/config-migration/pr/index.ts   |  8 ++++-
 2 files changed, 41 insertions(+), 1 deletion(-)

diff --git a/lib/workers/repository/config-migration/pr/index.spec.ts b/lib/workers/repository/config-migration/pr/index.spec.ts
index fc1d52328a..40ffef860b 100644
--- a/lib/workers/repository/config-migration/pr/index.spec.ts
+++ b/lib/workers/repository/config-migration/pr/index.spec.ts
@@ -169,6 +169,40 @@ describe('workers/repository/config-migration/pr/index', () => {
       expect(platform.createPr.mock.calls[0][0].prBody).toMatchSnapshot();
     });
 
+    it('creates non-semantic PR title', async () => {
+      await ensureConfigMigrationPr(
+        {
+          ...config,
+          prHeader: '\r\r\nThis should not be the first line of the PR',
+          prFooter:
+            'There should be several empty lines at the end of the PR\r\n\n\n',
+        },
+        migratedData
+      );
+      expect(platform.createPr).toHaveBeenCalledTimes(1);
+      expect(platform.createPr.mock.calls[0][0].prTitle).toBe(
+        'Migrate config renovate.json'
+      );
+    });
+
+    it('creates semantic PR title', async () => {
+      await ensureConfigMigrationPr(
+        {
+          ...config,
+          commitMessagePrefix: '',
+          semanticCommits: 'enabled',
+          prHeader: '\r\r\nThis should not be the first line of the PR',
+          prFooter:
+            'There should be several empty lines at the end of the PR\r\n\n\n',
+        },
+        migratedData
+      );
+      expect(platform.createPr).toHaveBeenCalledTimes(1);
+      expect(platform.createPr.mock.calls[0][0].prTitle).toBe(
+        'chore(config): migrate config renovate.json'
+      );
+    });
+
     it('creates PR with footer and header using templating', async () => {
       config.baseBranch = 'some-branch';
       config.repository = 'test';
diff --git a/lib/workers/repository/config-migration/pr/index.ts b/lib/workers/repository/config-migration/pr/index.ts
index 02a3cbad3e..9bb580a002 100644
--- a/lib/workers/repository/config-migration/pr/index.ts
+++ b/lib/workers/repository/config-migration/pr/index.ts
@@ -11,6 +11,7 @@ import { joinUrlParts } from '../../../../util/url';
 import { getPlatformPrOptions } from '../../update/pr';
 import { prepareLabels } from '../../update/pr/labels';
 import { addParticipants } from '../../update/pr/participants';
+import { ConfigMigrationCommitMessageFactory } from '../branch/commit-message';
 import type { MigratedData } from '../branch/migrated-data';
 import { getMigrationBranchName } from '../common';
 
@@ -24,7 +25,12 @@ export async function ensureConfigMigrationPr(
     'configuration-options/#configmigration'
   );
   const branchName = getMigrationBranchName(config);
-  const prTitle = 'Migrate Renovate config';
+  const commitMessageFactory = new ConfigMigrationCommitMessageFactory(
+    config,
+    migratedConfigData.filename
+  );
+
+  const prTitle = commitMessageFactory.create().toString();
   const existingPr = await platform.getBranchPr(branchName);
   const filename = migratedConfigData.filename;
   logger.debug('Filling in config migration PR template');
-- 
GitLab