Mercurial > hg4j
annotate test/org/tmatesoft/hg/test/TestMerge.java @ 713:661e77dc88ba tip
Mac support: respect Mac alternatives of command-line arguments for common unix tools
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Sun, 03 Aug 2014 18:09:00 +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 } |