annotate mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java @ 791:249eb1d652a7

Merge branch Gaya-8.1.x
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Thu, 01 May 2014 19:55:03 +0200
parents 06dcc79b304d 914a0b473c45
children f86c06f4ab8a
rev   line source
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
1 /*
732
31a1aca3305c Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 696
diff changeset
2 * Copyright 2000-2014 JetBrains s.r.o.
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
3 *
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
4 * Licensed under the Apache License, Version 2.0 (the "License");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
5 * you may not use this file except in compliance with the License.
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
6 * You may obtain a copy of the License at
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
7 *
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
8 * http://www.apache.org/licenses/LICENSE-2.0
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
9 *
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
10 * Unless required by applicable law or agreed to in writing, software
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
11 * distributed under the License is distributed on an "AS IS" BASIS,
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
13 * See the License for the specific language governing permissions and
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
14 * limitations under the License.
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
15 */
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
16 package jetbrains.buildServer.buildTriggers.vcs.mercurial;
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
17
604
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
18 import com.intellij.openapi.util.SystemInfo;
432
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
19 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.*;
604
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
20 import jetbrains.buildServer.util.FileUtil;
474
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
21 import jetbrains.buildServer.util.TestFor;
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
22 import jetbrains.buildServer.vcs.*;
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
23 import jetbrains.buildServer.vcs.impl.VcsRootImpl;
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
24 import junit.framework.Assert;
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
25 import org.jetbrains.annotations.NotNull;
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
26 import org.testng.annotations.BeforeMethod;
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
27 import org.testng.annotations.Test;
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
28
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
29 import java.io.ByteArrayOutputStream;
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
30 import java.io.File;
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
31 import java.io.FilenameFilter;
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
32 import java.io.IOException;
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
33 import java.util.*;
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
34
686
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
35 import static com.intellij.openapi.util.io.FileUtil.delete;
489
493f78cb64dd Move MercurialBranchSupport to separate module
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 485
diff changeset
36 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialSupportBuilder.mercurialSupport;
564
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
37 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.ModificationDataMatcher.modificationData;
686
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
38 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.Util.*;
371
24d926f22e85 TW-16045 allow specify username for tags
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 347
diff changeset
39 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.VcsRootBuilder.vcsRoot;
446
8a1231dc6a2c Collect changes between states
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 445
diff changeset
40 import static jetbrains.buildServer.util.Util.map;
8a1231dc6a2c Collect changes between states
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 445
diff changeset
41 import static org.hamcrest.MatcherAssert.assertThat;
8a1231dc6a2c Collect changes between states
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 445
diff changeset
42 import static org.hamcrest.Matchers.hasItem;
564
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
43 import static org.hamcrest.Matchers.not;
338
d31d7c81b637 Support subrepositories while building clean patch.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 329
diff changeset
44
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
45 @Test
636
27933884b738 Better test name + reuse temp files
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 609
diff changeset
46 public class MercurialVcsSupportTest extends BaseMercurialPatchTestCase {
274
5cbb5ae712e9 Add test for TW-17797
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 271
diff changeset
47
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
48 private MercurialVcsSupport myVcs;
274
5cbb5ae712e9 Add test for TW-17797
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 271
diff changeset
49 private String myRep2Path = new File("mercurial-tests/testData/rep2").getAbsolutePath();
280
8c1fd2e565ae Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 276
diff changeset
50 private ServerPluginConfig myPluginConfig;
644
96af0d63f80a Unify HgRepoFactory on server and agent
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 636
diff changeset
51 private HgPathProvider myHgPathProvider;
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
52
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
53 @BeforeMethod
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
54 protected void setUp() throws Exception {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
55 super.setUp();
309
33305b2022c2 Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 299
diff changeset
56 myPluginConfig = new ServerPluginConfigBuilder()
33305b2022c2 Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 299
diff changeset
57 .cachesDir(myTempFiles.createTempDir())
33305b2022c2 Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 299
diff changeset
58 .build();
644
96af0d63f80a Unify HgRepoFactory on server and agent
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 636
diff changeset
59 MercurialSupportBuilder mercurialBuilder = mercurialSupport().withConfig(myPluginConfig);
96af0d63f80a Unify HgRepoFactory on server and agent
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 636
diff changeset
60 myVcs = mercurialBuilder.build();
96af0d63f80a Unify HgRepoFactory on server and agent
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 636
diff changeset
61 myHgPathProvider = mercurialBuilder.getHgPathProvider();
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
62 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
63
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
64 protected String getTestDataPath() {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
65 return "mercurial-tests/testData";
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
66 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
67
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
68 public void test_get_current_version() throws Exception {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
69 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
70
696
a07f685ce394 Get rid of depricated getCurrentVersion() method
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 687
diff changeset
71 RepositoryStateData state = myVcs.getCollectChangesPolicy().getCurrentState(vcsRoot);
a07f685ce394 Get rid of depricated getCurrentVersion() method
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 687
diff changeset
72 assertEquals(state.getBranchRevisions().get(state.getDefaultBranchName()), "9c6a6b4aede0");
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
73 assertEquals("9c6a6b4aede0", myVcs.getVersionDisplayName("10:9c6a6b4aede0", vcsRoot));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
74
696
a07f685ce394 Get rid of depricated getCurrentVersion() method
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 687
diff changeset
75 state = myVcs.getCollectChangesPolicy().getCurrentState(createVcsRoot(simpleRepo(), "test_branch"));
a07f685ce394 Get rid of depricated getCurrentVersion() method
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 687
diff changeset
76 assertEquals(state.getBranchRevisions().get(state.getDefaultBranchName()), "04c3ae4c6312");
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
77
696
a07f685ce394 Get rid of depricated getCurrentVersion() method
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 687
diff changeset
78 state = myVcs.getCollectChangesPolicy().getCurrentState(createVcsRoot(simpleRepo(), "name with space"));
a07f685ce394 Get rid of depricated getCurrentVersion() method
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 687
diff changeset
79 assertEquals(state.getBranchRevisions().get(state.getDefaultBranchName()), "9babcf2d5705");
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
80 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
81
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
82 private List<ModificationData> collectChanges(@NotNull VcsRoot vcsRoot, @NotNull String from, @NotNull String to, @NotNull CheckoutRules rules) throws VcsException {
567
27cd2503cea3 Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 566
diff changeset
83 return myVcs.getCollectChangesPolicy().collectChanges(vcsRoot, from, to, rules);
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
84 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
85
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
86 public void test_collect_changes_between_two_same_roots() throws Exception {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
87 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
88 VcsRootImpl sameVcsRoot = createVcsRoot(simpleRepo());
567
27cd2503cea3 Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 566
diff changeset
89 List<ModificationData> changes = myVcs.getCollectChangesPolicy().collectChanges(vcsRoot, "0:9875b412a788", sameVcsRoot, "3:9522278aa38d", new CheckoutRules(""));
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
90 do_check_for_collect_changes(changes);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
91 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
92
276
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 274
diff changeset
93 public void test_collect_changes_from_non_existing_revision() throws Exception {
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 274
diff changeset
94 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 274
diff changeset
95 VcsRootImpl sameVcsRoot = createVcsRoot(simpleRepo());
567
27cd2503cea3 Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 566
diff changeset
96 List<ModificationData> changes = myVcs.getCollectChangesPolicy().collectChanges(vcsRoot, "0:9875b412a789", sameVcsRoot, "3:9522278aa38d", new CheckoutRules(""));
276
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 274
diff changeset
97 assertFalse(changes.isEmpty());//should return some changes from the toRoot
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 274
diff changeset
98 }
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 274
diff changeset
99
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
100 public void test_collect_changes() throws Exception {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
101 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
102 List<ModificationData> changes = collectChanges(vcsRoot, "0:9875b412a788", "3:9522278aa38d", new CheckoutRules(""));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
103 do_check_for_collect_changes(changes);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
104 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
105
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
106 private void do_check_for_collect_changes(List<ModificationData> changes) throws Exception {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
107 assertEquals(3, changes.size());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
108
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
109 ModificationData md1 = changes.get(0);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
110 ModificationData md2 = changes.get(1);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
111 ModificationData md3 = changes.get(2);
445
b47cfe5cbaba Do not include revnum in revision
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 444
diff changeset
112 assertEquals(md1.getVersion(), "1d446e82d356");
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
113 assertEquals(md1.getDescription(), "new file added");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
114 List<VcsChange> files1 = md1.getChanges();
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
115 assertEquals(1, files1.size());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
116 assertEquals(VcsChangeInfo.Type.ADDED, files1.get(0).getType());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
117 assertEquals(normalizePath(files1.get(0).getRelativeFileName()), "dir1/file3.txt");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
118
445
b47cfe5cbaba Do not include revnum in revision
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 444
diff changeset
119 assertEquals(md2.getVersion(), "7209b1f1d793");
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
120 assertEquals(md2.getDescription(), "file4.txt added");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
121 List<VcsChange> files2 = md2.getChanges();
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
122 assertEquals(1, files2.size());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
123 assertEquals(files2.get(0).getType(), VcsChangeInfo.Type.ADDED);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
124 assertEquals(normalizePath(files2.get(0).getRelativeFileName()), "dir1/file4.txt");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
125
445
b47cfe5cbaba Do not include revnum in revision
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 444
diff changeset
126 assertEquals(md3.getVersion(), "9522278aa38d");
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
127 assertEquals(md3.getDescription(), "file removed");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
128 List<VcsChange> files3 = md3.getChanges();
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
129 assertEquals(1, files3.size());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
130 assertEquals(files3.get(0).getType(), VcsChangeInfo.Type.REMOVED);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
131 assertEquals(normalizePath(files3.get(0).getRelativeFileName()), "dir1/file4.txt");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
132 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
133
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
134 @Test
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
135 public void test_build_patch() throws IOException, VcsException {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
136 setName("cleanPatch1");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
137 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
138
444
a05eca69fc01 Ensure plugin works without revnums in revisions
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 443
diff changeset
139 ByteArrayOutputStream output = buildPatch(myVcs, vcsRoot, null, "4:b06a290a363b", new CheckoutRules(""));
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
140 checkPatchResult(output.toByteArray());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
141
309
33305b2022c2 Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 299
diff changeset
142 File clonedReposParentDir = myPluginConfig.getCachesDir();
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
143 assertTrue(clonedReposParentDir.isDirectory());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
144 assertTrue(1 == clonedReposParentDir.list(new FilenameFilter() {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
145 public boolean accept(final File dir, final String name) {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
146 return name.startsWith("hg_");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
147 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
148 }).length);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
149 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
150
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
151 public void test_build_incremental_patch() throws IOException, VcsException {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
152 setName("patch1");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
153 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
154
444
a05eca69fc01 Ensure plugin works without revnums in revisions
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 443
diff changeset
155 ByteArrayOutputStream output = buildPatch(myVcs, vcsRoot, "3:9522278aa38d", "4:b06a290a363b", new CheckoutRules(""));
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
156
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
157 checkPatchResult(output.toByteArray());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
158 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
159
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
160 public void test_build_incremental_patch_checkout_rules() throws IOException, VcsException {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
161 setName("patch1_checkout_rules");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
162 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
163
444
a05eca69fc01 Ensure plugin works without revnums in revisions
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 443
diff changeset
164 ByteArrayOutputStream output = buildPatch(myVcs, vcsRoot, "3:9522278aa38d", "4:b06a290a363b", new CheckoutRules("+:dir1=>path"));
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
165
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
166 checkPatchResult(output.toByteArray());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
167 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
168
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
169 public void test_build_clean_patch_checkout_rules() throws IOException, VcsException {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
170 setName("cleanPatch1_checkout_rules");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
171 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
172
444
a05eca69fc01 Ensure plugin works without revnums in revisions
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 443
diff changeset
173 ByteArrayOutputStream output = buildPatch(myVcs, vcsRoot, null, "4:b06a290a363b", new CheckoutRules("+:dir1/subdir=>."));
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
175 checkPatchResult(output.toByteArray());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
176 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
177
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
178 public void test_build_incremental_patch_file_with_space() throws IOException, VcsException {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
179 setName("patch2");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
180 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
181
444
a05eca69fc01 Ensure plugin works without revnums in revisions
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 443
diff changeset
182 ByteArrayOutputStream output = buildPatch(myVcs, vcsRoot, "3:9522278aa38d", "6:b9deb9a1c6f4", new CheckoutRules(""));
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
183
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
184 checkPatchResult(output.toByteArray());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
185 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
186
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
187 public void test_get_content() throws IOException, VcsException {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
188 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
189
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
190 byte[] content = myVcs.getContent("dir1/subdir/file2.txt", vcsRoot, "4:b06a290a363b");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
191 assertEquals(new String(content), "bbb");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
192 content = myVcs.getContent("dir1/subdir/file2.txt", vcsRoot, "5:1d2cc6f3bc29");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
193 assertEquals(new String(content), "modified\r\nbbb");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
194 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
195
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
196 public void test_get_content_in_branch() throws IOException, VcsException {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
197 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo(), "test_branch");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
198
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
199 byte[] content = myVcs.getContent("file_in_branch.txt", vcsRoot, "8:04c3ae4c6312");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
200 assertEquals(new String(content), "file from the test_branch\r\nfile modified");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
201 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
202
397
36b1bc5add89 Method getContent() should throw exception for non-existing files
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 380
diff changeset
203 public void get_content_of_non_existing_file_should_throw_exception() throws Exception {
36b1bc5add89 Method getContent() should throw exception for non-existing files
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 380
diff changeset
204 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
36b1bc5add89 Method getContent() should throw exception for non-existing files
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 380
diff changeset
205
36b1bc5add89 Method getContent() should throw exception for non-existing files
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 380
diff changeset
206 try {
36b1bc5add89 Method getContent() should throw exception for non-existing files
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 380
diff changeset
207 myVcs.getContent("non/existing/file", vcsRoot, "8:04c3ae4c6312");
36b1bc5add89 Method getContent() should throw exception for non-existing files
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 380
diff changeset
208 fail("getContent() should throw exception for non-existing file");
36b1bc5add89 Method getContent() should throw exception for non-existing files
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 380
diff changeset
209 } catch (VcsException e) {
36b1bc5add89 Method getContent() should throw exception for non-existing files
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 380
diff changeset
210 assertTrue(true);
36b1bc5add89 Method getContent() should throw exception for non-existing files
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 380
diff changeset
211 }
36b1bc5add89 Method getContent() should throw exception for non-existing files
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 380
diff changeset
212 }
36b1bc5add89 Method getContent() should throw exception for non-existing files
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 380
diff changeset
213
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
214 public void test_test_connection() throws IOException, VcsException {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
215 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
216 vcsRoot.addProperty(Constants.REPOSITORY_PROP, "/some/non/existent/path");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
217 try {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
218 myVcs.getTestConnectionSupport().testConnection(vcsRoot);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
219 fail("Exception expected");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
220 } catch (VcsException e) {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
221 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
222 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
223
430
3600b68a4c0c TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 429
diff changeset
224
3600b68a4c0c TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 429
diff changeset
225 public void should_throw_friendly_exception_when_cannot_run_hg() throws Exception {
3600b68a4c0c TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 429
diff changeset
226 VcsRootImpl root = createVcsRoot(simpleRepo());
3600b68a4c0c TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 429
diff changeset
227 File nonExistingHg = myTempFiles.createTempFile();
3600b68a4c0c TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 429
diff changeset
228 delete(nonExistingHg);
3600b68a4c0c TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 429
diff changeset
229 String nonExistingHgPath = nonExistingHg.getAbsolutePath();
3600b68a4c0c TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 429
diff changeset
230 root.addProperty(Constants.HG_COMMAND_PATH_PROP, nonExistingHgPath);
3600b68a4c0c TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 429
diff changeset
231 try {
3600b68a4c0c TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 429
diff changeset
232 myVcs.getTestConnectionSupport().testConnection(root);
3600b68a4c0c TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 429
diff changeset
233 fail("Exception expected");
3600b68a4c0c TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 429
diff changeset
234 } catch (VcsException e) {
3600b68a4c0c TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 429
diff changeset
235 assertEquals(e.getMessage(), "Cannot find mercurial executable at path '" + nonExistingHgPath + "'");
3600b68a4c0c TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 429
diff changeset
236 }
3600b68a4c0c TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 429
diff changeset
237 }
3600b68a4c0c TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 429
diff changeset
238
3600b68a4c0c TW-21403 better error message when hg not found
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 429
diff changeset
239
790
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
240 @TestFor(issues = "TW-36251")
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
241 public void exception_should_contain_no_password_when_password_is_escaped() throws Exception {
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
242 String pwd = "pa{{word";//'{' requires escaping
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
243 String escapedPwd = "pa%7B%7Bword";
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
244 VcsRootImpl root = vcsRoot().withUrl("http://acme.com").withUserName("user").withPassword(pwd).build();
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
245 File nonExistingHg = myTempFiles.createTempFile();
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
246 delete(nonExistingHg);
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
247 String nonExistingHgPath = nonExistingHg.getAbsolutePath();
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
248 root.addProperty(Constants.HG_COMMAND_PATH_PROP, nonExistingHgPath);
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
249 try {
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
250 myVcs.getTestConnectionSupport().testConnection(root);
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
251 fail("Exception expected");
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
252 } catch (VcsException e) {
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
253 String msg = e.getCause().getMessage();
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
254 assertFalse(msg.contains(pwd));
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
255 assertFalse(msg.contains(escapedPwd));
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
256 }
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
257 }
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
258
914a0b473c45 TW-36251 mask escaped password
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 732
diff changeset
259
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
260 public void test_tag() throws IOException, VcsException {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
261 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
262
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
263 String actualTag = myVcs.label("new:tag", "1:1d446e82d356", vcsRoot, new CheckoutRules(""));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
264 assertEquals(actualTag, "new_tag");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
265
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
266 // check the tag is pushed to the parent repository
480
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 474
diff changeset
267 MercurialCommandLine cli = new MercurialCommandLine();
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
268 cli.setExePath(vcsRoot.getProperty(Constants.HG_COMMAND_PATH_PROP));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
269 cli.setWorkDirectory(vcsRoot.getProperty(Constants.REPOSITORY_PROP));
493
236d0866a45f Make tests independent from mercurial settings on agent
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 480
diff changeset
270 cli.setEnvParams(map("HGRCPATH", ""));
504
f490cd3b4f14 Fix tests
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 502
diff changeset
271 cli.setPassParentEnvs(true);
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
272 cli.addParameter("tags");
480
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 474
diff changeset
273 CommandResult res = CommandUtil.runCommand(cli, new CommandSettings());
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
274 assertTrue(res.getStdout().contains("new_tag"));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
275 assertTrue(res.getStdout().contains("1:1d446e82d356"));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
276 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
277
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
278 public void test_tag_in_branch() throws IOException, VcsException {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
279 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo(), "test_branch");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
280
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
281 String actualTag = myVcs.label("branch_tag", "7:376dcf05cd2a", vcsRoot, new CheckoutRules(""));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
282 assertEquals(actualTag, "branch_tag");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
283
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
284 // check the tag is pushed to the parent repository
480
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 474
diff changeset
285 MercurialCommandLine cli = new MercurialCommandLine();
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
286 cli.setExePath(vcsRoot.getProperty(Constants.HG_COMMAND_PATH_PROP));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
287 cli.setWorkDirectory(vcsRoot.getProperty(Constants.REPOSITORY_PROP));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
288 cli.addParameter("tags");
493
236d0866a45f Make tests independent from mercurial settings on agent
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 480
diff changeset
289 cli.setEnvParams(map("HGRCPATH", ""));
504
f490cd3b4f14 Fix tests
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 502
diff changeset
290 cli.setPassParentEnvs(true);
480
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 474
diff changeset
291 CommandResult res = CommandUtil.runCommand(cli, new CommandSettings());
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
292 assertTrue(res.getStdout().contains("branch_tag"));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
293 assertTrue(res.getStdout().contains("7:376dcf05cd2a"));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
294 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
295
241
ffd7234f9d1f test to reproduce TW-16278
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 221
diff changeset
296
605
0e21f908b10d TW-28776 create a tag in branch to which the labeled revision belongs
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 604
diff changeset
297 public void tag_should_be_created_in_branch_to_which_tagged_revision_belongs() throws Exception {
0e21f908b10d TW-28776 create a tag in branch to which the labeled revision belongs
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 604
diff changeset
298 File remoteRepo = copyRepository(myTempFiles, myRep2Path);
0e21f908b10d TW-28776 create a tag in branch to which the labeled revision belongs
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 604
diff changeset
299 VcsRoot root = vcsRoot().withUrl(remoteRepo.getCanonicalPath()).withBranch("default").build();
0e21f908b10d TW-28776 create a tag in branch to which the labeled revision belongs
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 604
diff changeset
300 RepositoryStateData beforeLabelState = myVcs.getCollectChangesPolicy().getCurrentState(root);
0e21f908b10d TW-28776 create a tag in branch to which the labeled revision belongs
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 604
diff changeset
301 String topicCurrentVersion = beforeLabelState.getBranchRevisions().get("topic");
0e21f908b10d TW-28776 create a tag in branch to which the labeled revision belongs
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 604
diff changeset
302 myVcs.label("label_in_branch", topicCurrentVersion, root, CheckoutRules.DEFAULT);
0e21f908b10d TW-28776 create a tag in branch to which the labeled revision belongs
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 604
diff changeset
303 RepositoryStateData afterLabelState = myVcs.getCollectChangesPolicy().getCurrentState(root);
0e21f908b10d TW-28776 create a tag in branch to which the labeled revision belongs
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 604
diff changeset
304 assertEquals(beforeLabelState.getBranchRevisions().get("default"), afterLabelState.getBranchRevisions().get("default"));
0e21f908b10d TW-28776 create a tag in branch to which the labeled revision belongs
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 604
diff changeset
305 assertNotEquals(beforeLabelState.getBranchRevisions().get("topic"), afterLabelState.getBranchRevisions().get("topic"));//topic changed => tag was created there
0e21f908b10d TW-28776 create a tag in branch to which the labeled revision belongs
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 604
diff changeset
306 }
0e21f908b10d TW-28776 create a tag in branch to which the labeled revision belongs
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 604
diff changeset
307
0e21f908b10d TW-28776 create a tag in branch to which the labeled revision belongs
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 604
diff changeset
308
474
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
309 @TestFor(issues = "TW-10076")
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
310 public void should_allow_to_ignore_changes_where_all_files_excluded() throws Exception {
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
311 VcsRootImpl root = createVcsRoot(myRep2Path);
567
27cd2503cea3 Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 566
diff changeset
312 List<ModificationData> changes = myVcs.getCollectChangesPolicy().collectChanges(root, "43023ea3f13b", "a2672ee13212", new CheckoutRules("-:.hgtags"));
474
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
313 assertEquals(changes.size(), 1);
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
314 assertTrue(changes.get(0).isCanBeIgnored());
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
315 }
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
316
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
317
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
318 @TestFor(issues = "TW-10076")
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
319 public void should_not_allow_to_ignore_close_branch_commits() throws Exception {
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
320 VcsRootImpl root = createVcsRoot(myRep2Path);
567
27cd2503cea3 Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 566
diff changeset
321 List<ModificationData> changes = myVcs.getCollectChangesPolicy().collectChanges(root, "df04faa7575a", "43023ea3f13b", CheckoutRules.DEFAULT);
474
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
322 assertEquals(changes.size(), 2);
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
323 assertEquals(changes.get(1).getChangeCount(), 0);
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
324 assertFalse(changes.get(1).isCanBeIgnored());
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
325 }
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
326
6b447cd40492 TW-10076 allow to ignore commits where all files excluded by checkout rules
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 448
diff changeset
327
371
24d926f22e85 TW-16045 allow specify username for tags
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 347
diff changeset
328 public void test_tag_with_specified_username() throws IOException, VcsException {
24d926f22e85 TW-16045 allow specify username for tags
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 347
diff changeset
329 final String customUserForTag = "John Doe <john@some.org>";
443
d0f80762461a Test refactoring: get rid of LocalRepositoryUtil
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 433
diff changeset
330 File repository = copyRepository(myTempFiles, simpleRepo());
371
24d926f22e85 TW-16045 allow specify username for tags
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 347
diff changeset
331 VcsRoot root = vcsRoot().withUrl(repository.getAbsolutePath()).withUserForTag(customUserForTag).build();
24d926f22e85 TW-16045 allow specify username for tags
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 347
diff changeset
332
24d926f22e85 TW-16045 allow specify username for tags
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 347
diff changeset
333 myVcs.label("tag_by_specified_user", "10:9c6a6b4aede0", root, CheckoutRules.DEFAULT);
24d926f22e85 TW-16045 allow specify username for tags
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 347
diff changeset
334
696
a07f685ce394 Get rid of depricated getCurrentVersion() method
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 687
diff changeset
335 RepositoryStateData state = myVcs.getCollectChangesPolicy().getCurrentState(root);
a07f685ce394 Get rid of depricated getCurrentVersion() method
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 687
diff changeset
336 String currentVersion = state.getBranchRevisions().get(state.getDefaultBranchName());
567
27cd2503cea3 Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 566
diff changeset
337 List<ModificationData> changes = myVcs.getCollectChangesPolicy().collectChanges(root, "10:9c6a6b4aede0", currentVersion, CheckoutRules.DEFAULT);
371
24d926f22e85 TW-16045 allow specify username for tags
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 347
diff changeset
338 assertEquals(changes.size(), 1);
24d926f22e85 TW-16045 allow specify username for tags
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 347
diff changeset
339 assertEquals(changes.get(0).getUserName(), customUserForTag);
24d926f22e85 TW-16045 allow specify username for tags
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 347
diff changeset
340 }
24d926f22e85 TW-16045 allow specify username for tags
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 347
diff changeset
341
24d926f22e85 TW-16045 allow specify username for tags
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 347
diff changeset
342
687
e68ae2084759 Run test only in modern mercurial
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 686
diff changeset
343 @RequiredHgVersion(min = "2.7")
e68ae2084759 Run test only in modern mercurial
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 686
diff changeset
344 @Test(dataProviderClass = HgVersionConstraint.class, dataProvider = "installedHgVersion")
e68ae2084759 Run test only in modern mercurial
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 686
diff changeset
345 public void unicode_in_filename(@NotNull HgVersion _) throws Exception {
686
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
346 File repo = copyRepository(myTempFiles, new File("mercurial-tests/testData/unicodeFileName").getAbsolutePath());
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
347 VcsRoot root = vcsRoot().withUrl(repo.getAbsolutePath())
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
348 .withSubrepoChanges(false)
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
349 .withSubreposInPatch(false)
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
350 .withArchiveForPatch(true)
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
351 .build();
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
352
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
353 buildPatch(myVcs, root, null, "51677e03dc19", CheckoutRules.DEFAULT);
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
354
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
355 buildPatch(myVcs, root, "54044489d391", "51677e03dc19", CheckoutRules.DEFAULT);
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
356 }
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
357
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
358
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
359 public void clean_patch_from_archive() throws Exception {
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
360 setName("patch3");
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
361 File repository = copyRepository(myTempFiles, simpleRepo());
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
362 VcsRoot root = vcsRoot().withUrl(repository.getAbsolutePath())
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
363 .withBranch("test_branch")
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
364 .withArchiveForPatch(true)
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
365 .build();
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
366 ByteArrayOutputStream output = buildPatch(myVcs, root, null, "7:376dcf05cd2a", CheckoutRules.DEFAULT);
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
367 checkPatchResult(output.toByteArray());
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
368 }
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
369
1efd1846f00a Add an option for using tar archive for building a full patch
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 644
diff changeset
370
241
ffd7234f9d1f test to reproduce TW-16278
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 221
diff changeset
371 public void labeling_should_not_populate_files_in_local_mirror() throws Exception {
ffd7234f9d1f test to reproduce TW-16278
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 221
diff changeset
372 VcsRootImpl root = createVcsRoot(simpleRepo());
696
a07f685ce394 Get rid of depricated getCurrentVersion() method
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 687
diff changeset
373 myVcs.getCollectChangesPolicy().getCurrentState(root);
241
ffd7234f9d1f test to reproduce TW-16278
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 221
diff changeset
374 File mirror = myVcs.getMirrorManager().getMirrorDir(root.getProperty(Constants.REPOSITORY_PROP));
ffd7234f9d1f test to reproduce TW-16278
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 221
diff changeset
375 File[] files = mirror.listFiles();
ffd7234f9d1f test to reproduce TW-16278
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 221
diff changeset
376 assertEquals(files.length, 1);
ffd7234f9d1f test to reproduce TW-16278
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 221
diff changeset
377 assertEquals(files[0].getName(), ".hg");
ffd7234f9d1f test to reproduce TW-16278
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 221
diff changeset
378
ffd7234f9d1f test to reproduce TW-16278
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 221
diff changeset
379 myVcs.label("v1.0", "7:376dcf05cd2a", root, new CheckoutRules(""));
ffd7234f9d1f test to reproduce TW-16278
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 221
diff changeset
380
ffd7234f9d1f test to reproduce TW-16278
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 221
diff changeset
381 files = mirror.listFiles();
ffd7234f9d1f test to reproduce TW-16278
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 221
diff changeset
382 assertEquals(files.length, 1);
ffd7234f9d1f test to reproduce TW-16278
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 221
diff changeset
383 assertEquals(files[0].getName(), ".hg");
ffd7234f9d1f test to reproduce TW-16278
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 221
diff changeset
384 }
ffd7234f9d1f test to reproduce TW-16278
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 221
diff changeset
385
ffd7234f9d1f test to reproduce TW-16278
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 221
diff changeset
386
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
387 public void test_collect_changes_in_branch() throws Exception {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
388 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo(), "test_branch");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
389
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
390 // fromVersion(6:b9deb9a1c6f4) is not in the branch (it is in the default branch)
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
391 List<ModificationData> changes = collectChanges(vcsRoot, "6:b9deb9a1c6f4", "7:376dcf05cd2a", CheckoutRules.DEFAULT);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
392 assertEquals(1, changes.size());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
393
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
394 ModificationData md1 = changes.get(0);
445
b47cfe5cbaba Do not include revnum in revision
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 444
diff changeset
395 assertEquals(md1.getVersion(), "376dcf05cd2a");
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
396 assertEquals(md1.getDescription(), "new file added in the test_branch");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
397 List<VcsChange> files1 = md1.getChanges();
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
398 assertEquals(1, files1.size());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
399 assertEquals(VcsChangeInfo.Type.ADDED, files1.get(0).getType());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
400 assertEquals(normalizePath(files1.get(0).getRelativeFileName()), "file_in_branch.txt");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
401
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
402 changes = collectChanges(vcsRoot, "7:376dcf05cd2a", "8:04c3ae4c6312", CheckoutRules.DEFAULT);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
403 assertEquals(1, changes.size());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
404
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
405 md1 = changes.get(0);
445
b47cfe5cbaba Do not include revnum in revision
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 444
diff changeset
406 assertEquals(md1.getVersion(), "04c3ae4c6312");
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
407 assertEquals(md1.getDescription(), "file modified");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
408 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
409
588
868916a31d88 Fix incremental patch for commits with removes only
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 586
diff changeset
410 public void incremental_patch_for_commit_with_deletes_only() throws Exception {
868916a31d88 Fix incremental patch for commits with removes only
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 586
diff changeset
411 setName("inc_patch_deletes_only");
868916a31d88 Fix incremental patch for commits with removes only
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 586
diff changeset
412 VcsRoot root = createVcsRoot(simpleRepo(), "test_remove");
868916a31d88 Fix incremental patch for commits with removes only
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 586
diff changeset
413 checkPatchResult(buildPatch(myVcs, root, "9c6a6b4aede0", "e6935c9c80bf", CheckoutRules.DEFAULT).toByteArray());
868916a31d88 Fix incremental patch for commits with removes only
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 586
diff changeset
414 }
868916a31d88 Fix incremental patch for commits with removes only
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 586
diff changeset
415
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
416 public void test_full_patch_from_branch() throws IOException, VcsException {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
417 setName("patch3");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
418 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo(), "test_branch");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
419
444
a05eca69fc01 Ensure plugin works without revnums in revisions
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 443
diff changeset
420 ByteArrayOutputStream output = buildPatch(myVcs, vcsRoot, null, "7:376dcf05cd2a", new CheckoutRules(""));
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
421
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
422 checkPatchResult(output.toByteArray());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
423 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
424
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
425 public void test_full_patch_from_branch_with_checkout_rules() throws IOException, VcsException {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
426 setName("patch3_checkout_rules1");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
427 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo(), "test_branch");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
428
444
a05eca69fc01 Ensure plugin works without revnums in revisions
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 443
diff changeset
429 ByteArrayOutputStream output = buildPatch(myVcs, vcsRoot, null, "7:376dcf05cd2a", new CheckoutRules("+:.=>path"));
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
430
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
431 checkPatchResult(output.toByteArray());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
432 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
433
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
434 public void test_full_patch_from_branch_with_checkout_rules_mapped_and_skipped() throws IOException, VcsException {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
435 setName("patch3_checkout_rules2");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
436 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo(), "test_branch");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
437
444
a05eca69fc01 Ensure plugin works without revnums in revisions
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 443
diff changeset
438 ByteArrayOutputStream output = buildPatch(myVcs, vcsRoot, null, "7:376dcf05cd2a", new CheckoutRules("+:dir1=>path/dir1\n+:dir with space"));
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
439
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
440 checkPatchResult(output.toByteArray());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
441 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
442
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
443 public void test_incremental_patch_from_branch() throws IOException, VcsException {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
444 setName("patch4");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
445 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo(), "test_branch");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
446
444
a05eca69fc01 Ensure plugin works without revnums in revisions
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 443
diff changeset
447 ByteArrayOutputStream output = buildPatch(myVcs, vcsRoot, "7:376dcf05cd2a", "8:04c3ae4c6312", new CheckoutRules(""));
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
448
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
449 checkPatchResult(output.toByteArray());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
450 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
451
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
452 @Test(enabled = false)
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
453 public void support_anchor_branch_notation() throws IOException {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
454 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
455 String repPath = vcsRoot.getProperty(Constants.REPOSITORY_PROP);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
456 vcsRoot.addProperty(Constants.REPOSITORY_PROP, repPath + "#test_branch");
429
04eab204ba39 Remove HgVcsRoot's dependency on HgPathProvider
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 426
diff changeset
457 HgVcsRoot hgRoot = new HgVcsRoot(vcsRoot);
426
c91c4f1ebd53 Settings -> HgVcsRoot
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 412
diff changeset
458 assertEquals("test_branch", hgRoot.getBranchName());
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
459
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
460 vcsRoot.addProperty(Constants.REPOSITORY_PROP, repPath + "#");
429
04eab204ba39 Remove HgVcsRoot's dependency on HgPathProvider
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 426
diff changeset
461 hgRoot = new HgVcsRoot(vcsRoot);
426
c91c4f1ebd53 Settings -> HgVcsRoot
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 412
diff changeset
462 assertEquals("default", hgRoot.getBranchName());
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
463
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
464 vcsRoot.addProperty(Constants.REPOSITORY_PROP, repPath);
429
04eab204ba39 Remove HgVcsRoot's dependency on HgPathProvider
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 426
diff changeset
465 hgRoot = new HgVcsRoot(vcsRoot);
426
c91c4f1ebd53 Settings -> HgVcsRoot
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 412
diff changeset
466 assertEquals("default", hgRoot.getBranchName());
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
467 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
468
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
469 public void build_patch_using_custom_clone_path() throws IOException, VcsException {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
470 setName("cleanPatch1");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
471 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
472 File cloneDir = myTempFiles.createTempDir();
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
473 vcsRoot.addProperty(Constants.SERVER_CLONE_PATH_PROP, cloneDir.getAbsolutePath());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
474
444
a05eca69fc01 Ensure plugin works without revnums in revisions
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 443
diff changeset
475 ByteArrayOutputStream output = buildPatch(myVcs, vcsRoot, null, "4:b06a290a363b", new CheckoutRules(""));
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
476
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
477 checkPatchResult(output.toByteArray());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
478
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
479 assertTrue(new File(cloneDir, new File(vcsRoot.getProperty(Constants.REPOSITORY_PROP)).getName()).isDirectory());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
480 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
481
411
490024d8e5fd Test patch from newer revision to earlier
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
482 public void build_patch_from_newer_revision_to_earlier() throws Exception {
490024d8e5fd Test patch from newer revision to earlier
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
483 setName("patch5");
490024d8e5fd Test patch from newer revision to earlier
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
484 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
444
a05eca69fc01 Ensure plugin works without revnums in revisions
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 443
diff changeset
485 ByteArrayOutputStream output = buildPatch(myVcs, vcsRoot, "6:b9deb9a1c6f4", "3:9522278aa38d", CheckoutRules.DEFAULT);
411
490024d8e5fd Test patch from newer revision to earlier
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
486 checkPatchResult(output.toByteArray());
490024d8e5fd Test patch from newer revision to earlier
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
487 }
490024d8e5fd Test patch from newer revision to earlier
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
488
412
5d4351306d57 Build full patch if cannot build incremental one
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 411
diff changeset
489 public void build_patch_from_unknown_revision() throws Exception {
5d4351306d57 Build full patch if cannot build incremental one
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 411
diff changeset
490 setName("patch6");
5d4351306d57 Build full patch if cannot build incremental one
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 411
diff changeset
491 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
444
a05eca69fc01 Ensure plugin works without revnums in revisions
Dmitry Neverov <dmitry.neverov@gmail.com>
parents: 443
diff changeset
492 ByteArrayOutputStream output = buildPatch(myVcs, vcsRoot, "6:hahahahahaha", "3:9522278aa38d", new CheckoutRules("+:.=>path"));
412
5d4351306d57 Build full patch if cannot build incremental one
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 411
diff changeset
493 checkPatchResult(output.toByteArray());
5d4351306d57 Build full patch if cannot build incremental one
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 411
diff changeset
494 }
5d4351306d57 Build full patch if cannot build incremental one
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 411
diff changeset
495
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
496 private String mergeCommittsRepo() {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
497 return new File("mercurial-tests/testData/rep2").getAbsolutePath();
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
498 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
499
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
500 public void test_collect_changes_between_two_different_roots() throws Exception {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
501 VcsRootImpl defaultRoot = createVcsRoot(mergeCommittsRepo());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
502 VcsRootImpl branchRoot = createVcsRoot(mergeCommittsRepo(), "test");
567
27cd2503cea3 Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 566
diff changeset
503 List<ModificationData> changes = myVcs.getCollectChangesPolicy().collectChanges(defaultRoot, "11:48177654181c", branchRoot, "10:fc524efc2bc4", CheckoutRules.DEFAULT);
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
504 assertEquals(changes.size(), 2);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
505
445
b47cfe5cbaba Do not include revnum in revision
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 444
diff changeset
506 assertEquals(changes.get(0).getVersion(), "8c44244d6645");
b47cfe5cbaba Do not include revnum in revision
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 444
diff changeset
507 assertEquals(changes.get(1).getVersion(), "fc524efc2bc4");
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
508 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
509
274
5cbb5ae712e9 Add test for TW-17797
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 271
diff changeset
510 public void collectChanges_should_return_all_changes_from_branch() throws Exception {
5cbb5ae712e9 Add test for TW-17797
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 271
diff changeset
511 VcsRootImpl defaultBranchRoot = createVcsRoot(myRep2Path, "default");
5cbb5ae712e9 Add test for TW-17797
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 271
diff changeset
512 VcsRootImpl personalBranchRoot = createVcsRoot(myRep2Path, "personal-branch");
567
27cd2503cea3 Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 566
diff changeset
513 List<ModificationData> modifications = myVcs.getCollectChangesPolicy().collectChanges(defaultBranchRoot, "16:505c5b9d01e6", personalBranchRoot, "17:9ec402c74298", CheckoutRules.DEFAULT);
274
5cbb5ae712e9 Add test for TW-17797
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 271
diff changeset
514 assertEquals(3, modifications.size());
5cbb5ae712e9 Add test for TW-17797
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 271
diff changeset
515 }
5cbb5ae712e9 Add test for TW-17797
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 271
diff changeset
516
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
517 public void test_collect_changes_merge() throws Exception {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
518 VcsRootImpl vcsRoot = createVcsRoot(mergeCommittsRepo());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
519
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
520 List<ModificationData> changes = collectChanges(vcsRoot, "1:a3d15477d297", "4:6eeb8974fe67", CheckoutRules.DEFAULT);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
521 assertEquals(changes.size(), 3);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
522
445
b47cfe5cbaba Do not include revnum in revision
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 444
diff changeset
523 assertEquals(changes.get(0).getVersion(), "db8a04d262f3");
b47cfe5cbaba Do not include revnum in revision
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 444
diff changeset
524 assertEquals(changes.get(1).getVersion(), "2538c02bafeb");
b47cfe5cbaba Do not include revnum in revision
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 444
diff changeset
525 assertEquals(changes.get(2).getVersion(), "6eeb8974fe67");
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
526
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
527 assertFiles(Arrays.asList("A dir1/file1.txt"), changes.get(0));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
528 assertFiles(Arrays.asList("A dir2/file2.txt"), changes.get(1));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
529 assertFiles(Arrays.asList("A dir1/file1.txt", "A dir2/file2.txt"), changes.get(2));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
530 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
531
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
532 public void test_collect_changes_merge_conflict() throws Exception {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
533 VcsRootImpl vcsRoot = createVcsRoot(mergeCommittsRepo());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
534
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
535 List<ModificationData> changes = collectChanges(vcsRoot, "6:6066b677d026", "8:b6e2d176fe8e", CheckoutRules.DEFAULT);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
536 assertEquals(changes.size(), 2);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
537
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
538 assertFiles(Arrays.asList("A dir4/file41.txt"), changes.get(0));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
539 assertFiles(Arrays.asList("M dir4/file41.txt", "A dir4/file42.txt", "A dir4/file43.txt", "R dir3/file3.txt"), changes.get(1));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
540 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
541
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
542 public void test_collect_changes_merge_conflict_named_branch() throws Exception {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
543 VcsRootImpl vcsRoot = createVcsRoot(mergeCommittsRepo());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
544
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
545 List<ModificationData> changes = collectChanges(vcsRoot, "8:b6e2d176fe8e", "12:1e620196c4b6", CheckoutRules.DEFAULT);
312
8deb526363f5 TW-17882 report changes from the merged named branches
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 310
diff changeset
546 assertEquals(changes.size(), 4);
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
547
312
8deb526363f5 TW-17882 report changes from the merged named branches
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 310
diff changeset
548 assertFiles(Arrays.asList("A dir6/file6.txt"), changes.get(2));
8deb526363f5 TW-17882 report changes from the merged named branches
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 310
diff changeset
549 assertFiles(Arrays.asList("M dir6/file6.txt", "A dir5/file5.txt"), changes.get(3));
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
550 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
551
260
62f9389a4095 TW-17530
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
552 //TW-17530
62f9389a4095 TW-17530
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
553 public void test_collect_changes_with_exclude_checkout_rules() throws Exception {
62f9389a4095 TW-17530
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
554 VcsRootImpl root = createVcsRoot(simpleRepo());
62f9389a4095 TW-17530
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
555 collectChanges(root, "0:9875b412a788", "10:9c6a6b4aede0", new CheckoutRules("-:dir1\n" +
62f9389a4095 TW-17530
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
556 "-:dir with space"));
62f9389a4095 TW-17530
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
557 }
62f9389a4095 TW-17530
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
558
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
559 //TW-10172
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
560 public void should_not_fill_server_clone_path() {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
561 assertFalse(myVcs.getDefaultVcsProperties().containsKey(Constants.SERVER_CLONE_PATH_PROP));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
562
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
563 Map<String, String> rootProperties = new HashMap<String, String>() {{
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
564 put(Constants.HG_COMMAND_PATH_PROP, "hg");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
565 put(Constants.REPOSITORY_PROP, "http://somewhere.com/path");
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
566 }};
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
567
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
568 assertFalse(rootProperties.containsKey(Constants.SERVER_CLONE_PATH_PROP));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
569 myVcs.getVcsPropertiesProcessor().process(rootProperties);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
570 assertFalse(rootProperties.containsKey(Constants.SERVER_CLONE_PATH_PROP));
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
571 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
572
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
573 public void use_compressed_transfer_by_default() {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
574 VcsRootImpl root = new VcsRootImpl(1, Constants.VCS_NAME);
597
65f5e86206e6 fix compilation
Pavel.Sher
parents: 588
diff changeset
575 root.setProperties(myVcs.getDefaultVcsProperties());
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
576 root.addProperty(Constants.REPOSITORY_PROP, "http://host.com/path");
429
04eab204ba39 Remove HgVcsRoot's dependency on HgPathProvider
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 426
diff changeset
577 HgVcsRoot hgRoot = new HgVcsRoot(root);
502
2755266b7dd5 Use uncompressed transfer explicitly
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 493
diff changeset
578 assertTrue(hgRoot.isUncompressedTransfer());
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
579 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
580
183
58f712889f59 Add test to reproduce TW-15672
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
581
58f712889f59 Add test to reproduce TW-15672
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
582 //TW-15762
58f712889f59 Add test to reproduce TW-15672
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
583 public void should_use_clone_to_root_parameter() throws IOException, VcsException {
58f712889f59 Add test to reproduce TW-15672
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
584 VcsRootImpl vcsRoot = createVcsRoot(simpleRepo());
58f712889f59 Add test to reproduce TW-15672
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
585 File cloneDir = myTempFiles.createTempDir();
58f712889f59 Add test to reproduce TW-15672
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
586 vcsRoot.addProperty(Constants.SERVER_CLONE_PATH_PROP, cloneDir.getAbsolutePath());
696
a07f685ce394 Get rid of depricated getCurrentVersion() method
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 687
diff changeset
587 myVcs.getCollectChangesPolicy().getCurrentState(vcsRoot);
183
58f712889f59 Add test to reproduce TW-15672
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
588 }
58f712889f59 Add test to reproduce TW-15672
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
589
58f712889f59 Add test to reproduce TW-15672
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 181
diff changeset
590
377
dbdee21f2893 Labeling should not affect vcs root settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 346
diff changeset
591 public void labeling_should_not_change_vcs_root_settings() throws Exception {
dbdee21f2893 Labeling should not affect vcs root settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 346
diff changeset
592 VcsRootImpl root = createVcsRoot(simpleRepo(), "test_branch");
dbdee21f2893 Labeling should not affect vcs root settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 346
diff changeset
593 assertNull(root.getProperty(Constants.SERVER_CLONE_PATH_PROP));
dbdee21f2893 Labeling should not affect vcs root settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 346
diff changeset
594 myVcs.label("branch_tag", "7:376dcf05cd2a", root, CheckoutRules.DEFAULT);
dbdee21f2893 Labeling should not affect vcs root settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 346
diff changeset
595 assertNull(root.getProperty(Constants.SERVER_CLONE_PATH_PROP));
dbdee21f2893 Labeling should not affect vcs root settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 346
diff changeset
596 }
dbdee21f2893 Labeling should not affect vcs root settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 346
diff changeset
597
dbdee21f2893 Labeling should not affect vcs root settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 346
diff changeset
598
604
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
599 @TestFor(issues = "TW-24810")
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
600 public void do_not_delete_symlinked_dir() throws Exception {
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
601 if (!SystemInfo.isUnix)
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
602 return;
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
603
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
604 //create a file on the server
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
605 File dirOnTheServer = myTempFiles.createTempDir();
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
606 File fileOnTheServer = new File(dirOnTheServer, "file.on.server");
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
607 FileUtil.writeFile(fileOnTheServer, "some text");
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
608
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
609 //create a remote repository with symlink pointing to the file on the server
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
610 File repository = copyRepository(myTempFiles, simpleRepo());
771
06dcc79b304d use API only
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
611 ServerHgRepo repo = new ServerHgRepo(new TestCommandSettingsFactory(), myPluginConfig, repository, getHgPath(), new AuthSettings());
604
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
612 repo.update().toRevision("9c6a6b4aede0").call();
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
613 new ProcessBuilder("ln", "-s", dirOnTheServer.getCanonicalPath()).directory(repository).start().waitFor();
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
614 new ProcessBuilder(getHgPath(), "add", dirOnTheServer.getName()).directory(repository).start().waitFor();
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
615 new ProcessBuilder(getHgPath(), "commit", "-m", "add a symlink").directory(repository).start().waitFor();
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
616
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
617 String revisionWithSymlink = repo.branches().call().get("default");
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
618
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
619 //build a clean patch on revision wich contain a symlink
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
620 VcsRoot root = vcsRoot().withUrl(repository.getCanonicalPath()).build();
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
621 buildPatch(myVcs, root, null, revisionWithSymlink, CheckoutRules.DEFAULT);
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
622
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
623 //check file & dir still exist
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
624 assertTrue(dirOnTheServer.exists());
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
625 assertTrue(fileOnTheServer.exists());
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
626 }
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
627
3eb02fd5fd78 TW-24810
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 597
diff changeset
628
432
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
629 public void hg_version_should_not_depend_on_locale() throws IOException, VcsException {
493
236d0866a45f Make tests independent from mercurial settings on agent
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 480
diff changeset
630 HgRepo repo = new HgRepo(new TestCommandSettingsFactory(), new File(simpleRepo()), Util.getHgPath(), new AuthSettings(null, null));
432
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
631 HgVersion defaultLocaleVersion = repo.version().call();
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
632
493
236d0866a45f Make tests independent from mercurial settings on agent
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 480
diff changeset
633 VersionCommand russianLocalVersion = new VersionCommand(new TestCommandSettingsFactory().create(), Util.getHgPath(), new File(simpleRepo())) {
432
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
634 @Override
480
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 474
diff changeset
635 protected MercurialCommandLine createCommandLine() {
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 474
diff changeset
636 MercurialCommandLine commandLine = super.createCommandLine();
432
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
637 Map<String, String> env = commandLine.getEnvParams();
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
638 if (env == null)
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
639 env = new HashMap<String, String>();
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
640 env.put("LANG", "ru_RU");
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
641 env.put("LANGUAGE", "ru_RU");
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
642 env.put("LC_MESSAGE", "ru_RU");
493
236d0866a45f Make tests independent from mercurial settings on agent
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 480
diff changeset
643 env.put("HGRCPATH", "");
432
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
644 commandLine.setEnvParams(env);
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
645 return commandLine;
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
646 }
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
647 };
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
648
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
649 HgVersion russianLocaleVersion = russianLocalVersion.call();
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
650 assertEquals(russianLocaleVersion, defaultLocaleVersion);
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
651 }
4a76645fe087 TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
652
446
8a1231dc6a2c Collect changes between states
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 445
diff changeset
653 public void collect_changes_between_states() throws Exception {
8a1231dc6a2c Collect changes between states
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 445
diff changeset
654 VcsRootImpl root = createVcsRoot(myRep2Path);
567
27cd2503cea3 Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 566
diff changeset
655 List<ModificationData> changes = myVcs.getCollectChangesPolicy().collectChanges(root,
485
774229a5fcd2 fix compilation, update API
eugene.petrenko@gmail.com
parents: 480
diff changeset
656 RepositoryStateData.createVersionState("default", map("default", "1e620196c4b6")),
774229a5fcd2 fix compilation, update API
eugene.petrenko@gmail.com
parents: 480
diff changeset
657 RepositoryStateData.createVersionState("default", map("default", "505c5b9d01e6", "personal-branch", "96b78d73081d")),
446
8a1231dc6a2c Collect changes between states
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 445
diff changeset
658 CheckoutRules.DEFAULT);
8a1231dc6a2c Collect changes between states
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 445
diff changeset
659 assertEquals(changes.size(), 4);
543
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 527
diff changeset
660 assertThat(changes, hasItem(modificationData().withVersion("dec47d2d49bf")));
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 527
diff changeset
661 assertThat(changes, hasItem(modificationData().withVersion("78e67807f916")));
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 527
diff changeset
662 assertThat(changes, hasItem(modificationData().withVersion("96b78d73081d")));
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 527
diff changeset
663 assertThat(changes, hasItem(modificationData().withVersion("505c5b9d01e6")));
442
6c43663744d9 getCurrentVersion do pull only when remote repository is updated
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 432
diff changeset
664 }
6c43663744d9 getCurrentVersion do pull only when remote repository is updated
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 432
diff changeset
665
6c43663744d9 getCurrentVersion do pull only when remote repository is updated
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 432
diff changeset
666
446
8a1231dc6a2c Collect changes between states
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 445
diff changeset
667 public void collect_changes_between_states_does_not_report_duplicate_changes() throws Exception {
8a1231dc6a2c Collect changes between states
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 445
diff changeset
668 VcsRootImpl root = createVcsRoot(myRep2Path);
567
27cd2503cea3 Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 566
diff changeset
669 List<ModificationData> changes = myVcs.getCollectChangesPolicy().collectChanges(root,
485
774229a5fcd2 fix compilation, update API
eugene.petrenko@gmail.com
parents: 480
diff changeset
670 RepositoryStateData.createVersionState("default", map("default", "8c44244d6645")),
774229a5fcd2 fix compilation, update API
eugene.petrenko@gmail.com
parents: 480
diff changeset
671 RepositoryStateData.createVersionState("default", map("default", "505c5b9d01e6", "personal-branch", "9ec402c74298")),
446
8a1231dc6a2c Collect changes between states
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 445
diff changeset
672 CheckoutRules.DEFAULT);
8a1231dc6a2c Collect changes between states
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 445
diff changeset
673 assertEquals(changes.size(), 8);
543
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 527
diff changeset
674 assertThat(changes, hasItem(modificationData().withVersion("9ec402c74298")));
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 527
diff changeset
675 assertThat(changes, hasItem(modificationData().withVersion("505c5b9d01e6")));
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 527
diff changeset
676 assertThat(changes, hasItem(modificationData().withVersion("96b78d73081d")));
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 527
diff changeset
677 assertThat(changes, hasItem(modificationData().withVersion("78e67807f916")));
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 527
diff changeset
678 assertThat(changes, hasItem(modificationData().withVersion("dec47d2d49bf")));
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 527
diff changeset
679 assertThat(changes, hasItem(modificationData().withVersion("1e620196c4b6")));
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 527
diff changeset
680 assertThat(changes, hasItem(modificationData().withVersion("48177654181c")));
a157a25fd3af extract matcher
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 527
diff changeset
681 assertThat(changes, hasItem(modificationData().withVersion("fc524efc2bc4")));
442
6c43663744d9 getCurrentVersion do pull only when remote repository is updated
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 432
diff changeset
682 }
6c43663744d9 getCurrentVersion do pull only when remote repository is updated
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 432
diff changeset
683
6c43663744d9 getCurrentVersion do pull only when remote repository is updated
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 432
diff changeset
684
564
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
685 @RequiredHgVersion(min = "1.7.0")
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
686 @Test(dataProviderClass = HgVersionConstraint.class, dataProvider = "installedHgVersion")
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
687 public void should_not_report_redundant_changes_after_merge(@NotNull HgVersion _) throws Exception {
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
688 VcsRootImpl root = createVcsRoot(myRep2Path);
567
27cd2503cea3 Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 566
diff changeset
689 List<ModificationData> changes = myVcs.getCollectChangesPolicy().collectChanges(root,
552
ba4f9148d39e Optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 543
diff changeset
690 RepositoryStateData.createVersionState("default", map("default", "505c5b9d01e6", "personal-branch", "9ec402c74298")),
ba4f9148d39e Optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 543
diff changeset
691 RepositoryStateData.createVersionState("default", map("default", "df04faa7575a", "personal-branch", "9ec402c74298")),
564
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
692 CheckoutRules.DEFAULT);
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
693 assertEquals(changes.size(), 1);
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
694 }
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
695
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
696
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
697 @RequiredHgVersion(min = "1.7.0")
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
698 @Test(dataProviderClass = HgVersionConstraint.class, dataProvider = "installedHgVersion")
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
699 public void should_not_report_duplicate_changes(@NotNull HgVersion _) throws Exception {
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
700 VcsRootImpl root = createVcsRoot(myRep2Path);
567
27cd2503cea3 Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 566
diff changeset
701 List<ModificationData> changes = myVcs.getCollectChangesPolicy().collectChanges(root,
555
4f1c0ecc3371 Do not report duplicate changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 553
diff changeset
702 RepositoryStateData.createVersionState("default", map("default", "505c5b9d01e6", "personal-branch", "96b78d73081d")),
4f1c0ecc3371 Do not report duplicate changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 553
diff changeset
703 RepositoryStateData.createVersionState("default", map("default", "df04faa7575a", "personal-branch", "9ec402c74298")),
564
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
704 CheckoutRules.DEFAULT);
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
705 assertThat(changes, not(hasItem(modificationData().withVersion("dec47d2d49bf"))));
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
706 }
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
707
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
708
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
709 @RequiredHgVersion(min = "1.7.0")
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
710 @Test(dataProviderClass = HgVersionConstraint.class, dataProvider = "installedHgVersion")
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
711 public void should_not_report_duplicate_changes2(@NotNull HgVersion _) throws Exception {
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
712 VcsRootImpl root = createVcsRoot(myRep2Path);
567
27cd2503cea3 Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 566
diff changeset
713 List<ModificationData> changes = myVcs.getCollectChangesPolicy().collectChanges(root,
557
2b8299ba321d Speed up changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 555
diff changeset
714 RepositoryStateData.createVersionState("default", map("default", "528572bbf77b", "personal-branch", "27184c50d7ef")),
2b8299ba321d Speed up changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 555
diff changeset
715 RepositoryStateData.createVersionState("default", map("default", "4780519e01aa", "personal-branch", "fd50e4842211")),
564
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
716 CheckoutRules.DEFAULT);
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
717 assertThat(changes, not(hasItem(modificationData().withVersion("4dbb87c381be"))));
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
718 }
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
719
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
720
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
721 @RequiredHgVersion(min = "1.7.0")
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
722 @Test(dataProviderClass = HgVersionConstraint.class, dataProvider = "installedHgVersion")
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
723 public void should_not_report_all_changes_in_repository_if_default_branch_is_unrelated(@NotNull HgVersion _) throws Exception {
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
724 VcsRootImpl root = createVcsRoot(myRep2Path);
567
27cd2503cea3 Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 566
diff changeset
725 List<ModificationData> changes = myVcs.getCollectChangesPolicy().collectChanges(root,
561
35098f0c8fda fix test
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 560
diff changeset
726 RepositoryStateData.createVersionState("NULL", map("NULL", "1f355761350e")),
35098f0c8fda fix test
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 560
diff changeset
727 RepositoryStateData.createVersionState("NULL", map("NULL", "1f355761350e", "personal-branch", "fd50e4842211")),
564
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
728 CheckoutRules.DEFAULT);
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
729 assertEquals(0, changes.size());
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
730 }
d012388935fb TW-26379 optimize changes collecting
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 504
diff changeset
731
555
4f1c0ecc3371 Do not report duplicate changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 553
diff changeset
732
609
86e187882960 Test for TW-29998
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 605
diff changeset
733 @TestFor(issues = "TW-29998")
86e187882960 Test for TW-29998
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 605
diff changeset
734 public void test_rev_not_found() throws Exception {
86e187882960 Test for TW-29998
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 605
diff changeset
735 VcsRoot root = createVcsRoot(myRep2Path);
86e187882960 Test for TW-29998
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 605
diff changeset
736 //there should be no exception, even though 010101010101 is not in the repository
86e187882960 Test for TW-29998
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 605
diff changeset
737 myVcs.getCollectChangesPolicy().collectChanges(root,
86e187882960 Test for TW-29998
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 605
diff changeset
738 RepositoryStateData.createVersionState("default", map("default", "737c6f57ef84", "unknown.branch", "010101010101")),
86e187882960 Test for TW-29998
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 605
diff changeset
739 RepositoryStateData.createVersionState("default", map("default", "4780519e01aa", "topic", "fd50e4842211")),
86e187882960 Test for TW-29998
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 605
diff changeset
740 CheckoutRules.DEFAULT);
86e187882960 Test for TW-29998
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 605
diff changeset
741 }
86e187882960 Test for TW-29998
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 605
diff changeset
742
86e187882960 Test for TW-29998
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 605
diff changeset
743
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
744 private void assertFiles(final List<String> expectedFiles, final ModificationData modificationData) {
289
86ae99a7c5d6 Use customized xml output from the 'hg log' command instead of running 'hg status' for every commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 260
diff changeset
745 Set<String> actualFiles = new HashSet<String>();
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
746 for (VcsChange vc: modificationData.getChanges()) {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
747 actualFiles.add(toFileStatus(vc.getType()) + " " + vc.getRelativeFileName());
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
748 }
289
86ae99a7c5d6 Use customized xml output from the 'hg log' command instead of running 'hg status' for every commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 260
diff changeset
749 Assert.assertEquals("Actual files: " + actualFiles.toString(), new HashSet<String>(expectedFiles), actualFiles);
174
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
750 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
751
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
752 private String toFileStatus(VcsChange.Type type) {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
753 switch (type) {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
754 case ADDED:
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
755 return "A";
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
756 case REMOVED:
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
757 return "R";
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
758 case CHANGED:
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
759 return "M";
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
760 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
761 return "?";
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
762 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
763
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
764 private Object normalizePath(final String path) {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
765 return path.replace(File.separatorChar, '/');
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
766 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
767
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
768
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
769 public void test_collect_changes_using_checkout_rules() {
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
770 assertTrue(myVcs.getCollectChangesPolicy() instanceof CollectChangesByCheckoutRules);
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
771 }
2faaa84c0896 Fix TW-15195: Add option in UI to do --uncompressed clone.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 165 172
diff changeset
772 }
338
d31d7c81b637 Support subrepositories while building clean patch.
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 329
diff changeset
773