view mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/PurgeTest.java @ 1041:7378eb4a7e47

Added tag release-85633 for changeset 2361e6830573
author TeamCityServer@buildserver-ro-srv.Labs.IntelliJ.Net
date Wed, 16 Dec 2020 13:25:58 +0300
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.HgVcsRoot;
import jetbrains.buildServer.util.FileUtil;
import jetbrains.buildServer.vcs.VcsRoot;
import org.jetbrains.annotations.NotNull;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import java.io.File;
import java.io.IOException;

import static jetbrains.buildServer.buildTriggers.vcs.mercurial.Util.copyRepository;
import static jetbrains.buildServer.buildTriggers.vcs.mercurial.VcsRootBuilder.vcsRoot;
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertTrue;

@Test
public class PurgeTest extends BaseAgentSideCheckoutTestCase {

  private String myRemoteRepository;

  @Override
  @BeforeMethod
  public void setUp() throws Exception {
    super.setUp();

    File tmp = myTempFiles.createTempDir();
    File remoteRepo = new File(tmp, "testPurge");
    copyRepository(new File("mercurial-tests/testData/testPurge"), remoteRepo);
    myRemoteRepository = remoteRepo.getAbsolutePath();
  }


  public void purge_unknown() throws Exception {
    VcsRoot vcsRoot = vcsRoot().withUrl(myRemoteRepository).withPurgePolicy(HgVcsRoot.PurgePolicy.PURGE_UNKNOWN).build();
    checkout(vcsRoot, "1:1db20368ddc7");

    File unknownFile = createUnknownFile(myWorkDir);
    File ignoredFile = createIgnoredFile(myWorkDir);

    checkout(vcsRoot, "1:1db20368ddc7");

    assertFalse(unknownFile.exists());
    assertTrue(ignoredFile.exists());
  }


  public void purge_all() throws Exception {
    VcsRoot vcsRoot = vcsRoot().withUrl(myRemoteRepository).withPurgePolicy(HgVcsRoot.PurgePolicy.PURGE_ALL).build();
    checkout(vcsRoot, "1:1db20368ddc7");

    File unknownFile = createUnknownFile(myWorkDir);
    File ignoredFile = createIgnoredFile(myWorkDir);

    checkout(vcsRoot, "1:1db20368ddc7");

    assertFalse(unknownFile.exists());
    assertFalse(ignoredFile.exists());
  }


  public void purge_unknown_subrepos() throws Exception {
    VcsRoot vcsRoot = vcsRoot().withUrl(myRemoteRepository).withPurgePolicy(HgVcsRoot.PurgePolicy.PURGE_UNKNOWN).build();
    checkout(vcsRoot, "2:47e24ed2a4a9");

    File unknownFile = createUnknownFile(myWorkDir);
    File ignoredFile = createIgnoredFile(myWorkDir);
    File unknownFileSubrepo = createUnknownFile(new File(myWorkDir, "self"));
    File ignoredFileSubrepo = createIgnoredFile(new File(myWorkDir, "self"));

    checkout(vcsRoot, "2:47e24ed2a4a9");

    assertFalse(unknownFile.exists());
    assertFalse(unknownFileSubrepo.exists());
    assertTrue(ignoredFile.exists());
    assertTrue(ignoredFileSubrepo.exists());
  }


  public void purge_all_subrepos() throws Exception {
    VcsRoot vcsRoot = vcsRoot().withUrl(myRemoteRepository).withPurgePolicy(HgVcsRoot.PurgePolicy.PURGE_ALL).build();
    checkout(vcsRoot, "2:47e24ed2a4a9");

    File unknownFile = createUnknownFile(myWorkDir);
    File ignoredFile = createIgnoredFile(myWorkDir);
    File unknownFileSubrepo = createUnknownFile(new File(myWorkDir, "self"));
    File ignoredFileSubrepo = createIgnoredFile(new File(myWorkDir, "self"));

    checkout(vcsRoot, "2:47e24ed2a4a9");

    assertFalse(unknownFile.exists());
    assertFalse(unknownFileSubrepo.exists());
    assertFalse(ignoredFile.exists());
    assertFalse(ignoredFileSubrepo.exists());
  }


  private File createUnknownFile(@NotNull File parentDir) throws IOException {
    File unknownFile = new File(parentDir, "unknownFile");
    FileUtil.writeFile(unknownFile, "some data", "UTF-8");
    return unknownFile;
  }


  private File createIgnoredFile(@NotNull File parentDir) throws IOException {
    File ignoredFile = new File(parentDir, "ignoredFile");
    FileUtil.writeFile(ignoredFile, "some data", "UTF-8");
    return ignoredFile;
  }
}