Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Hohenegger2015-09-08 08:22:37 +0000
committerMatthias Sohn2015-09-09 08:49:38 +0000
commit6197097ea5644bbe8706c4d4d711dcf5b6e342c6 (patch)
tree76dac74473f85b6dff3067daa24837ae01e809d7 /org.eclipse.egit.gitflow.test
parent235ed9d5ac2e14ee2ba0a07af80c099052eb441e (diff)
downloadegit-6197097ea5644bbe8706c4d4d711dcf5b6e342c6.tar.gz
egit-6197097ea5644bbe8706c4d4d711dcf5b6e342c6.tar.xz
egit-6197097ea5644bbe8706c4d4d711dcf5b6e342c6.zip
Fixed 'Merges do not appear to be using --no-ff flag'
- use non-ff for finish operations on features with multiple commits - extended tests Bug: 473639 Signed-off-by: Max Hohenegger <eclipse@hohenegger.eu> Change-Id: I7a7c3a57a78930f95c0775f99eed2e99bf856544
Diffstat (limited to 'org.eclipse.egit.gitflow.test')
-rw-r--r--org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/AbstractFeatureOperationTest.java18
-rw-r--r--org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/AbstractGitFlowOperationTest.java4
-rw-r--r--org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/FeatureFinishOperationTest.java32
-rw-r--r--org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/HotfixFinishOperationTest.java20
-rw-r--r--org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/ReleaseFinishOperationTest.java46
5 files changed, 90 insertions, 30 deletions
diff --git a/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/AbstractFeatureOperationTest.java b/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/AbstractFeatureOperationTest.java
index 5d2bc10b5a..d31ffa4a48 100644
--- a/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/AbstractFeatureOperationTest.java
+++ b/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/AbstractFeatureOperationTest.java
@@ -8,8 +8,14 @@
*******************************************************************************/
package org.eclipse.egit.gitflow.op;
+import java.util.Iterator;
+
import org.eclipse.egit.gitflow.GitFlowRepository;
+import org.eclipse.jgit.api.Git;
+import org.eclipse.jgit.api.errors.GitAPIException;
+import org.eclipse.jgit.api.errors.NoHeadException;
import org.eclipse.jgit.lib.Repository;
+import org.eclipse.jgit.revwalk.RevCommit;
abstract public class AbstractFeatureOperationTest extends
AbstractGitFlowOperationTest {
@@ -20,4 +26,16 @@ abstract public class AbstractFeatureOperationTest extends
new InitOperation(repository).execute(null);
return new GitFlowRepository(repository);
}
+
+ protected int countCommits(Repository repository) throws GitAPIException,
+ NoHeadException {
+ int count = 0;
+ Iterable<RevCommit> commits = Git.wrap(repository).log().call();
+ Iterator<RevCommit> iterator = commits.iterator();
+ while (iterator.hasNext()) {
+ iterator.next();
+ count++;
+ }
+ return count;
+ }
}
diff --git a/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/AbstractGitFlowOperationTest.java b/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/AbstractGitFlowOperationTest.java
index bd89a7e558..f28776eb08 100644
--- a/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/AbstractGitFlowOperationTest.java
+++ b/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/AbstractGitFlowOperationTest.java
@@ -76,4 +76,8 @@ abstract public class AbstractGitFlowOperationTest extends GitTestCase {
return testRepository.addAndCommit(project.project,
new File(file.getLocationURI()), commitMessage);
}
+
+ protected String formatMergeCommitMessage(String branchName) {
+ return String.format("Merge branch '%s'", branchName);
+ }
} \ No newline at end of file
diff --git a/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/FeatureFinishOperationTest.java b/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/FeatureFinishOperationTest.java
index 82b5255610..bda512e310 100644
--- a/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/FeatureFinishOperationTest.java
+++ b/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/FeatureFinishOperationTest.java
@@ -12,24 +12,20 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.io.File;
-import java.util.Iterator;
import org.eclipse.egit.core.op.BranchOperation;
import org.eclipse.egit.gitflow.GitFlowRepository;
import org.eclipse.egit.gitflow.WrongGitFlowStateException;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.Status;
-import org.eclipse.jgit.api.errors.GitAPIException;
-import org.eclipse.jgit.api.errors.NoHeadException;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.junit.Test;
public class FeatureFinishOperationTest extends AbstractFeatureOperationTest {
@Test
- public void testFeatureFinish() throws Exception {
+ public void testFeatureFinishFastForward() throws Exception {
String fileName = "theFirstFile.txt";
-
Repository repository = testRepository.getRepository();
GitFlowRepository gfRepo = init("testFeatureFinish\n\nfirst commit\n");
@@ -76,16 +72,22 @@ public class FeatureFinishOperationTest extends AbstractFeatureOperationTest {
assertTrue(status.hasUncommittedChanges());
}
- private int countCommits(Repository repository) throws GitAPIException,
- NoHeadException {
- int count = 0;
- Iterable<RevCommit> commits = Git.wrap(repository).log().call();
- Iterator<RevCommit> iterator = commits.iterator();
- while (iterator.hasNext()) {
- iterator.next();
- count++;
- }
- return count;
+ @Test
+ public void testFeatureFinish() throws Exception {
+ Repository repository = testRepository.getRepository();
+ GitFlowRepository gfRepo = init("testFeatureFinish\n\nfirst commit\n");
+
+ new FeatureStartOperation(gfRepo, MY_FEATURE).execute(null);
+ addFileAndCommit("foo.txt", "testFeatureFinish\n\nbranch commit 1\n");
+ addFileAndCommit("bar.txt", "testFeatureFinish\n\nbranch commit 2\n");
+ new FeatureFinishOperation(gfRepo).execute(null);
+ assertEquals(gfRepo.getConfig().getDevelopFull(),
+ repository.getFullBranch());
+
+ String branchName = gfRepo.getConfig().getFeatureBranchName(MY_FEATURE);
+
+ assertEquals(formatMergeCommitMessage(branchName) + " into develop", gfRepo.findHead()
+ .getFullMessage());
}
@Test(expected = WrongGitFlowStateException.class)
diff --git a/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/HotfixFinishOperationTest.java b/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/HotfixFinishOperationTest.java
index 7678dc769b..6cccb0d543 100644
--- a/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/HotfixFinishOperationTest.java
+++ b/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/HotfixFinishOperationTest.java
@@ -11,6 +11,7 @@ package org.eclipse.egit.gitflow.op;
import static org.eclipse.egit.gitflow.GitFlowDefaults.DEVELOP;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNotNull;
import java.io.File;
@@ -23,7 +24,7 @@ import org.junit.Test;
public class HotfixFinishOperationTest extends AbstractGitFlowOperationTest {
@Test
- public void testHotfixFinish() throws Exception {
+ public void testHotfixFinishSingleCommit() throws Exception {
testRepository
.createInitialCommit("testHotfixFinish\n\nfirst commit\n");
@@ -43,17 +44,17 @@ public class HotfixFinishOperationTest extends AbstractGitFlowOperationTest {
String branchName = gfRepo.getConfig().getHotfixBranchName(MY_HOTFIX);
// tag created?
- assertEquals(branchCommit, gfRepo.findCommitForTag(MY_HOTFIX));
+ RevCommit taggedCommit = gfRepo.findCommitForTag(MY_HOTFIX);
+ assertEquals(formatMergeCommitMessage(branchName), taggedCommit.getShortMessage());
// branch removed?
assertEquals(findBranch(repository, branchName), null);
RevCommit developHead = gfRepo.findHead(DEVELOP);
- //TODO: as soon as we start using NO_FF for all finish operations, this must be not equals.
- assertEquals(branchCommit, developHead);
+ assertNotEquals(branchCommit, developHead);
RevCommit masterHead = gfRepo.findHead(MY_MASTER);
- assertEquals(branchCommit, masterHead);
+ assertEquals(formatMergeCommitMessage(branchName), masterHead.getShortMessage());
}
@Test
@@ -73,12 +74,14 @@ public class HotfixFinishOperationTest extends AbstractGitFlowOperationTest {
testRepository.appendContentAndCommit(project.getProject(), file,
"Hello Release", "Release Commit");
+ testRepository.appendContentAndCommit(project.getProject(), file,
+ "Hello Merge Commit", "Release Commit 2");
new ReleaseFinishOperation(gfRepo).execute(null);
new HotfixStartOperation(gfRepo, MY_HOTFIX).execute(null);
// modify on first branch
- RevCommit hotfixCommit = testRepository.appendContentAndCommit(
+ testRepository.appendContentAndCommit(
project.getProject(), file, "Hello Hotfix", "Hotfix Commit");
new BranchOperation(repository, gfRepo.getConfig().getDevelop()).execute(null);
assertEquals(gfRepo.getConfig().getDevelopFull(), repository.getFullBranch());
@@ -93,9 +96,8 @@ public class HotfixFinishOperationTest extends AbstractGitFlowOperationTest {
gfRepo);
hotfixFinishOperation.execute(null);
- // tag is created because of 473646
// TODO: check if the reference implementation cleans up in this case
- assertEquals(hotfixCommit, gfRepo.findCommitForTag(MY_HOTFIX));
+ assertNotNull(gfRepo.findCommitForTag(MY_HOTFIX));
// branch not removed?
assertNotEquals(findBranch(repository, branchName), null);
@@ -108,7 +110,7 @@ public class HotfixFinishOperationTest extends AbstractGitFlowOperationTest {
// merged on master
RevCommit masterHead = gfRepo.findHead(MY_MASTER);
- assertEquals(hotfixCommit, masterHead);
+ assertEquals(String.format("Merge branch '%s'", branchName), masterHead.getFullMessage());
assertEquals(gfRepo.getConfig().getDevelopFull(), repository.getFullBranch());
}
diff --git a/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/ReleaseFinishOperationTest.java b/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/ReleaseFinishOperationTest.java
index c3073e7e0a..18e52b84ed 100644
--- a/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/ReleaseFinishOperationTest.java
+++ b/org.eclipse.egit.gitflow.test/src/org/eclipse/egit/gitflow/op/ReleaseFinishOperationTest.java
@@ -15,6 +15,7 @@ import static org.eclipse.egit.gitflow.GitFlowDefaults.MASTER;
import static org.eclipse.egit.gitflow.GitFlowDefaults.RELEASE_PREFIX;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.fail;
import java.util.Iterator;
@@ -33,7 +34,7 @@ import org.junit.Test;
public class ReleaseFinishOperationTest extends AbstractGitFlowOperationTest {
@Test
- public void testReleaseFinish() throws Exception {
+ public void testReleaseFinishSingleCommit() throws Exception {
testRepository
.createInitialCommit("testReleaseFinish\n\nfirst commit\n");
@@ -56,20 +57,53 @@ public class ReleaseFinishOperationTest extends AbstractGitFlowOperationTest {
String branchName = gfRepo.getConfig().getReleaseBranchName(MY_RELEASE);
// tag created?
- assertEquals(branchCommit,
- gfRepo.findCommitForTag(MY_VERSION_TAG + MY_RELEASE));
+ RevCommit taggedCommit = gfRepo.findCommitForTag(MY_VERSION_TAG + MY_RELEASE);
+ assertEquals(formatMergeCommitMessage(branchName), taggedCommit.getShortMessage());
// branch removed?
assertEquals(findBranch(repository, branchName), null);
RevCommit developHead = gfRepo.findHead(DEVELOP);
- //TODO: as soon as we start using NO_FF for all finish operations, this must be not equals.
- assertEquals(branchCommit, developHead);
+ assertNotEquals(branchCommit, developHead);
RevCommit masterHead = gfRepo.findHead(MY_MASTER);
- assertEquals(branchCommit, masterHead);
+ assertEquals(formatMergeCommitMessage(branchName), masterHead.getShortMessage());
}
@Test
+ public void testReleaseFinish() throws Exception {
+ testRepository
+ .createInitialCommit("testReleaseFinish\n\nfirst commit\n");
+
+ Repository repository = testRepository.getRepository();
+ InitParameters initParameters = new InitParameters();
+ initParameters.setDevelop(DEVELOP);
+ initParameters.setMaster(MASTER);
+ initParameters.setFeature(FEATURE_PREFIX);
+ initParameters.setRelease(RELEASE_PREFIX);
+ initParameters.setHotfix(HOTFIX_PREFIX);
+ initParameters.setVersionTag(MY_VERSION_TAG);
+ new InitOperation(repository, initParameters).execute(null);
+ GitFlowRepository gfRepo = new GitFlowRepository(repository);
+
+ new ReleaseStartOperation(gfRepo, MY_RELEASE).execute(null);
+ addFileAndCommit("foo.txt", "testReleaseFinish\n\nbranch commit 1\n");
+ addFileAndCommit("bar.txt", "testReleaseFinish\n\nbranch commit 2\n");
+ ReleaseFinishOperation releaseFinishOperation = new ReleaseFinishOperation(gfRepo);
+ releaseFinishOperation.execute(null);
+ assertEquals(gfRepo.getConfig().getDevelopFull(),
+ repository.getFullBranch());
+
+ String branchName = gfRepo.getConfig().getReleaseBranchName(MY_RELEASE);
+ // tag created?
+ RevCommit taggedCommit = gfRepo.findCommitForTag(MY_VERSION_TAG
+ + MY_RELEASE);
+ assertEquals(formatMergeCommitMessage(branchName),
+ taggedCommit.getFullMessage());
+
+ // branch removed?
+ assertEquals(findBranch(repository, branchName), null);
+ }
+ @Test
public void testReleaseFinishFail() throws Exception {
testRepository
.createInitialCommit("testReleaseFinishFail\n\nfirst commit\n");

Back to the top