view mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/DagFeaturesTest.java @ 715:be86907926ae

new approach: remember hg sub-state file hash per commit, dump hash -> file, and log with refs
author eugene.petrenko@jetbrains.com
date Mon, 13 Jan 2014 18:51:13 +0100
parents 817a15a54de8
children 31a1aca3305c
line wrap: on
line source
package jetbrains.buildServer.buildTriggers.vcs.mercurial;

import jetbrains.buildServer.util.TestFor;
import jetbrains.buildServer.vcs.CheckoutRules;
import jetbrains.buildServer.vcs.ModificationData;
import jetbrains.buildServer.vcs.impl.VcsRootImpl;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import java.io.File;
import java.util.List;

import static jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialSupportBuilder.mercurialSupport;
import static jetbrains.buildServer.buildTriggers.vcs.mercurial.Util.copyRepository;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertFalse;

/**
 * @author dmitry.neverov
 */
@Test
public class DagFeaturesTest extends BaseMercurialTestCase {

  private MercurialVcsSupport myHg;
  private String myRepository;

  @BeforeMethod
  public void setUp() throws Exception {
    super.setUp();
    ServerPluginConfig config = new ServerPluginConfigBuilder()
            .cachesDir(myTempFiles.createTempDir())
            .build();
    myHg = mercurialSupport().withConfig(config).build();

    File original = new File("mercurial-tests/testData/rep2");
    File copy = new File(myTempFiles.createTempDir(), "rep2");
    copyRepository(original, copy);
    myRepository = copy.getAbsolutePath();
  }


  @TestFor(issues = "TW-17882")
  public void should_detect_changes_from_named_branches() throws Exception {
    VcsRootImpl root = new VcsRootBuilder().withUrl(myRepository).build();

    List<ModificationData> changes = myHg.getCollectChangesPolicy().collectChanges(root, "8:b6e2d176fe8e", "12:1e620196c4b6", CheckoutRules.DEFAULT);
    assertEquals(4, changes.size());
    for (ModificationData change : changes) {
      assertFalse(change.getParentRevisions().isEmpty());
    }

    changes = myHg.getCollectChangesPolicy().collectChanges(root, "12:1e620196c4b6", "18:df04faa7575a", CheckoutRules.DEFAULT);
    assertEquals(6, changes.size());
    for (ModificationData change : changes) {
      assertFalse(change.getParentRevisions().isEmpty());
    }
  }


  @TestFor(issues = "TW-17882")
  public void should_report_changes_only_from_merged_named_branches() throws Exception {
    VcsRootImpl root = new VcsRootBuilder().withUrl(myRepository).build();
    List<ModificationData> changes = myHg.getCollectChangesPolicy().collectChanges(root, "1e620196c4b6", "505c5b9d01e6", CheckoutRules.DEFAULT);
    assertEquals(2, changes.size());
  }
}