changeset 615:84104448a0bf

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