mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-03 03:55:51 +01:00
Add test for "real" merge commits
This commit is contained in:
@@ -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");
|
||||
|
||||
|
||||
@@ -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())) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user