view mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgVersionConstraint.java @ 1049:0022415d251d cloud

from trunk: fixed tests for recent hg versions (grafted from 5bec80ce92ae32b6e271be3131dcfbd4cebbf918) (grafted from a377f996514e4b9dfc66a4f47196cd4a6d3aa82d)
author victory.bedrosova
date Thu, 21 Jan 2021 12:01:07 +0100
parents 7bf4d943d5bb
children
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;

import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.TestCommandSettingsFactory;
import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.VersionCommand;
import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.exception.ParseHgVersionException;
import org.jetbrains.annotations.NotNull;
import org.testng.annotations.DataProvider;

import java.io.File;
import java.lang.reflect.Method;

public class HgVersionConstraint {

  @DataProvider
  public static Object[][] installedHgVersion(Method testMethod) throws Exception {
    HgVersion actualVersion = getHgVersion();
    RequiredHgVersion constaint = testMethod.getAnnotation(RequiredHgVersion.class);
    if (constaint == null)
      constaint = testMethod.getDeclaringClass().getAnnotation(RequiredHgVersion.class);
    if (constaint == null)
      return new Object[][] { new Object[] { actualVersion }};
    HgVersion requiredMinVersion = parse(constaint.min());
    if (!actualVersion.isEqualsOrGreaterThan(requiredMinVersion))
      return new Object[0][];
    return new Object[][] { new Object[] { actualVersion }};
  }

  private static HgVersion getHgVersion() throws Exception {
    VersionCommand versionCommand = new VersionCommand(new TestCommandSettingsFactory().create(), Util.getHgPath(), new File(".."));
    return versionCommand.call();
  }

  private static HgVersion parse(@NotNull String version) throws ParseHgVersionException {
    return HgVersion.parse("Mercurial Distributed SCM (version " + version);
  }

}