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
5757f35cb22f Fix test
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 867
diff changeset
36 @RequiredHgVersion(min = "1.7.0")
5757f35cb22f Fix test
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 867
diff changeset
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
5757f35cb22f Fix test
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 867
diff changeset
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 }