Mercurial > hg > mercurial
view mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/AgentSideCheckoutWithSubreposTest.java @ 330:dd55596a5753
Add ability to specify timeout for pull operation (teamcity.hg.pull.timeout.seconds)
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Fri, 28 Oct 2011 19:08:33 +0300 |
parents | e9cdb499350d |
children | 53b430731041 |
line wrap: on
line source
package jetbrains.buildServer.buildTriggers.vcs.mercurial; import com.intellij.openapi.diagnostic.Logger; import jetbrains.buildServer.TempFiles; import jetbrains.buildServer.agent.AgentRunningBuild; import jetbrains.buildServer.agent.BuildAgentConfiguration; import jetbrains.buildServer.agent.BuildProgressLogger; import jetbrains.buildServer.agent.vcs.UpdateByIncludeRules2; import jetbrains.buildServer.log.Log4jFactory; import jetbrains.buildServer.util.FileUtil; import jetbrains.buildServer.vcs.CheckoutRules; import jetbrains.buildServer.vcs.IncludeRule; import jetbrains.buildServer.vcs.VcsException; import jetbrains.buildServer.vcs.VcsRoot; import jetbrains.buildServer.vcs.impl.VcsRootImpl; import org.jetbrains.annotations.NotNull; import org.jmock.Expectations; import org.jmock.Mockery; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.io.File; import java.io.IOException; import java.util.Collections; /** * @author dmitry.neverov */ @Test public class AgentSideCheckoutWithSubreposTest { private TempFiles myTempFiles = new TempFiles(); private File myOriginalRepositoriesParentDir; private File myWorkDir; private Mockery myContext; private BuildProgressLogger myLogger; private UpdateByIncludeRules2 myVcsSupport; private int myBuildCounter = 0; private File myR1Dir; static { Logger.setFactory(new Log4jFactory()); } @BeforeMethod public void setUp() throws Exception { myOriginalRepositoriesParentDir = myTempFiles.createTempDir(); myWorkDir = new File(myOriginalRepositoriesParentDir, "agentWorkDir"); myContext = new Mockery(); final BuildAgentConfiguration agentConfig = myContext.mock(BuildAgentConfiguration.class); myContext.checking(new Expectations() {{ allowing(agentConfig).getCacheDirectory("mercurial"); will(returnValue(myTempFiles.createTempDir())); allowing(agentConfig).getParametersResolver(); will(returnValue(new HgPathResolver())); }}); myVcsSupport = new MercurialAgentSideVcsSupport(new AgentPluginConfigImpl(agentConfig), new AgentHgPathProvider(agentConfig)); myLogger = myContext.mock(BuildProgressLogger.class); myContext.checking(new Expectations() {{ allowing(myLogger).message(with(any(String.class))); allowing(myLogger).warning(with(any(String.class))); }}); myR1Dir = copy(new File("mercurial-tests/testData/subrepos/r1")); copy(new File("mercurial-tests/testData/subrepos/r2")); copy(new File("mercurial-tests/testData/subrepos/r3")); } @AfterMethod public void tearDown() { myTempFiles.cleanup(); } public void subrepository_url_changed() throws Exception { VcsRootImpl root = new VcsRootBuilder() .repository(myR1Dir.getAbsolutePath()) .build(); doUpdate(root, "34017377d9c3"); doUpdate(root, "d350e7209906"); } private void doUpdate(final VcsRoot vcsRoot, final String toVersion) throws VcsException { final AgentRunningBuild build = myContext.mock(AgentRunningBuild.class, "build" + myBuildCounter++); myContext.checking(new Expectations() {{ allowing(build).getBuildLogger(); will(returnValue(myLogger)); allowing(build).getSharedConfigParameters(); will(returnValue(Collections.emptyMap())); }}); myVcsSupport.getUpdater(vcsRoot, CheckoutRules.DEFAULT, toVersion, myWorkDir, build, false).process(IncludeRule.createDefaultInstance(), myWorkDir); } private File copy(@NotNull File originalRepositoryDir) throws IOException { String dirName = originalRepositoryDir.getName(); File copyDir = new File(myOriginalRepositoriesParentDir, dirName); FileUtil.copyDir(originalRepositoryDir, copyDir); if (new File(copyDir, "hg").isDirectory()) { FileUtil.rename(new File(copyDir, "hg"), new File(copyDir, ".hg")); } return copyDir; } }