Mercurial > hg > mercurial
annotate mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/BaseAgentSideCheckoutTestCase.java @ 856:a11bcfb63f4f
Support sparse checkout
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Tue, 08 Jul 2014 16:15:55 +0200 |
parents | 80ae3dc66685 |
children | c28e68e22272 |
rev | line source |
---|---|
834
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
1 /* |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
2 * Copyright 2000-2014 JetBrains s.r.o. |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
3 * |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
4 * Licensed under the Apache License, Version 2.0 (the "License"); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
5 * you may not use this file except in compliance with the License. |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
6 * You may obtain a copy of the License at |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
7 * |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
8 * http://www.apache.org/licenses/LICENSE-2.0 |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
9 * |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
10 * Unless required by applicable law or agreed to in writing, software |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
11 * distributed under the License is distributed on an "AS IS" BASIS, |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
13 * See the License for the specific language governing permissions and |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
14 * limitations under the License. |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
15 */ |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
16 |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
17 package jetbrains.buildServer.buildTriggers.vcs.mercurial; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
18 |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
19 import jetbrains.buildServer.agent.AgentRunningBuild; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
20 import jetbrains.buildServer.agent.BuildAgentConfiguration; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
21 import jetbrains.buildServer.agent.BuildProgressLogger; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
22 import jetbrains.buildServer.agent.vcs.UpdateByIncludeRules2; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
23 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.CommandSettingsForRootImpl; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
24 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.CommandlineViaFileWrapperWeaver; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
25 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.ExtensionsWeaver; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
26 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.TestCommandSettingsFactory; |
856
a11bcfb63f4f
Support sparse checkout
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
834
diff
changeset
|
27 import jetbrains.buildServer.buildTriggers.vcs.mercurial.ext.MercurialExtensionManager; |
834
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
28 import jetbrains.buildServer.vcs.CheckoutRules; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
29 import jetbrains.buildServer.vcs.IncludeRule; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
30 import jetbrains.buildServer.vcs.VcsException; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
31 import jetbrains.buildServer.vcs.VcsRoot; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
32 import org.jetbrains.annotations.NotNull; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
33 import org.jmock.Expectations; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
34 import org.jmock.Mockery; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
35 import org.testng.annotations.BeforeMethod; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
36 |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
37 import java.io.File; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
38 import java.util.HashMap; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
39 |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
40 public abstract class BaseAgentSideCheckoutTestCase extends BaseMercurialTestCase { |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
41 |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
42 protected Mockery myContext; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
43 protected BuildProgressLogger myLogger; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
44 protected UpdateByIncludeRules2 myVcsSupport; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
45 private int myBuildCounter = 0; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
46 protected File myWorkDir; |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
47 |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
48 @Override |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
49 @BeforeMethod |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
50 public void setUp() throws Exception { |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
51 super.setUp(); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
52 |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
53 myContext = new Mockery(); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
54 |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
55 final BuildAgentConfiguration agentConfig = myContext.mock(BuildAgentConfiguration.class); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
56 myContext.checking(new Expectations() {{ |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
57 allowing(agentConfig).getCacheDirectory("mercurial"); will(returnValue(myTempFiles.createTempDir())); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
58 allowing(agentConfig).getParametersResolver(); will(returnValue(new HgPathResolver())); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
59 }}); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
60 |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
61 final AgentPluginConfigImpl pluginConfig = new AgentPluginConfigImpl(agentConfig); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
62 MirrorManager mirrorManager = new MirrorManagerImpl(pluginConfig); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
63 CommandSettingsForRootImpl commandSettingsFactory = new CommandSettingsForRootImpl(new TestCommandSettingsFactory(), new ExtensionsWeaver(), new CommandlineViaFileWrapperWeaver()); |
856
a11bcfb63f4f
Support sparse checkout
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
834
diff
changeset
|
64 myVcsSupport = new MercurialAgentSideVcsSupport(pluginConfig, mirrorManager, new AgentRepoFactory(pluginConfig, commandSettingsFactory, new AgentHgPathProvider(agentConfig)), |
a11bcfb63f4f
Support sparse checkout
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
834
diff
changeset
|
65 new MercurialExtensionManager()); |
834
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
66 |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
67 myLogger = myContext.mock(BuildProgressLogger.class); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
68 myContext.checking(new Expectations() {{ |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
69 allowing(myLogger).message(with(any(String.class))); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
70 allowing(myLogger).warning(with(any(String.class))); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
71 }}); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
72 |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
73 myWorkDir = myTempFiles.createTempDir(); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
74 } |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
75 |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
76 |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
77 protected void checkout(@NotNull VcsRoot vcsRoot, @NotNull String toVersion) throws VcsException { |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
78 checkout(vcsRoot, toVersion, false); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
79 } |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
80 |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
81 protected void checkout(@NotNull VcsRoot vcsRoot, @NotNull String toVersion, final boolean useLocalMirrors) throws VcsException { |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
82 final AgentRunningBuild build = myContext.mock(AgentRunningBuild.class, "build" + myBuildCounter++); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
83 myContext.checking(new Expectations() {{ |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
84 allowing(build).getBuildLogger(); will(returnValue(myLogger)); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
85 allowing(build).getSharedConfigParameters(); will(returnValue(new HashMap<String, String>() {{ |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
86 put("teamcity.hg.use.local.mirrors", useLocalMirrors ? "true" : "false"); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
87 }})); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
88 }}); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
89 myVcsSupport.getUpdater(vcsRoot, CheckoutRules.DEFAULT, toVersion, myWorkDir, build, false).process(IncludeRule.createDefaultInstance(), myWorkDir); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
90 } |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
91 } |