annotate mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialCommitSupportTest.java @ 916:40124b503933

Merge branch Hajipur-9.0.x
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Fri, 02 Jan 2015 12:37:50 +0100
parents 15fce0c26e18
children 06ecc863293a
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
911
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
19 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.AuthSettings;
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
20 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.TestCommandSettingsFactory;
908
b39494a5ff96 TW-39095 handle commit messages with non-ascii symbols
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 903
diff changeset
21 import jetbrains.buildServer.util.TestFor;
867
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
22 import jetbrains.buildServer.vcs.*;
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
23 import org.jetbrains.annotations.NotNull;
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
24 import org.testng.annotations.BeforeMethod;
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
25 import org.testng.annotations.Test;
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
26
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
27 import java.io.ByteArrayInputStream;
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
28 import java.io.File;
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
29 import java.io.InputStream;
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
30 import java.util.List;
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
31
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
32 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialSupportBuilder.mercurialSupport;
911
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
33 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.Util.getHgPath;
867
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
34 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.VcsChangeMatcher.vcsChange;
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
35 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.VcsRootBuilder.vcsRoot;
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
36 import static org.hamcrest.MatcherAssert.assertThat;
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
37 import static org.hamcrest.Matchers.hasItem;
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
38 import static org.testng.AssertJUnit.assertEquals;
911
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
39 import static org.testng.AssertJUnit.assertNotNull;
867
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
40
868
5757f35cb22f Fix test
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 867
diff changeset
41 @RequiredHgVersion(min = "1.7.0")
5757f35cb22f Fix test
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 867
diff changeset
42 @Test(dataProviderClass = HgVersionConstraint.class, dataProvider = "installedHgVersion")
867
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
43 public class MercurialCommitSupportTest extends BaseMercurialTestCase {
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
44
911
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
45 private ServerPluginConfig myPluginConfig;
867
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
46 private MercurialVcsSupport myVcs;
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
47 private MercurialCommitSupport myCommitSupport;
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
48 private File myRepo;
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
49
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
50 @Override
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
51 @BeforeMethod
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
52 public void setUp() throws Exception {
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
53 super.setUp();
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
54
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
55 myRepo = createRepo("mercurial-tests/testData/commit");
911
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
56 myPluginConfig = new ServerPluginConfigBuilder()
867
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
57 .cachesDir(myTempFiles.createTempDir())
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
58 .build();
911
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
59 MercurialSupportBuilder mercurialBuilder = mercurialSupport().withConfig(myPluginConfig);
867
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
60 myVcs = mercurialBuilder.build();
911
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
61 myCommitSupport = new MercurialCommitSupport(myVcs, myVcs.getMirrorManager(), myPluginConfig,
867
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
62 mercurialBuilder.getHgRootFactory(), mercurialBuilder.getHgRepoFactory());
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
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
65
868
5757f35cb22f Fix test
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 867
diff changeset
66 public void test_commit(@NotNull HgVersion _) throws Exception {
867
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
67 VcsRoot root = vcsRoot().withUrl(myRepo).build();
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
68 RepositoryStateData beforeCommit = myVcs.getCollectChangesPolicy().getCurrentState(root);
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
69
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
70 String description = "Test commit support";
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
71 String author = "Joe Doe <joe@some.org>";
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
72 CommitPatchBuilder patchBuilder = myCommitSupport.getCommitPatchBuilder(root);
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
73 patchBuilder.deleteDirectory("dir");
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
74 patchBuilder.deleteFile("x");
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
75 patchBuilder.createFile("a/b/c", stream("test"));
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
76 patchBuilder.renameFile("y", "z", stream("rename"));
903
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
77 CommitResult result = patchBuilder.commit(new CommitSettingsImpl(author, description));
902
657882ca2b34 implement CommitPatchBuilder.dispose()
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 888
diff changeset
78 patchBuilder.dispose();
867
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
79
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
80 RepositoryStateData afterCommit = myVcs.getCollectChangesPolicy().getCurrentState(root);
888
207c4ec46d54 CommitSupport: return CommitResult instead of revision
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 868
diff changeset
81 assertEquals(result.getCreatedRevision(), afterCommit.getBranchRevisions().get(afterCommit.getDefaultBranchName()));
867
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
82
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
83 List<ModificationData> changes = myVcs.getCollectChangesPolicy().collectChanges(root, beforeCommit, afterCommit, CheckoutRules.DEFAULT);
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
84 ModificationData m = changes.get(0);
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
85 assertEquals(description, m.getDescription());
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
86 assertEquals(author, m.getUserName());
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 assertThat(m.getChanges(), hasItem(vcsChange().file("x").type(VcsChangeInfo.Type.REMOVED)));
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
89 assertThat(m.getChanges(), hasItem(vcsChange().file("dir/x").type(VcsChangeInfo.Type.REMOVED)));
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
90 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
91 assertThat(m.getChanges(), hasItem(vcsChange().file("y").type(VcsChangeInfo.Type.REMOVED)));
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
92 assertThat(m.getChanges(), hasItem(vcsChange().file("z").type(VcsChangeInfo.Type.ADDED)));
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
908
b39494a5ff96 TW-39095 handle commit messages with non-ascii symbols
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 903
diff changeset
96 @TestFor(issues = "TW-39095")
b39494a5ff96 TW-39095 handle commit messages with non-ascii symbols
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 903
diff changeset
97 public void commit_with_non_ascii_commit_message(@NotNull HgVersion _) throws Exception {
b39494a5ff96 TW-39095 handle commit messages with non-ascii symbols
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 903
diff changeset
98 VcsRoot root = vcsRoot().withUrl(myRepo).build();
b39494a5ff96 TW-39095 handle commit messages with non-ascii symbols
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 903
diff changeset
99 String description = "Комит месадж";
b39494a5ff96 TW-39095 handle commit messages with non-ascii symbols
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 903
diff changeset
100 String author = "Joe Doe <joe@some.org>";
b39494a5ff96 TW-39095 handle commit messages with non-ascii symbols
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 903
diff changeset
101 CommitPatchBuilder patchBuilder = myCommitSupport.getCommitPatchBuilder(root);
b39494a5ff96 TW-39095 handle commit messages with non-ascii symbols
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 903
diff changeset
102 patchBuilder.createFile("a/b/c", stream("test"));
b39494a5ff96 TW-39095 handle commit messages with non-ascii symbols
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 903
diff changeset
103 patchBuilder.commit(new CommitSettingsImpl(author, description));
b39494a5ff96 TW-39095 handle commit messages with non-ascii symbols
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 903
diff changeset
104 patchBuilder.dispose();
b39494a5ff96 TW-39095 handle commit messages with non-ascii symbols
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 903
diff changeset
105 }
b39494a5ff96 TW-39095 handle commit messages with non-ascii symbols
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 903
diff changeset
106
b39494a5ff96 TW-39095 handle commit messages with non-ascii symbols
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 903
diff changeset
107
910
26de7a765875 TW-39321 better error message when commit destination branch doesn't exist
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 908
diff changeset
108 @TestFor(issues = "TW-39321")
26de7a765875 TW-39321 better error message when commit destination branch doesn't exist
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 908
diff changeset
109 public void should_throw_meaningful_error_if_destination_branch_doesnt_exist(@NotNull HgVersion _) throws Exception {
26de7a765875 TW-39321 better error message when commit destination branch doesn't exist
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 908
diff changeset
110 String nonExistingBranch = "nonExisting";
26de7a765875 TW-39321 better error message when commit destination branch doesn't exist
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 908
diff changeset
111 VcsRoot root = vcsRoot().withUrl(myRepo).withBranch(nonExistingBranch).build();
26de7a765875 TW-39321 better error message when commit destination branch doesn't exist
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 908
diff changeset
112 String description = "msg";
26de7a765875 TW-39321 better error message when commit destination branch doesn't exist
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 908
diff changeset
113 String author = "Joe Doe <joe@some.org>";
26de7a765875 TW-39321 better error message when commit destination branch doesn't exist
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 908
diff changeset
114 try {
26de7a765875 TW-39321 better error message when commit destination branch doesn't exist
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 908
diff changeset
115 CommitPatchBuilder patchBuilder = myCommitSupport.getCommitPatchBuilder(root);
26de7a765875 TW-39321 better error message when commit destination branch doesn't exist
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 908
diff changeset
116 patchBuilder.createFile("a/b/c", stream("test"));
26de7a765875 TW-39321 better error message when commit destination branch doesn't exist
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 908
diff changeset
117 patchBuilder.commit(new CommitSettingsImpl(author, description));
26de7a765875 TW-39321 better error message when commit destination branch doesn't exist
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 908
diff changeset
118 patchBuilder.dispose();
26de7a765875 TW-39321 better error message when commit destination branch doesn't exist
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 908
diff changeset
119 } catch (VcsException e) {
26de7a765875 TW-39321 better error message when commit destination branch doesn't exist
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 908
diff changeset
120 assertEquals("The '" + nonExistingBranch + "' destination branch doesn't exist", e.getMessage());
26de7a765875 TW-39321 better error message when commit destination branch doesn't exist
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 908
diff changeset
121 }
26de7a765875 TW-39321 better error message when commit destination branch doesn't exist
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 908
diff changeset
122 }
26de7a765875 TW-39321 better error message when commit destination branch doesn't exist
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 908
diff changeset
123
26de7a765875 TW-39321 better error message when commit destination branch doesn't exist
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 908
diff changeset
124
911
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
125 @TestFor(issues = "TW-39321")
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
126 public void should_create_branch_if_repository_has_no_branches(@NotNull HgVersion _) throws Exception {
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
127 File emptyRemoteRepo = myTempFiles.createTempDir();
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
128 ServerHgRepo repo = new ServerHgRepo(new TestCommandSettingsFactory(), myPluginConfig, emptyRemoteRepo, getHgPath(), new AuthSettings());
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
129 repo.init().call();
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
130
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
131 String nonExistingBranch = "nonExisting";
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
132 VcsRoot root = vcsRoot().withUrl(emptyRemoteRepo).withBranch(nonExistingBranch).build();
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
133 String description = "msg";
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
134 String author = "Joe Doe <joe@some.org>";
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
135 CommitPatchBuilder patchBuilder = myCommitSupport.getCommitPatchBuilder(root);
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
136 patchBuilder.createFile("a/b/c", stream("test"));
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
137 patchBuilder.commit(new CommitSettingsImpl(author, description));
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
138 patchBuilder.dispose();
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
139
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
140 RepositoryStateData state = myVcs.getCollectChangesPolicy().getCurrentState(root);
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
141 assertNotNull(state.getBranchRevisions().get(nonExistingBranch));
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
142 }
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
143
15fce0c26e18 TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 910
diff changeset
144
867
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
145 @NotNull
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
146 private InputStream stream(@NotNull String content) {
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
147 return new ByteArrayInputStream(content.getBytes());
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
148 }
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
149
903
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
150 private class CommitSettingsImpl implements CommitSettings {
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
151 private final String myUserName;
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
152 private final String myDescription;
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
153
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
154 public CommitSettingsImpl(@NotNull String userName, @NotNull String description) {
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
155 myUserName = userName;
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
156 myDescription = description;
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
157 }
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
158
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
159 @NotNull
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
160 public String getUserName() {
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
161 return myUserName;
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
162 }
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
163
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
164 @NotNull
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
165 public String getDescription() {
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
166 return myDescription;
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
167 }
ecce3d4fb90b Implement new API
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 902
diff changeset
168 }
867
80d695d15cc0 Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
169 }