Mercurial > hg4j
comparison test/org/tmatesoft/hg/test/ComplexTest.java @ 708:4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Tue, 20 Aug 2013 18:41:34 +0200 |
parents | 4a0bab2c6da1 |
children |
comparison
equal
deleted
inserted
replaced
707:42b88709e41d | 708:4ffc17c0b534 |
---|---|
24 import org.junit.Test; | 24 import org.junit.Test; |
25 import org.tmatesoft.hg.core.HgAddRemoveCommand; | 25 import org.tmatesoft.hg.core.HgAddRemoveCommand; |
26 import org.tmatesoft.hg.core.HgCheckoutCommand; | 26 import org.tmatesoft.hg.core.HgCheckoutCommand; |
27 import org.tmatesoft.hg.core.HgCommitCommand; | 27 import org.tmatesoft.hg.core.HgCommitCommand; |
28 import org.tmatesoft.hg.core.HgInitCommand; | 28 import org.tmatesoft.hg.core.HgInitCommand; |
29 import org.tmatesoft.hg.core.HgMergeCommand; | |
29 import org.tmatesoft.hg.core.HgRevertCommand; | 30 import org.tmatesoft.hg.core.HgRevertCommand; |
30 import org.tmatesoft.hg.repo.HgManifest; | 31 import org.tmatesoft.hg.repo.HgManifest; |
32 import org.tmatesoft.hg.repo.HgMergeState; | |
31 import org.tmatesoft.hg.repo.HgRepository; | 33 import org.tmatesoft.hg.repo.HgRepository; |
34 import org.tmatesoft.hg.util.Outcome; | |
32 import org.tmatesoft.hg.util.Path; | 35 import org.tmatesoft.hg.util.Path; |
33 | 36 |
34 /** | 37 /** |
35 * @author Artem Tikhomirov | 38 * @author Artem Tikhomirov |
36 * @author TMate Software Ltd. | 39 * @author TMate Software Ltd. |
95 errorCollector.assertEquals(2, hgRepo.getFileNode(fb).getRevisionCount()); | 98 errorCollector.assertEquals(2, hgRepo.getFileNode(fb).getRevisionCount()); |
96 errorCollector.assertEquals(2, hgRepo.getFileNode(fc).getRevisionCount()); | 99 errorCollector.assertEquals(2, hgRepo.getFileNode(fc).getRevisionCount()); |
97 final HgManifest mf = hgRepo.getManifest(); | 100 final HgManifest mf = hgRepo.getManifest(); |
98 errorCollector.assertEquals(mf.getFileRevision(0, fa), mf.getFileRevision(3, fa)); // "A2" was reverted | 101 errorCollector.assertEquals(mf.getFileRevision(0, fa), mf.getFileRevision(3, fa)); // "A2" was reverted |
99 } | 102 } |
103 | |
104 @Test | |
105 public void testMergeAndCommit() throws Exception { | |
106 File repoLoc = RepoUtils.createEmptyDir("composite-scenario-2"); | |
107 HgRepository hgRepo = new HgInitCommand().location(repoLoc).revlogV1().execute(); | |
108 Path fa = Path.create("file1"), fb = Path.create("file2"), fc = Path.create("file3"); | |
109 final File fileA = new File(repoLoc, fa.toString()); | |
110 final File fileB = new File(repoLoc, fb.toString()); | |
111 // rev0: +file1, +file2 | |
112 RepoUtils.createFile(fileA, "first file"); | |
113 RepoUtils.createFile(fileB, "second file"); | |
114 new HgAddRemoveCommand(hgRepo).add(fa, fb).execute(); | |
115 final HgCommitCommand commitCmd = new HgCommitCommand(hgRepo); | |
116 commitCmd.message("FIRST").execute(); | |
117 // rev1: *file1, *file2 | |
118 RepoUtils.modifyFileAppend(fileA, "A1"); | |
119 RepoUtils.modifyFileAppend(fileB, "B1"); | |
120 commitCmd.message("SECOND").execute(); | |
121 // rev2: *file1, -file2 | |
122 RepoUtils.modifyFileAppend(fileA, "A2"); | |
123 fileB.delete(); | |
124 new HgAddRemoveCommand(hgRepo).remove(fb).execute(); | |
125 commitCmd.message("THIRD").execute(); | |
126 // rev3: fork rev0, +file3, *file2 | |
127 new HgCheckoutCommand(hgRepo).changeset(0).clean(true).execute(); | |
128 final File fileC = new File(repoLoc, fc.toString()); | |
129 RepoUtils.createFile(fileC, "third file"); | |
130 RepoUtils.modifyFileAppend(fileB, "B2"); | |
131 new HgAddRemoveCommand(hgRepo).add(fc).execute(); | |
132 commitCmd.message("FOURTH").execute(); | |
133 // rev4: *file3 | |
134 RepoUtils.modifyFileAppend(fileC, "C1"); | |
135 commitCmd.message("FIFTH").execute(); | |
136 // rev5: merge rev2 with rev3 | |
137 new HgCheckoutCommand(hgRepo).changeset(2).clean(true).execute(); | |
138 new HgMergeCommand(hgRepo).changeset(3).execute(new HgMergeCommand.MediatorBase()); | |
139 commitCmd.message("SIXTH: merge rev2 and rev3"); | |
140 errorCollector.assertTrue(commitCmd.isMergeCommit()); | |
141 HgMergeState ms = hgRepo.getMergeState(); | |
142 ms.refresh(); | |
143 errorCollector.assertTrue(ms.isMerging()); | |
144 errorCollector.assertFalse(ms.isStale()); | |
145 errorCollector.assertEquals(0, ms.getConflicts().size()); | |
146 Outcome o = commitCmd.execute(); | |
147 errorCollector.assertTrue(o.getMessage(), o.isOk()); | |
148 ms.refresh(); | |
149 errorCollector.assertFalse(ms.isMerging()); | |
150 errorCollector.assertEquals(0, ms.getConflicts().size()); | |
151 RepoUtils.assertHgVerifyOk(errorCollector, repoLoc); | |
152 } | |
100 } | 153 } |