tikhomirov@615: /* tikhomirov@615: * Copyright (c) 2013 TMate Software Ltd tikhomirov@615: * tikhomirov@615: * This program is free software; you can redistribute it and/or modify tikhomirov@615: * it under the terms of the GNU General Public License as published by tikhomirov@615: * the Free Software Foundation; version 2 of the License. tikhomirov@615: * tikhomirov@615: * This program is distributed in the hope that it will be useful, tikhomirov@615: * but WITHOUT ANY WARRANTY; without even the implied warranty of tikhomirov@615: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the tikhomirov@615: * GNU General Public License for more details. tikhomirov@615: * tikhomirov@615: * For information on how to redistribute this software under tikhomirov@615: * the terms of a license other than GNU General Public License tikhomirov@615: * contact TMate Software at support@hg4j.com tikhomirov@615: */ tikhomirov@615: package org.tmatesoft.hg.test; tikhomirov@615: tikhomirov@615: import java.io.File; tikhomirov@615: tikhomirov@615: import org.junit.Assert; tikhomirov@615: import org.junit.Test; tikhomirov@615: import org.tmatesoft.hg.repo.HgLookup; tikhomirov@615: import org.tmatesoft.hg.repo.HgRepository; tikhomirov@615: import org.tmatesoft.hg.repo.HgRepositoryLock; tikhomirov@615: tikhomirov@615: /** tikhomirov@615: * tikhomirov@615: * @author Artem Tikhomirov tikhomirov@615: * @author TMate Software Ltd. tikhomirov@615: */ tikhomirov@615: public class TestRepositoryLock { tikhomirov@615: tikhomirov@615: @Test tikhomirov@615: public void testWorkingDirLock() throws Exception { tikhomirov@615: File repoLoc = RepoUtils.cloneRepoToTempLocation("log-1", "test-wc-lock", false); tikhomirov@615: // turn off lock timeout, to fail fast tikhomirov@615: File hgrc = new File(repoLoc, ".hg/hgrc"); tikhomirov@615: RepoUtils.createFile(hgrc, "[ui]\ntimeout=0\n"); // or 1 tikhomirov@615: ExecHelper eh = new ExecHelper(new OutputParser.Stub(true), repoLoc); tikhomirov@615: HgRepository hgRepo = new HgLookup().detect(repoLoc); tikhomirov@615: final HgRepositoryLock wdLock = hgRepo.getWorkingDirLock(); tikhomirov@615: try { tikhomirov@615: wdLock.acquire(); tikhomirov@615: eh.run("hg", "tag", "tag-aaa"); tikhomirov@615: Assert.assertNotSame(0 /*returns 0 on success*/, eh.getExitValue()); tikhomirov@615: } finally { tikhomirov@615: wdLock.release(); tikhomirov@615: } tikhomirov@615: } tikhomirov@615: }