dmitry@834: /* pavel@976: * Copyright 2000-2018 JetBrains s.r.o. dmitry@834: * dmitry@834: * Licensed under the Apache License, Version 2.0 (the "License"); dmitry@834: * you may not use this file except in compliance with the License. dmitry@834: * You may obtain a copy of the License at dmitry@834: * dmitry@834: * http://www.apache.org/licenses/LICENSE-2.0 dmitry@834: * dmitry@834: * Unless required by applicable law or agreed to in writing, software dmitry@834: * distributed under the License is distributed on an "AS IS" BASIS, dmitry@834: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. dmitry@834: * See the License for the specific language governing permissions and dmitry@834: * limitations under the License. dmitry@834: */ dmitry@834: dmitry@834: package jetbrains.buildServer.buildTriggers.vcs.mercurial; dmitry@834: dmitry@834: import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.HgVcsRoot; dmitry@834: import jetbrains.buildServer.util.FileUtil; dmitry@834: import jetbrains.buildServer.vcs.VcsRoot; dmitry@834: import org.jetbrains.annotations.NotNull; dmitry@834: import org.testng.annotations.BeforeMethod; dmitry@834: import org.testng.annotations.Test; dmitry@834: dmitry@834: import java.io.File; dmitry@834: import java.io.IOException; dmitry@834: dmitry@834: import static jetbrains.buildServer.buildTriggers.vcs.mercurial.Util.copyRepository; dmitry@834: import static jetbrains.buildServer.buildTriggers.vcs.mercurial.VcsRootBuilder.vcsRoot; dmitry@834: import static org.testng.AssertJUnit.assertFalse; dmitry@834: import static org.testng.AssertJUnit.assertTrue; dmitry@834: dmitry@834: @Test dmitry@834: public class PurgeTest extends BaseAgentSideCheckoutTestCase { dmitry@834: dmitry@834: private String myRemoteRepository; dmitry@834: dmitry@834: @Override dmitry@834: @BeforeMethod dmitry@834: public void setUp() throws Exception { dmitry@834: super.setUp(); dmitry@834: dmitry@834: File tmp = myTempFiles.createTempDir(); dmitry@834: File remoteRepo = new File(tmp, "testPurge"); dmitry@834: copyRepository(new File("mercurial-tests/testData/testPurge"), remoteRepo); dmitry@834: myRemoteRepository = remoteRepo.getAbsolutePath(); dmitry@834: } dmitry@834: dmitry@834: dmitry@834: public void purge_unknown() throws Exception { dmitry@834: VcsRoot vcsRoot = vcsRoot().withUrl(myRemoteRepository).withPurgePolicy(HgVcsRoot.PurgePolicy.PURGE_UNKNOWN).build(); dmitry@837: checkout(vcsRoot, "1:1db20368ddc7"); dmitry@834: dmitry@834: File unknownFile = createUnknownFile(myWorkDir); dmitry@834: File ignoredFile = createIgnoredFile(myWorkDir); dmitry@834: dmitry@837: checkout(vcsRoot, "1:1db20368ddc7"); dmitry@834: dmitry@834: assertFalse(unknownFile.exists()); dmitry@834: assertTrue(ignoredFile.exists()); dmitry@834: } dmitry@834: dmitry@834: dmitry@834: public void purge_all() throws Exception { dmitry@834: VcsRoot vcsRoot = vcsRoot().withUrl(myRemoteRepository).withPurgePolicy(HgVcsRoot.PurgePolicy.PURGE_ALL).build(); dmitry@837: checkout(vcsRoot, "1:1db20368ddc7"); dmitry@834: dmitry@834: File unknownFile = createUnknownFile(myWorkDir); dmitry@834: File ignoredFile = createIgnoredFile(myWorkDir); dmitry@834: dmitry@837: checkout(vcsRoot, "1:1db20368ddc7"); dmitry@834: dmitry@834: assertFalse(unknownFile.exists()); dmitry@834: assertFalse(ignoredFile.exists()); dmitry@834: } dmitry@834: dmitry@834: dmitry@834: public void purge_unknown_subrepos() throws Exception { dmitry@834: VcsRoot vcsRoot = vcsRoot().withUrl(myRemoteRepository).withPurgePolicy(HgVcsRoot.PurgePolicy.PURGE_UNKNOWN).build(); dmitry@837: checkout(vcsRoot, "2:47e24ed2a4a9"); dmitry@834: dmitry@834: File unknownFile = createUnknownFile(myWorkDir); dmitry@834: File ignoredFile = createIgnoredFile(myWorkDir); dmitry@834: File unknownFileSubrepo = createUnknownFile(new File(myWorkDir, "self")); dmitry@834: File ignoredFileSubrepo = createIgnoredFile(new File(myWorkDir, "self")); dmitry@834: dmitry@837: checkout(vcsRoot, "2:47e24ed2a4a9"); dmitry@834: dmitry@834: assertFalse(unknownFile.exists()); dmitry@834: assertFalse(unknownFileSubrepo.exists()); dmitry@834: assertTrue(ignoredFile.exists()); dmitry@834: assertTrue(ignoredFileSubrepo.exists()); dmitry@834: } dmitry@834: dmitry@834: dmitry@834: public void purge_all_subrepos() throws Exception { dmitry@834: VcsRoot vcsRoot = vcsRoot().withUrl(myRemoteRepository).withPurgePolicy(HgVcsRoot.PurgePolicy.PURGE_ALL).build(); dmitry@837: checkout(vcsRoot, "2:47e24ed2a4a9"); dmitry@834: dmitry@834: File unknownFile = createUnknownFile(myWorkDir); dmitry@834: File ignoredFile = createIgnoredFile(myWorkDir); dmitry@834: File unknownFileSubrepo = createUnknownFile(new File(myWorkDir, "self")); dmitry@834: File ignoredFileSubrepo = createIgnoredFile(new File(myWorkDir, "self")); dmitry@834: dmitry@837: checkout(vcsRoot, "2:47e24ed2a4a9"); dmitry@834: dmitry@834: assertFalse(unknownFile.exists()); dmitry@834: assertFalse(unknownFileSubrepo.exists()); dmitry@834: assertFalse(ignoredFile.exists()); dmitry@834: assertFalse(ignoredFileSubrepo.exists()); dmitry@834: } dmitry@834: dmitry@834: dmitry@834: private File createUnknownFile(@NotNull File parentDir) throws IOException { dmitry@834: File unknownFile = new File(parentDir, "unknownFile"); dmitry@834: FileUtil.writeFile(unknownFile, "some data", "UTF-8"); dmitry@834: return unknownFile; dmitry@834: } dmitry@834: dmitry@834: dmitry@834: private File createIgnoredFile(@NotNull File parentDir) throws IOException { dmitry@834: File ignoredFile = new File(parentDir, "ignoredFile"); dmitry@834: FileUtil.writeFile(ignoredFile, "some data", "UTF-8"); dmitry@834: return ignoredFile; dmitry@834: } dmitry@834: }