Mercurial > hg > mercurial
annotate mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialCommitSupportTest.java @ 902:657882ca2b34
implement CommitPatchBuilder.dispose()
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Thu, 13 Nov 2014 20:02:28 +0100 |
parents | 207c4ec46d54 |
children | ecce3d4fb90b |
rev | line source |
---|---|
867
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
1 /* |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
2 * Copyright 2000-2014 JetBrains s.r.o. |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
3 * |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
4 * Licensed under the Apache License, Version 2.0 (the "License"); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
5 * you may not use this file except in compliance with the License. |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
6 * You may obtain a copy of the License at |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
7 * |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
8 * http://www.apache.org/licenses/LICENSE-2.0 |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
9 * |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
10 * Unless required by applicable law or agreed to in writing, software |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
11 * distributed under the License is distributed on an "AS IS" BASIS, |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
13 * See the License for the specific language governing permissions and |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
14 * limitations under the License. |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
15 */ |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
16 |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
17 package jetbrains.buildServer.buildTriggers.vcs.mercurial; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
18 |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
19 import jetbrains.buildServer.vcs.*; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
20 import org.jetbrains.annotations.NotNull; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
21 import org.testng.annotations.BeforeMethod; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
22 import org.testng.annotations.Test; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
23 |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
24 import java.io.ByteArrayInputStream; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
25 import java.io.File; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
26 import java.io.InputStream; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
27 import java.util.List; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
28 |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
29 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialSupportBuilder.mercurialSupport; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
30 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.VcsChangeMatcher.vcsChange; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
31 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.VcsRootBuilder.vcsRoot; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
32 import static org.hamcrest.MatcherAssert.assertThat; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
33 import static org.hamcrest.Matchers.hasItem; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
34 import static org.testng.AssertJUnit.assertEquals; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
35 |
868 | 36 @RequiredHgVersion(min = "1.7.0") |
37 @Test(dataProviderClass = HgVersionConstraint.class, dataProvider = "installedHgVersion") | |
867
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
38 public class MercurialCommitSupportTest extends BaseMercurialTestCase { |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
39 |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
40 private MercurialVcsSupport myVcs; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
41 private MercurialCommitSupport myCommitSupport; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
42 private File myRepo; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
43 |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
44 @Override |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
45 @BeforeMethod |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
46 public void setUp() throws Exception { |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
47 super.setUp(); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
48 |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
49 myRepo = createRepo("mercurial-tests/testData/commit"); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
50 ServerPluginConfig pluginConfig = new ServerPluginConfigBuilder() |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
51 .cachesDir(myTempFiles.createTempDir()) |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
52 .build(); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
53 MercurialSupportBuilder mercurialBuilder = mercurialSupport().withConfig(pluginConfig); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
54 myVcs = mercurialBuilder.build(); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
55 myCommitSupport = new MercurialCommitSupport(myVcs, myVcs.getMirrorManager(), pluginConfig, |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
56 mercurialBuilder.getHgRootFactory(), mercurialBuilder.getHgRepoFactory()); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
57 } |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
58 |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
59 |
868 | 60 public void test_commit(@NotNull HgVersion _) throws Exception { |
867
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
61 VcsRoot root = vcsRoot().withUrl(myRepo).build(); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
62 RepositoryStateData beforeCommit = myVcs.getCollectChangesPolicy().getCurrentState(root); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
63 |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
64 String description = "Test commit support"; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
65 String author = "Joe Doe <joe@some.org>"; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
66 CommitPatchBuilder patchBuilder = myCommitSupport.getCommitPatchBuilder(root); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
67 patchBuilder.deleteDirectory("dir"); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
68 patchBuilder.deleteFile("x"); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
69 patchBuilder.createFile("a/b/c", stream("test")); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
70 patchBuilder.renameFile("y", "z", stream("rename")); |
888
207c4ec46d54
CommitSupport: return CommitResult instead of revision
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
868
diff
changeset
|
71 CommitResult result = patchBuilder.commit(author, description); |
902
657882ca2b34
implement CommitPatchBuilder.dispose()
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
888
diff
changeset
|
72 patchBuilder.dispose(); |
867
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
73 |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
74 RepositoryStateData afterCommit = myVcs.getCollectChangesPolicy().getCurrentState(root); |
888
207c4ec46d54
CommitSupport: return CommitResult instead of revision
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
868
diff
changeset
|
75 assertEquals(result.getCreatedRevision(), afterCommit.getBranchRevisions().get(afterCommit.getDefaultBranchName())); |
867
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
76 |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
77 List<ModificationData> changes = myVcs.getCollectChangesPolicy().collectChanges(root, beforeCommit, afterCommit, CheckoutRules.DEFAULT); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
78 ModificationData m = changes.get(0); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
79 assertEquals(description, m.getDescription()); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
80 assertEquals(author, m.getUserName()); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
81 |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
82 assertThat(m.getChanges(), hasItem(vcsChange().file("x").type(VcsChangeInfo.Type.REMOVED))); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
83 assertThat(m.getChanges(), hasItem(vcsChange().file("dir/x").type(VcsChangeInfo.Type.REMOVED))); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
84 assertThat(m.getChanges(), hasItem(vcsChange().file("a/b/c").type(VcsChangeInfo.Type.ADDED))); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
85 assertThat(m.getChanges(), hasItem(vcsChange().file("y").type(VcsChangeInfo.Type.REMOVED))); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
86 assertThat(m.getChanges(), hasItem(vcsChange().file("z").type(VcsChangeInfo.Type.ADDED))); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
87 } |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
88 |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
89 |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
90 @NotNull |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
91 private InputStream stream(@NotNull String content) { |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
92 return new ByteArrayInputStream(content.getBytes()); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
93 } |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
94 |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
95 } |