Mercurial > hg > mercurial
view mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/BaseCommandTestCase.java @ 977:38adef4f1b8f Indore-2017.2.x
Update copyright
author | pavel.sher |
---|---|
date | Mon, 22 Jan 2018 11:40:45 +0100 |
parents | 31a1aca3305c |
children | 10dc26b32c35 |
line wrap: on
line source
/* * Copyright 2000-2018 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jetbrains.buildServer.buildTriggers.vcs.mercurial.command; import jetbrains.buildServer.BaseTestCase; import jetbrains.buildServer.TempFiles; import jetbrains.buildServer.buildTriggers.vcs.mercurial.*; import jetbrains.buildServer.vcs.VcsException; import jetbrains.buildServer.vcs.VcsRoot; import jetbrains.buildServer.vcs.impl.VcsRootImpl; import org.jetbrains.annotations.NotNull; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import static jetbrains.buildServer.buildTriggers.vcs.mercurial.Util.copyRepository; public class BaseCommandTestCase extends BaseTestCase { private String myRepository; private String myUsername; private String myPassword; private boolean myCloneRequired; protected CommandSettingsFactory myCommandSettingsFactory = new TestCommandSettingsFactory(); public BaseCommandTestCase() { } protected void setRepository(final String repository, boolean cloneRequired) { myRepository = repository; myCloneRequired = cloneRequired; } protected void setUsername(final String username) { myUsername = username; } protected void setPassword(final String password) { myPassword = password; } protected <T> T runCommand(CommandExecutor<T> executor) throws IOException, VcsException { Map<String, String> vcsRootProps = new HashMap<String, String>(); vcsRootProps.put(Constants.REPOSITORY_PROP, myRepository); TempFiles tempFiles = new TempFiles(); if (myCloneRequired) { File repository = copyRepository(tempFiles, new File(myRepository).getAbsolutePath()); vcsRootProps.put(Constants.REPOSITORY_PROP, repository.getAbsolutePath()); } vcsRootProps.put(Constants.HG_COMMAND_PATH_PROP, Util.getHgPath()); if (myUsername != null) { vcsRootProps.put(Constants.USERNAME, myUsername); } if (myPassword != null) { vcsRootProps.put(Constants.PASSWORD, myPassword); } VcsRoot vcsRoot = new VcsRootImpl(1, vcsRootProps); ServerPluginConfig config = new ServerPluginConfigBuilder().cachesDir(tempFiles.createTempDir()).build(); MirrorManager mirrorManager = new MirrorManagerImpl(config); ServerHgPathProvider hgPathProvider = new ServerHgPathProvider(config); HgVcsRoot root = new HgVcsRoot(vcsRoot); final File workingDir = mirrorManager.getMirrorDir(root.getRepository()); root.setCustomWorkingDir(workingDir); try { if (myCloneRequired) { new HgRepo(myCommandSettingsFactory, workingDir, hgPathProvider.getHgPath(root), root.getAuthSettings()).doClone().fromRepository(root.getRepository()).call(); } return executor.execute(root, hgPathProvider, workingDir); } finally { tempFiles.cleanup(); } } public interface CommandExecutor<T> { T execute(@NotNull HgVcsRoot root, @NotNull HgPathProvider hgPathProvider, @NotNull File workingDir) throws VcsException; } }