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 }