Skip to content

Commit

Permalink
refactor(git): Delegate commit function to platform (#13823)
Browse files Browse the repository at this point in the history
  • Loading branch information
zharinov committed Jan 28, 2022
1 parent 9afabcd commit 0424518
Show file tree
Hide file tree
Showing 11 changed files with 106 additions and 15 deletions.
1 change: 1 addition & 0 deletions lib/config/types.ts
Expand Up @@ -67,6 +67,7 @@ export interface RenovateSharedConfig {
timezone?: string;
unicodeEmoji?: boolean;
gitIgnoredAuthors?: string[];
platformCommit?: boolean;
}

// Config options used only within the global worker
Expand Down
11 changes: 11 additions & 0 deletions lib/platform/commit.ts
@@ -0,0 +1,11 @@
import { commitFiles } from '../util/git';
import type { CommitFilesConfig, CommitSha } from '../util/git/types';
import { platform } from '.';

export function commitAndPush(
commitConfig: CommitFilesConfig
): Promise<CommitSha | null> {
return commitConfig.platformCommit && platform.commitFiles
? platform.commitFiles(commitConfig)
: commitFiles(commitConfig);
}
2 changes: 2 additions & 0 deletions lib/platform/types.ts
@@ -1,5 +1,6 @@
import type { MergeStrategy } from '../config/types';
import type { BranchStatus, PrState, VulnerabilityAlert } from '../types';
import type { CommitFilesConfig, CommitSha } from '../util/git/types';

type VulnerabilityKey = string;
type VulnerabilityRangeKey = string;
Expand Down Expand Up @@ -195,4 +196,5 @@ export interface Platform {
getBranchPr(branchName: string): Promise<Pr | null>;
initPlatform(config: PlatformParams): Promise<PlatformResult>;
filterUnavailableUsers?(users: string[]): Promise<string[]>;
commitFiles?(config: CommitFilesConfig): Promise<CommitSha | null>;
}
1 change: 1 addition & 0 deletions lib/util/git/types.ts
Expand Up @@ -73,6 +73,7 @@ export interface CommitFilesConfig {
files: FileChange[];
message: string;
force?: boolean;
platformCommit?: boolean;
}

export type BranchName = string;
Expand Down
21 changes: 21 additions & 0 deletions lib/workers/branch/__snapshots__/commit.spec.ts.snap
Expand Up @@ -14,6 +14,27 @@ Array [
],
"force": false,
"message": "some commit message",
"platformCommit": false,
},
],
]
`;

exports[`workers/branch/commit commitFilesToBranch commits via platform 1`] = `
Array [
Array [
Object {
"branchName": "renovate/some-branch",
"files": Array [
Object {
"contents": "some contents",
"path": "package.json",
"type": "addition",
},
],
"force": false,
"message": "some commit message",
"platformCommit": true,
},
],
]
Expand Down
14 changes: 13 additions & 1 deletion lib/workers/branch/commit.spec.ts
@@ -1,4 +1,4 @@
import { defaultConfig, git, partial } from '../../../test/util';
import { defaultConfig, git, partial, platform } from '../../../test/util';
import { GlobalConfig } from '../../config/global';
import type { BranchConfig } from '../types';
import { commitFilesToBranch } from './commit';
Expand All @@ -21,6 +21,7 @@ describe('workers/branch/commit', () => {
});
jest.resetAllMocks();
git.commitFiles.mockResolvedValueOnce('123test');
platform.commitFiles = jest.fn();
GlobalConfig.reset();
});
it('handles empty files', async () => {
Expand All @@ -37,6 +38,17 @@ describe('workers/branch/commit', () => {
expect(git.commitFiles).toHaveBeenCalledTimes(1);
expect(git.commitFiles.mock.calls).toMatchSnapshot();
});
it('commits via platform', async () => {
config.updatedPackageFiles.push({
type: 'addition',
path: 'package.json',
contents: 'some contents',
});
config.platformCommit = true;
await commitFilesToBranch(config);
expect(platform.commitFiles).toHaveBeenCalledTimes(1);
expect(platform.commitFiles.mock.calls).toMatchSnapshot();
});
it('dry runs', async () => {
GlobalConfig.set({ dryRun: true });
config.updatedPackageFiles.push({
Expand Down
6 changes: 4 additions & 2 deletions lib/workers/branch/commit.ts
Expand Up @@ -3,7 +3,7 @@ import minimatch from 'minimatch';
import { GlobalConfig } from '../../config/global';
import { CONFIG_SECRETS_EXPOSED } from '../../constants/error-messages';
import { logger } from '../../logger';
import { commitFiles } from '../../util/git';
import { commitAndPush } from '../../platform/commit';
import { sanitize } from '../../util/sanitize';
import type { BranchConfig } from '../types';

Expand Down Expand Up @@ -46,11 +46,13 @@ export function commitFilesToBranch(
);
throw new Error(CONFIG_SECRETS_EXPOSED);
}

// API will know whether to create new branch or not
return commitFiles({
return commitAndPush({
branchName: config.branchName,
files: updatedFiles,
message: config.commitMessage,
force: !!config.forceCommit,
platformCommit: !!config.platformCommit,
});
}
33 changes: 31 additions & 2 deletions lib/workers/repository/onboarding/branch/create.spec.ts
@@ -1,4 +1,4 @@
import { RenovateConfig, getConfig } from '../../../../../test/util';
import { RenovateConfig, getConfig, platform } from '../../../../../test/util';
import { commitFiles } from '../../../../util/git';
import { CommitMessage } from '../../model/commit-message';
import { createOnboardingBranch } from './create';
Expand All @@ -20,7 +20,6 @@ describe('workers/repository/onboarding/branch/create', () => {
describe('createOnboardingBranch', () => {
it('applies the default commit message', async () => {
await createOnboardingBranch(config);

expect(commitFiles).toHaveBeenCalledWith({
branchName: 'renovate/configure',
files: [
Expand All @@ -31,6 +30,27 @@ describe('workers/repository/onboarding/branch/create', () => {
},
],
message: 'Add renovate.json',
platformCommit: false,
});
});
it('commits via platform', async () => {
platform.commitFiles = jest.fn();

config.platformCommit = true;

await createOnboardingBranch(config);

expect(platform.commitFiles).toHaveBeenCalledWith({
branchName: 'renovate/configure',
files: [
{
type: 'addition',
path: 'renovate.json',
contents: '{"foo":"bar"}',
},
],
message: 'Add renovate.json',
platformCommit: true,
});
});
it('applies supplied commit message', async () => {
Expand All @@ -51,6 +71,7 @@ describe('workers/repository/onboarding/branch/create', () => {
},
],
message,
platformCommit: false,
});
});
describe('applies the commitMessagePrefix value', () => {
Expand All @@ -72,6 +93,7 @@ describe('workers/repository/onboarding/branch/create', () => {
},
],
message,
platformCommit: false,
});
});
it('to the supplied commit message', async () => {
Expand All @@ -95,6 +117,7 @@ describe('workers/repository/onboarding/branch/create', () => {
},
],
message,
platformCommit: false,
});
});
});
Expand All @@ -117,6 +140,7 @@ describe('workers/repository/onboarding/branch/create', () => {
},
],
message,
platformCommit: false,
});
});
it('to the supplied commit message', async () => {
Expand All @@ -140,6 +164,7 @@ describe('workers/repository/onboarding/branch/create', () => {
},
],
message,
platformCommit: false,
});
});
});
Expand All @@ -163,6 +188,7 @@ describe('workers/repository/onboarding/branch/create', () => {
},
],
message,
platformCommit: false,
});
});
it('falls back to the default option if in list of allowed names', async () => {
Expand All @@ -184,6 +210,7 @@ describe('workers/repository/onboarding/branch/create', () => {
},
],
message,
platformCommit: false,
});
});
it('uses the given name if valid', async () => {
Expand All @@ -206,6 +233,7 @@ describe('workers/repository/onboarding/branch/create', () => {
},
],
message,
platformCommit: false,
});
});
it('applies to the default commit message', async () => {
Expand All @@ -222,6 +250,7 @@ describe('workers/repository/onboarding/branch/create', () => {
branchName: 'renovate/configure',
files: [{ type: 'addition', path, contents: '{"foo":"bar"}' }],
message,
platformCommit: false,
});
});
});
Expand Down
6 changes: 4 additions & 2 deletions lib/workers/repository/onboarding/branch/create.ts
Expand Up @@ -2,7 +2,7 @@ import { configFileNames } from '../../../../config/app-strings';
import { GlobalConfig } from '../../../../config/global';
import type { RenovateConfig } from '../../../../config/types';
import { logger } from '../../../../logger';
import { commitFiles } from '../../../../util/git';
import { commitAndPush } from '../../../../platform/commit';
import { OnboardingCommitMessageFactory } from './commit-message';
import { getOnboardingConfigContents } from './config';

Expand Down Expand Up @@ -30,7 +30,8 @@ export async function createOnboardingBranch(
logger.info('DRY-RUN: Would commit files to onboarding branch');
return null;
}
return commitFiles({

return commitAndPush({
branchName: config.onboardingBranch,
files: [
{
Expand All @@ -40,5 +41,6 @@ export async function createOnboardingBranch(
},
],
message: commitMessage.toString(),
platformCommit: !!config.platformCommit,
});
}
14 changes: 13 additions & 1 deletion lib/workers/repository/onboarding/branch/rebase.spec.ts
@@ -1,4 +1,9 @@
import { RenovateConfig, defaultConfig, git } from '../../../../../test/util';
import {
RenovateConfig,
defaultConfig,
git,
platform,
} from '../../../../../test/util';
import { GlobalConfig } from '../../../../config/global';
import { rebaseOnboardingBranch } from './rebase';

Expand Down Expand Up @@ -39,6 +44,13 @@ describe('workers/repository/onboarding/branch/rebase', () => {
await rebaseOnboardingBranch(config);
expect(git.commitFiles).toHaveBeenCalledTimes(1);
});
it('rebases via platform', async () => {
platform.commitFiles = jest.fn();
config.platformCommit = true;
git.isBranchStale.mockResolvedValueOnce(true);
await rebaseOnboardingBranch(config);
expect(platform.commitFiles).toHaveBeenCalledTimes(1);
});
it('uses the onboardingConfigFileName if set', async () => {
git.isBranchStale.mockResolvedValueOnce(true);
await rebaseOnboardingBranch({
Expand Down
12 changes: 5 additions & 7 deletions lib/workers/repository/onboarding/branch/rebase.ts
Expand Up @@ -2,12 +2,8 @@ import { configFileNames } from '../../../../config/app-strings';
import { GlobalConfig } from '../../../../config/global';
import type { RenovateConfig } from '../../../../config/types';
import { logger } from '../../../../logger';
import {
commitFiles,
getFile,
isBranchModified,
isBranchStale,
} from '../../../../util/git';
import { commitAndPush } from '../../../../platform/commit';
import { getFile, isBranchModified, isBranchStale } from '../../../../util/git';
import { OnboardingCommitMessageFactory } from './commit-message';
import { getOnboardingConfigContents } from './config';

Expand Down Expand Up @@ -47,7 +43,8 @@ export async function rebaseOnboardingBranch(
logger.info('DRY-RUN: Would rebase files in onboarding branch');
return null;
}
return commitFiles({

return commitAndPush({
branchName: config.onboardingBranch,
files: [
{
Expand All @@ -57,5 +54,6 @@ export async function rebaseOnboardingBranch(
},
],
message: commitMessage.toString(),
platformCommit: !!config.platformCommit,
});
}

0 comments on commit 0424518

Please sign in to comment.