diff options
author | Max Hohenegger | 2015-09-08 08:22:37 +0000 |
---|---|---|
committer | Matthias Sohn | 2015-09-09 08:49:38 +0000 |
commit | 6197097ea5644bbe8706c4d4d711dcf5b6e342c6 (patch) | |
tree | 76dac74473f85b6dff3067daa24837ae01e809d7 /org.eclipse.egit.gitflow.test | |
parent | 235ed9d5ac2e14ee2ba0a07af80c099052eb441e (diff) | |
download | egit-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')
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"); |