Mercurial > hg > mercurial
annotate mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MergeSupportSubreposTest.java @ 951:0cf858cb793c
Describe mercurial VCS root parameters
author | Dmitry Neverov <dmitry.neverov@gmail.com> |
---|---|
date | Thu, 09 Jun 2016 16:57:06 +0200 |
parents | 31a1aca3305c |
children | 7bf4d943d5bb |
rev | line source |
---|---|
732
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
646
diff
changeset
|
1 /* |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
646
diff
changeset
|
2 * Copyright 2000-2014 JetBrains s.r.o. |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
646
diff
changeset
|
3 * |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
646
diff
changeset
|
4 * Licensed under the Apache License, Version 2.0 (the "License"); |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
646
diff
changeset
|
5 * you may not use this file except in compliance with the License. |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
646
diff
changeset
|
6 * You may obtain a copy of the License at |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
646
diff
changeset
|
7 * |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
646
diff
changeset
|
8 * http://www.apache.org/licenses/LICENSE-2.0 |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
646
diff
changeset
|
9 * |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
646
diff
changeset
|
10 * Unless required by applicable law or agreed to in writing, software |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
646
diff
changeset
|
11 * distributed under the License is distributed on an "AS IS" BASIS, |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
646
diff
changeset
|
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
646
diff
changeset
|
13 * See the License for the specific language governing permissions and |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
646
diff
changeset
|
14 * limitations under the License. |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
646
diff
changeset
|
15 */ |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
646
diff
changeset
|
16 |
645
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
17 package jetbrains.buildServer.buildTriggers.vcs.mercurial; |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
18 |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
19 import jetbrains.buildServer.vcs.*; |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
20 import org.testng.annotations.BeforeMethod; |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
21 import org.testng.annotations.Test; |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
22 |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
23 import java.io.File; |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
24 import java.util.List; |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
25 |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
26 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialSupportBuilder.mercurialSupport; |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
27 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.ModificationDataMatcher.modificationData; |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
28 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.Util.copyRepository; |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
29 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.VcsRootBuilder.vcsRoot; |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
30 import static org.hamcrest.MatcherAssert.assertThat; |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
31 import static org.hamcrest.Matchers.hasItem; |
646
60425d39da84
Report conflicts from subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
32 import static org.testng.AssertJUnit.assertFalse; |
645
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
33 |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
34 @Test |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
35 public class MergeSupportSubreposTest extends BaseMercurialTestCase { |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
36 |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
37 private File mySubrepo1; |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
38 private File mySubrepo2; |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
39 private MercurialVcsSupport myVcs; |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
40 private MercurialMergeSupport myMergeSupport; |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
41 |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
42 @BeforeMethod |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
43 @Override |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
44 public void setUp() throws Exception { |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
45 super.setUp(); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
46 File parentDir = myTempFiles.createTempDir(); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
47 mySubrepo1 = new File(parentDir, "subrepo1"); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
48 mySubrepo2 = new File(parentDir, "subrepo2"); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
49 mySubrepo1.mkdirs(); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
50 mySubrepo2.mkdirs(); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
51 copyRepository(new File("mercurial-tests/testData/merge/subrepos/subrepo1"), mySubrepo1); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
52 copyRepository(new File("mercurial-tests/testData/merge/subrepos/subrepo2"), mySubrepo2); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
53 |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
54 ServerPluginConfig pluginConfig = new ServerPluginConfigBuilder() |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
55 .cachesDir(myTempFiles.createTempDir()) |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
56 .build(); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
57 MercurialSupportBuilder mercurialBuilder = mercurialSupport().withConfig(pluginConfig); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
58 myVcs = mercurialBuilder.build(); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
59 myMergeSupport = new MercurialMergeSupport(myVcs, myVcs.getMirrorManager(), pluginConfig, |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
60 mercurialBuilder.getHgRootFactory(), mercurialBuilder.getHgRepoFactory()); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
61 } |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
62 |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
63 |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
64 public void should_do_merge_in_subrepo_if_it_has_appropriate_branch() throws Exception { |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
65 VcsRoot root = vcsRoot().withUrl(mySubrepo1).withSubrepoChanges(true).build(); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
66 RepositoryStateData beforeMerge = myVcs.getCollectChangesPolicy().getCurrentState(root); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
67 myMergeSupport.merge(root, "0bd1ae88632d", "default", "merge into default", new MergeOptions()); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
68 RepositoryStateData afterMerge = myVcs.getCollectChangesPolicy().getCurrentState(root); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
69 List<ModificationData> ms = myVcs.getCollectChangesPolicy().collectChanges(root, beforeMerge, afterMerge, CheckoutRules.DEFAULT); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
70 assertThat("Cannot find main repo merge commit", ms, hasItem(modificationData().withDescription("merge into default") |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
71 .withParentRevisions("eb211547efbe", "0bd1ae88632d"))); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
72 assertThat("Cannot find subrepo merge commit", ms, hasItem(modificationData().withDescription("merge into default") |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
73 .withParentRevisions("675fa105b184", "1532dee5d922"))); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
74 } |
646
60425d39da84
Report conflicts from subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
75 |
60425d39da84
Report conflicts from subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
76 |
60425d39da84
Report conflicts from subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
77 public void should_report_conflicts_from_subrepos() throws Exception { |
60425d39da84
Report conflicts from subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
78 VcsRoot root = vcsRoot().withUrl(mySubrepo1).withSubrepoChanges(true).build(); |
60425d39da84
Report conflicts from subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
79 MergeResult result = myMergeSupport.merge(root, "3e43f76179ed", "default", "merge into default", new MergeOptions()); |
60425d39da84
Report conflicts from subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
80 assertFalse(result.isSuccess()); |
60425d39da84
Report conflicts from subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
81 assertThat("conflict from main repo is not reported", result.getConflicts(), hasItem("b/c")); |
60425d39da84
Report conflicts from subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
82 assertThat("conflict from subrepo is not reported", result.getConflicts(), hasItem("subrepo2/b/c")); |
60425d39da84
Report conflicts from subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
83 } |
645
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
84 } |