Mercurial > hg4j
annotate test/org/tmatesoft/hg/test/TestMerge.java @ 709:497e697636fc
Report merged lines as changed block if possible, not as a sequence of added/deleted blocks. To facilitate access to merge parent lines AddBlock got mergeLineAt() method that reports index of the line in the second parent (if any), while insertedAt() has been changed to report index in the first parent always
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Wed, 21 Aug 2013 16:23:27 +0200 |
parents | 4ffc17c0b534 |
children |
rev | line source |
---|---|
706
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
1 /* |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
2 * Copyright (c) 2013 TMate Software Ltd |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
3 * |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
4 * This program is free software; you can redistribute it and/or modify |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
5 * it under the terms of the GNU General Public License as published by |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
6 * the Free Software Foundation; version 2 of the License. |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
7 * |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
8 * This program is distributed in the hope that it will be useful, |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
11 * GNU General Public License for more details. |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
12 * |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
13 * For information on how to redistribute this software under |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
14 * the terms of a license other than GNU General Public License |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
15 * contact TMate Software at support@hg4j.com |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
16 */ |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
17 package org.tmatesoft.hg.test; |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
18 |
708
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
19 import static org.tmatesoft.hg.util.Path.create; |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
20 |
707
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
21 import java.io.File; |
706
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
22 import java.util.ArrayList; |
708
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
23 import java.util.Collections; |
706
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
24 import java.util.List; |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
25 |
707
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
26 import org.junit.Assert; |
706
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
27 import org.junit.Rule; |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
28 import org.junit.Test; |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
29 import org.tmatesoft.hg.core.HgCallbackTargetException; |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
30 import org.tmatesoft.hg.core.HgFileRevision; |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
31 import org.tmatesoft.hg.core.HgMergeCommand; |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
32 import org.tmatesoft.hg.core.HgMergeCommand.Resolver; |
708
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
33 import org.tmatesoft.hg.core.HgStatus.Kind; |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
34 import org.tmatesoft.hg.core.HgStatusCommand; |
707
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
35 import org.tmatesoft.hg.repo.HgLookup; |
708
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
36 import org.tmatesoft.hg.repo.HgMergeState; |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
37 import org.tmatesoft.hg.repo.HgMergeState.Entry; |
706
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
38 import org.tmatesoft.hg.repo.HgRepository; |
708
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
39 import org.tmatesoft.hg.util.Path; |
706
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
40 |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
41 /** |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
42 * |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
43 * @author Artem Tikhomirov |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
44 * @author TMate Software Ltd. |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
45 */ |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
46 public class TestMerge { |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
47 |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
48 @Rule |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
49 public ErrorCollectorExt errorCollector = new ErrorCollectorExt(); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
50 |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
51 @Test |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
52 public void testMediator() throws Exception { |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
53 HgRepository repo = Configuration.get().find("merge-1"); |
707
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
54 Assert.assertEquals("[sanity]", repo.getChangelog().getRevisionIndex(repo.getWorkingCopyParents().first()), 1); |
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
55 |
706
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
56 HgMergeCommand cmd = new HgMergeCommand(repo); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
57 |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
58 MergeNotificationCollector c; |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
59 // (fastForward(file1, file2, file3) changes, newInB(file5), same(file4)) |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
60 cmd.changeset(2).execute(c = new MergeNotificationCollector()); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
61 errorCollector.assertTrue("file1", c.fastForwardA.contains("file1")); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
62 errorCollector.assertTrue("file2", c.fastForwardB.contains("file2")); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
63 errorCollector.assertTrue("file3", c.fastForwardA.contains("file3")); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
64 errorCollector.assertTrue("file4", c.same.contains("file4")); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
65 errorCollector.assertTrue("file5", c.newInB.contains("file5")); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
66 // (conflict(file1), onlyInA(file3), same(file4)) |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
67 cmd.changeset(3).execute(c = new MergeNotificationCollector()); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
68 errorCollector.assertTrue("file1", c.conflict.contains("file1")); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
69 errorCollector.assertTrue("file2", c.same.contains("file2")); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
70 errorCollector.assertTrue("file3", c.onlyA.contains("file3")); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
71 errorCollector.assertTrue("file4", c.same.contains("file4")); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
72 } |
707
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
73 |
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
74 |
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
75 @Test |
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
76 public void testResolver() throws Exception { |
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
77 File repoLoc1 = RepoUtils.copyRepoToTempLocation("merge-1", "test-merge-no-conflicts"); |
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
78 File repoLoc2 = RepoUtils.copyRepoToTempLocation("merge-1", "test-merge-with-conflicts"); |
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
79 HgRepository repo = new HgLookup().detect(repoLoc1); |
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
80 Assert.assertEquals("[sanity]", repo.getChangelog().getRevisionIndex(repo.getWorkingCopyParents().first()), 1); |
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
81 |
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
82 HgMergeCommand cmd = new HgMergeCommand(repo); |
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
83 cmd.changeset(2).execute(new HgMergeCommand.MediatorBase() { |
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
84 |
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
85 public void resolve(HgFileRevision base, HgFileRevision first, HgFileRevision second, Resolver resolver) throws HgCallbackTargetException { |
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
86 errorCollector.fail("There's no conflict in changesets 1 and 2 merge"); |
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
87 } |
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
88 }); |
708
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
89 RepoUtils.assertHgVerifyOk(errorCollector, repoLoc1); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
90 TestStatus.StatusCollector status = new TestStatus.StatusCollector(); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
91 new HgStatusCommand(repo).all().execute(status); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
92 final List<Path> clean = status.get(Kind.Clean); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
93 final List<Path> modified = status.get(Kind.Modified); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
94 Collections.sort(clean); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
95 Collections.sort(modified); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
96 errorCollector.assertEquals(new Path[] {create("file1"), create("file3"), create("file4")}, clean.toArray()); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
97 errorCollector.assertEquals(new Path[] {create("file2"), create("file5")}, modified.toArray()); |
707
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
98 repo = new HgLookup().detect(repoLoc2); |
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
99 cmd = new HgMergeCommand(repo); |
708
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
100 cmd.changeset(3).execute(new HgMergeCommand.MediatorBase()); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
101 RepoUtils.assertHgVerifyOk(errorCollector, repoLoc2); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
102 new HgStatusCommand(repo).all().execute(status = new TestStatus.StatusCollector()); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
103 errorCollector.assertEquals(1, status.get(Kind.Modified).size()); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
104 errorCollector.assertEquals(create("file1"), status.get(Kind.Modified).get(0)); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
105 final HgMergeState ms = repo.getMergeState(); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
106 ms.refresh(); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
107 errorCollector.assertTrue(ms.isMerging()); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
108 errorCollector.assertFalse(ms.isStale()); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
109 errorCollector.assertFalse(ms.getStateParent().isNull()); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
110 errorCollector.assertEquals(1, ms.getConflicts().size()); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
111 final Entry entry = ms.getConflicts().get(0); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
112 errorCollector.assertEquals(create("file1"), entry.getActualFile()); |
4ffc17c0b534
Merge: tests for resolver and complex scenario. Enable commit for merged revisions. Reuse file revisions if nothing changed
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
707
diff
changeset
|
113 errorCollector.assertEquals(HgMergeState.Kind.Unresolved, entry.getState()); |
707
42b88709e41d
Merge: support 'unresolved' resolution with MergeStateBuilder
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
706
diff
changeset
|
114 } |
706
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
115 |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
116 private static class MergeNotificationCollector implements HgMergeCommand.Mediator { |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
117 public final List<String> same = new ArrayList<String>(); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
118 public final List<String> onlyA = new ArrayList<String>(); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
119 public final List<String> onlyB = new ArrayList<String>(); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
120 public final List<String> newInA = new ArrayList<String>(); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
121 public final List<String> newInB = new ArrayList<String>(); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
122 public final List<String> fastForwardA = new ArrayList<String>(); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
123 public final List<String> fastForwardB = new ArrayList<String>(); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
124 public final List<String> conflict = new ArrayList<String>(); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
125 |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
126 |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
127 public void same(HgFileRevision rev, Resolver resolver) throws HgCallbackTargetException { |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
128 assert resolver != null; |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
129 same.add(rev.getPath().toString()); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
130 } |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
131 public void onlyA(HgFileRevision base, HgFileRevision rev, Resolver resolver) throws HgCallbackTargetException { |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
132 assert resolver != null; |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
133 onlyA.add(rev.getPath().toString()); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
134 } |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
135 public void onlyB(HgFileRevision base, HgFileRevision rev, Resolver resolver) throws HgCallbackTargetException { |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
136 assert resolver != null; |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
137 onlyB.add(rev.getPath().toString()); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
138 } |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
139 public void newInA(HgFileRevision rev, Resolver resolver) throws HgCallbackTargetException { |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
140 assert resolver != null; |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
141 newInA.add(rev.getPath().toString()); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
142 } |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
143 public void newInB(HgFileRevision rev, Resolver resolver) throws HgCallbackTargetException { |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
144 assert resolver != null; |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
145 newInB.add(rev.getPath().toString()); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
146 } |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
147 public void fastForwardA(HgFileRevision base, HgFileRevision first, Resolver resolver) throws HgCallbackTargetException { |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
148 assert resolver != null; |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
149 fastForwardA.add(first.getPath().toString()); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
150 } |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
151 public void fastForwardB(HgFileRevision base, HgFileRevision second, Resolver resolver) throws HgCallbackTargetException { |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
152 assert resolver != null; |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
153 fastForwardB.add(second.getPath().toString()); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
154 } |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
155 public void resolve(HgFileRevision base, HgFileRevision first, HgFileRevision second, Resolver resolver) throws HgCallbackTargetException { |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
156 assert resolver != null; |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
157 conflict.add(first.getPath().toString()); |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
158 } |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
159 } |
cd5c87d96315
Merge: tests for mediator notifications
Artem Tikhomirov <tikhomirov.artem@gmail.com>
parents:
diff
changeset
|
160 } |