Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(templates): allow upgrades in commitMessage and prTitle #29955

Merged
merged 11 commits into from
Jul 25, 2024
10 changes: 0 additions & 10 deletions lib/workers/repository/updates/__snapshots__/generate.spec.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ exports[`workers/repository/updates/generate generateBranchConfig() handles @typ
"upgrades": [
{
"branchName": "some-branch",
"commitMessage": "",
"depName": "some-dep",
"depTypes": undefined,
"displayFrom": "",
Expand All @@ -48,7 +47,6 @@ exports[`workers/repository/updates/generate generateBranchConfig() handles @typ
{
"branchName": "some-branch",
"commitBodyTable": true,
"commitMessage": "",
"datasource": "npm",
"depName": "some-dep",
"depTypes": undefined,
Expand All @@ -67,7 +65,6 @@ exports[`workers/repository/updates/generate generateBranchConfig() handles @typ
},
{
"branchName": "some-branch",
"commitMessage": "",
"depName": "@types/some-dep",
"depTypes": undefined,
"displayFrom": "",
Expand Down Expand Up @@ -116,7 +113,6 @@ exports[`workers/repository/updates/generate generateBranchConfig() handles @typ
{
"branchName": "some-branch",
"commitBodyTable": true,
"commitMessage": "",
"datasource": "npm",
"depName": "some-dep",
"depTypes": undefined,
Expand All @@ -133,7 +129,6 @@ exports[`workers/repository/updates/generate generateBranchConfig() handles @typ
{
"branchName": "some-branch",
"commitBodyTable": true,
"commitMessage": "",
"datasource": "npm",
"depName": "some-dep",
"depTypes": undefined,
Expand All @@ -150,7 +145,6 @@ exports[`workers/repository/updates/generate generateBranchConfig() handles @typ
{
"branchName": "some-branch",
"commitBodyTable": true,
"commitMessage": "",
"currentValue": "0.5.7",
"currentVersion": "0.5.7",
"datasource": "npm",
Expand Down Expand Up @@ -196,7 +190,6 @@ exports[`workers/repository/updates/generate generateBranchConfig() handles lock
"upgrades": [
{
"branchName": "some-branch",
"commitMessage": "",
"depTypes": undefined,
"displayFrom": "",
"displayPending": "",
Expand Down Expand Up @@ -242,7 +235,6 @@ exports[`workers/repository/updates/generate generateBranchConfig() handles lock
"upgrades": [
{
"branchName": "some-branch",
"commitMessage": "",
"currentValue": "^1.0.0",
"currentVersion": "1.0.0",
"depTypes": undefined,
Expand All @@ -263,5 +255,3 @@ exports[`workers/repository/updates/generate generateBranchConfig() handles lock
],
}
`;

exports[`workers/repository/updates/generate generateBranchConfig() handles upgrades: some-title (patch) 1`] = `"some-title (patch)"`;
112 changes: 109 additions & 3 deletions lib/workers/repository/updates/generate.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1058,16 +1058,22 @@ describe('workers/repository/updates/generate', () => {
});

it('handles upgrades', () => {
const branch = [
const baseBranchesUpdates = [
{
manager: 'some-manager',
depName: 'some-dep',
branchName: 'some-branch',
prTitle: 'some-title',
newValue: '0.6.0',
hasBaseBranches: true,
baseBranch: 'base-branch',
fileReplacePosition: 5,
},
];
expect(generateBranchConfig(baseBranchesUpdates)).toMatchObject({
prTitle: 'some-title (base-branch)',
});
const separateMinorUpdates = [
{
...requiredDefaultOptions,
manager: 'some-manager',
Expand All @@ -1080,6 +1086,11 @@ describe('workers/repository/updates/generate', () => {
updateType: 'minor' as UpdateType,
fileReplacePosition: 1,
},
];
expect(generateBranchConfig(separateMinorUpdates)).toMatchObject({
prTitle: 'some-title (minor)',
});
const separateMajorUpdates = [
{
...requiredDefaultOptions,
manager: 'some-manager',
Expand All @@ -1092,6 +1103,11 @@ describe('workers/repository/updates/generate', () => {
updateType: 'major' as UpdateType,
fileReplacePosition: 2,
},
];
expect(generateBranchConfig(separateMajorUpdates)).toMatchObject({
prTitle: 'some-title (major)',
});
const separatePatchUpdates = [
{
...requiredDefaultOptions,
manager: 'some-manager',
Expand All @@ -1105,9 +1121,19 @@ describe('workers/repository/updates/generate', () => {
updateType: 'patch' as UpdateType,
fileReplacePosition: 0,
},
];
expect(generateBranchConfig(separatePatchUpdates)).toMatchObject({
prTitle: 'some-title (patch)',
});
const branch = [
...baseBranchesUpdates,
...separateMinorUpdates,
...separateMajorUpdates,
...separatePatchUpdates,
] satisfies BranchUpgradeConfig[];
const res = generateBranchConfig(branch);
expect(res.prTitle).toMatchSnapshot('some-title (patch)');
expect(generateBranchConfig(branch)).toMatchObject({
prTitle: 'some-title (patch)',
});
});

it('combines prBodyColumns', () => {
Expand Down Expand Up @@ -1497,5 +1523,85 @@ describe('workers/repository/updates/generate', () => {
expect(upgrade.depTypes).toEqual(res.depTypes);
}
});

it('allows upgrades in commitMessage', () => {
const branch = [
{
...requiredDefaultOptions,
manager: 'some-manager',
branchName: 'dep1',
depName: 'dep1',
commitMessagePrefix:
'{{#each upgrades}}{{{prBodyDefinitions.Issue}}} {{/each}}',
newVersion: '1.2.0',
newValue: '1.2.0',
updateType: 'minor' as UpdateType,
fileReplacePosition: 1,
prBodyDefinitions: {
Issue: 'I1',
},
},
] satisfies BranchUpgradeConfig[];

expect(generateBranchConfig(branch)).toMatchObject({
commitMessage: 'I1 Update dependency dep1 to 1.2.0',
prTitle: 'I1 Update dependency dep1 to 1.2.0',
});
});

it('allows upgrades in commitMessage (group)', () => {
const commonOptions = {
...requiredDefaultOptions,
manager: 'some-manager',
branchName: 'deps',
groupName: 'deps',
group: {
commitMessageTopic: '{{{groupName}}}',
commitMessagePrefix:
'{{#each upgrades}}{{{prBodyDefinitions.Issue}}} {{/each}}',
},
};

const branch = [
{
...commonOptions,
depName: 'dep1',
newVersion: '1.2.0',
newValue: '1.2.0',
updateType: 'minor' as UpdateType,
fileReplacePosition: 1,
prBodyDefinitions: {
Issue: 'I1',
},
},
{
...commonOptions,
depName: 'dep2',
newVersion: '1.0.0',
newValue: '1.0.0',
updateType: 'major' as UpdateType,
fileReplacePosition: 2,
prBodyDefinitions: {
Issue: 'I2',
},
},
{
...commonOptions,
depName: 'dep3',
newVersion: '1.2.3',
newValue: '1.2.3',
updateType: 'patch' as UpdateType,
fileReplacePosition: 0,
prBodyDefinitions: {
Issue: 'I3',
},
},
] satisfies BranchUpgradeConfig[];
const res = generateBranchConfig(branch);
expect(res).toMatchObject({
commitMessage: 'I3 I2 I1 Update deps',
prTitle: 'I3 I2 I1 Update deps',
});
});
});
});
8 changes: 5 additions & 3 deletions lib/workers/repository/updates/generate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -302,9 +302,6 @@ export function generateBranchConfig(
} else if (semver.valid(toVersions[0])) {
upgrade.isRange = false;
}
// Use templates to generate strings
const commitMessage = compileCommitMessage(upgrade);
compilePrTitle(upgrade, commitMessage);
config.upgrades.push(upgrade);
if (upgrade.releaseTimestamp) {
if (releaseTimestamp!) {
Expand Down Expand Up @@ -357,6 +354,11 @@ export function generateBranchConfig(
...config.upgrades[0],
releaseTimestamp: releaseTimestamp!,
}; // TODO: fixme (#9666)

// Use templates to generate strings
const commitMessage = compileCommitMessage(config);
compilePrTitle(config, commitMessage);

config.dependencyDashboardApproval = config.upgrades.some(
(upgrade) => upgrade.dependencyDashboardApproval,
);
Expand Down