fix: do nothing if new commit and check required (#5594)

This commit is contained in:
Michael Kriese
2020-03-03 11:52:18 +01:00
committed by GitHub
parent 30a3c9e701
commit 69c8dcafe5
2 changed files with 61 additions and 1 deletions
+10 -1
View File
@@ -439,8 +439,17 @@ export async function processBranch(
await setStability(config);
await setUnpublishable(config);
// break if we pushed a new commit because status check are pretty sure pending but maybe not reported yet
if (
commit &&
(config.requiredStatusChecks?.length || config.prCreation !== 'immediate')
) {
logger.debug({ commit }, `Branch status pending`);
return 'pending';
}
// Try to automerge branch and finish if successful, but only if branch already existed before this run
if (branchExists || !config.requiresStatusChecks) {
if (branchExists || !config.requiredStatusChecks) {
const mergeStatus = await tryBranchAutomerge(config);
logger.debug(`mergeStatus=${mergeStatus}`);
if (mergeStatus === 'automerged') {
+51
View File
@@ -233,12 +233,33 @@ describe('workers/branch', () => {
updatedArtifacts: [{}],
} as never);
platform.branchExists.mockResolvedValueOnce(true);
commit.commitFilesToBranch.mockResolvedValueOnce(null);
automerge.tryBranchAutomerge.mockResolvedValueOnce('automerged');
await branchWorker.processBranch(config);
expect(statusChecks.setUnpublishable).toHaveBeenCalledTimes(1);
expect(automerge.tryBranchAutomerge).toHaveBeenCalledTimes(1);
expect(prWorker.ensurePr).toHaveBeenCalledTimes(0);
});
it('returns if branch automerged and no checks', async () => {
getUpdated.getUpdatedPackageFiles.mockReturnValueOnce({
updatedPackageFiles: [{}],
} as never);
npmPostExtract.getAdditionalFiles.mockReturnValueOnce({
artifactErrors: [],
updatedArtifacts: [{}],
} as never);
platform.branchExists.mockResolvedValueOnce(false);
automerge.tryBranchAutomerge.mockResolvedValueOnce('automerged');
await branchWorker.processBranch({
...config,
requiredStatusChecks: null,
});
expect(statusChecks.setUnpublishable).toHaveBeenCalledTimes(1);
expect(automerge.tryBranchAutomerge).toHaveBeenCalledTimes(1);
expect(prWorker.ensurePr).toHaveBeenCalledTimes(0);
});
it('returns if branch automerged (dry-run)', async () => {
getUpdated.getUpdatedPackageFiles.mockResolvedValueOnce({
updatedPackageFiles: [{}],
@@ -248,6 +269,7 @@ describe('workers/branch', () => {
updatedArtifacts: [{}],
} as never);
platform.branchExists.mockResolvedValueOnce(true);
commit.commitFilesToBranch.mockResolvedValueOnce(null);
automerge.tryBranchAutomerge.mockResolvedValueOnce('automerged');
await branchWorker.processBranch({ ...config, dryRun: true });
expect(statusChecks.setUnpublishable).toHaveBeenCalledTimes(1);
@@ -263,6 +285,7 @@ describe('workers/branch', () => {
updatedArtifacts: [{}],
} as never);
platform.branchExists.mockResolvedValueOnce(true);
commit.commitFilesToBranch.mockResolvedValueOnce(null);
automerge.tryBranchAutomerge.mockResolvedValueOnce('failed');
prWorker.ensurePr.mockResolvedValueOnce('needs-pr-approval');
expect(await branchWorker.processBranch(config)).toEqual(
@@ -270,6 +293,7 @@ describe('workers/branch', () => {
);
});
it('returns if branch exists but pending', async () => {
expect.assertions(1);
getUpdated.getUpdatedPackageFiles.mockResolvedValueOnce({
updatedPackageFiles: [{}],
} as never);
@@ -278,12 +302,33 @@ describe('workers/branch', () => {
updatedArtifacts: [{}],
} as never);
platform.branchExists.mockResolvedValueOnce(true);
commit.commitFilesToBranch.mockResolvedValueOnce(null);
automerge.tryBranchAutomerge.mockResolvedValueOnce('failed');
prWorker.ensurePr.mockResolvedValueOnce('pending');
expect(await branchWorker.processBranch(config)).toEqual(
BRANCH_STATUS_PENDING
);
});
it('returns if branch exists but updated', async () => {
expect.assertions(3);
getUpdated.getUpdatedPackageFiles.mockResolvedValueOnce({
updatedPackageFiles: [{}],
} as never);
npmPostExtract.getAdditionalFiles.mockResolvedValueOnce({
artifactErrors: [],
updatedArtifacts: [{}],
} as never);
expect(
await branchWorker.processBranch({
...config,
requiredStatusChecks: null,
prCreation: 'not-pending',
})
).toEqual(BRANCH_STATUS_PENDING);
expect(automerge.tryBranchAutomerge).toHaveBeenCalledTimes(0);
expect(prWorker.ensurePr).toHaveBeenCalledTimes(0);
});
it('ensures PR and tries automerge', async () => {
getUpdated.getUpdatedPackageFiles.mockResolvedValueOnce({
updatedPackageFiles: [{}],
@@ -296,6 +341,7 @@ describe('workers/branch', () => {
automerge.tryBranchAutomerge.mockResolvedValueOnce('failed');
prWorker.ensurePr.mockResolvedValueOnce({} as never);
prWorker.checkAutoMerge.mockResolvedValueOnce(true);
commit.commitFilesToBranch.mockResolvedValueOnce(null);
await branchWorker.processBranch(config);
expect(prWorker.ensurePr).toHaveBeenCalledTimes(1);
expect(platform.ensureCommentRemoval).toHaveBeenCalledTimes(1);
@@ -313,6 +359,7 @@ describe('workers/branch', () => {
automerge.tryBranchAutomerge.mockResolvedValueOnce('failed');
prWorker.ensurePr.mockResolvedValueOnce({} as never);
prWorker.checkAutoMerge.mockResolvedValueOnce(true);
commit.commitFilesToBranch.mockResolvedValueOnce(null);
await branchWorker.processBranch(config);
expect(platform.ensureComment).toHaveBeenCalledTimes(1);
// expect(platform.ensureCommentRemoval.mock.calls).toHaveLength(0);
@@ -332,6 +379,7 @@ describe('workers/branch', () => {
prWorker.ensurePr.mockResolvedValueOnce({} as never);
prWorker.checkAutoMerge.mockResolvedValueOnce(true);
config.releaseTimestamp = '2018-04-26T05:15:51.877Z';
commit.commitFilesToBranch.mockResolvedValueOnce(null);
await branchWorker.processBranch(config);
expect(platform.ensureComment).toHaveBeenCalledTimes(1);
// expect(platform.ensureCommentRemoval.mock.calls).toHaveLength(0);
@@ -351,6 +399,7 @@ describe('workers/branch', () => {
prWorker.ensurePr.mockResolvedValueOnce({} as never);
prWorker.checkAutoMerge.mockResolvedValueOnce(true);
config.releaseTimestamp = new Date().toISOString();
commit.commitFilesToBranch.mockResolvedValueOnce(null);
await branchWorker.processBranch(config);
expect(platform.ensureComment).toHaveBeenCalledTimes(1);
// expect(platform.ensureCommentRemoval.mock.calls).toHaveLength(0);
@@ -387,6 +436,7 @@ describe('workers/branch', () => {
automerge.tryBranchAutomerge.mockResolvedValueOnce('failed');
prWorker.ensurePr.mockResolvedValueOnce({} as never);
prWorker.checkAutoMerge.mockResolvedValueOnce(true);
commit.commitFilesToBranch.mockResolvedValueOnce(null);
await branchWorker.processBranch(config);
expect(platform.ensureComment).toHaveBeenCalledTimes(1);
// expect(platform.ensureCommentRemoval.mock.calls).toHaveLength(0);
@@ -494,6 +544,7 @@ describe('workers/branch', () => {
schedule.isScheduledNow.mockReturnValueOnce(false);
prWorker.ensurePr.mockResolvedValueOnce({} as never);
commit.commitFilesToBranch.mockResolvedValueOnce(null);
expect(
await branchWorker.processBranch({
...config,