Add test for "real" merge commits

This commit is contained in:
René Pfeuffer
2020-08-07 08:01:13 +02:00
parent e814694314
commit 2433c50d64
4 changed files with 60 additions and 3 deletions

View File

@@ -91,6 +91,19 @@ public class MergeDetectionITCase {
@Test
public void shouldDetectSimpleMergeAsMerged() throws IOException {
client.getCheckoutCommand().checkout("master");
client.getMergeCommand().noFf().merge("develop");
initializeMergeDetection("master", "develop");
client.getPushCommand().push();
Assertions.assertThat(getMergeDetectionResult("preMergeDetection", 0)).isTrue();
Assertions.assertThat(getMergeDetectionResult("postMergeDetection", 0)).isTrue();
}
@Test
public void shouldDetectFastForwardAsMerged() throws IOException {
client.getCheckoutCommand().checkout("master");
client.getMergeCommand().merge("develop");

View File

@@ -48,9 +48,25 @@ public class GitMergeCommand implements MergeCommand {
public Changeset merge(MergeRequest request) throws IOException {
try (GitChangesetConverter converter = new GitChangesetConverter(git.getRepository())) {
ObjectId resolved = git.getRepository().resolve(request.getBranch());
MergeResult mergeResult = git.merge()
org.eclipse.jgit.api.MergeCommand mergeCommand = git.merge()
.include(request.getBranch(), resolved)
.setMessage(request.getMessage())
.setMessage(request.getMessage());
switch (request.getFfMode()) {
case FF:
mergeCommand.setFastForward(org.eclipse.jgit.api.MergeCommand.FastForwardMode.FF);
break;
case NO_FF:
mergeCommand.setFastForward(org.eclipse.jgit.api.MergeCommand.FastForwardMode.NO_FF);
break;
case FF_ONLY:
mergeCommand.setFastForward(org.eclipse.jgit.api.MergeCommand.FastForwardMode.FF_ONLY);
break;
default:
throw new IllegalStateException("Unknown FF mode: " + request.getFfMode());
}
MergeResult mergeResult = mergeCommand
.call();
try (RevWalk revWalk = new RevWalk(git.getRepository())) {

View File

@@ -35,13 +35,28 @@ import java.io.IOException;
public final class MergeCommandBuilder {
private final MergeCommand command;
private final MergeRequest request = new MergeRequest();
MergeCommandBuilder(MergeCommand command) {
this.command = command;
}
public MergeCommandBuilder ffOnly() {
request.setFfMode(MergeRequest.FastForwardMode.FF_ONLY);
return this;
}
public MergeCommandBuilder noFf() {
request.setFfMode(MergeRequest.FastForwardMode.NO_FF);
return this;
}
public MergeCommandBuilder ffIfPossible() {
request.setFfMode(MergeRequest.FastForwardMode.FF);
return this;
}
public void merge(String branch) throws IOException {
MergeRequest request = new MergeRequest();
request.setBranch(branch);
command.merge(request);
}

View File

@@ -34,6 +34,7 @@ public final class MergeRequest {
private String branch;
private String message;
private FastForwardMode ffMode = FastForwardMode.FF;
@Override
public boolean equals(Object obj) {
@@ -79,6 +80,10 @@ public final class MergeRequest {
this.message = message;
}
public void setFfMode(FastForwardMode ffMode) {
this.ffMode = ffMode;
}
String getBranch() {
return branch;
}
@@ -86,4 +91,12 @@ public final class MergeRequest {
String getMessage() {
return message;
}
public FastForwardMode getFfMode() {
return ffMode;
}
public enum FastForwardMode {
FF_ONLY, FF, NO_FF
}
}