1 package com.aragost.javahg.internals;
2
3 import java.io.IOException;
4
5 import org.junit.Assert;
6 import org.junit.Test;
7
8 import com.aragost.javahg.BaseRepository;
9 import com.aragost.javahg.commands.PushCommand;
10 import com.aragost.javahg.test.AbstractTestCase;
11
12 public class JavaHgMercurialExtensionTest extends AbstractTestCase {
13
14 private volatile boolean inPush = false;
15
16 @Test
17 public void testLock() throws InterruptedException {
18 final BaseRepository repo = getTestRepository2();
19 GenericCommand lockCmd = new GenericCommand(repo, "javahg-lock");
20 GenericCommand unlockCmd = new GenericCommand(repo, "javahg-unlock");
21 lockCmd.execute();
22
23 Thread thread = new Thread("otherrepo") {
24 public void run() {
25 try {
26 JavaHgMercurialExtensionTest.this.inPush = true;
27 BaseRepository other = getTestRepository();
28 createChangeset();
29 PushCommand.on(other).execute(repo.getDirectory().getAbsolutePath());
30 JavaHgMercurialExtensionTest.this.inPush = false;
31 } catch (IOException e) {
32 throw new RuntimeIOException(e);
33 }
34 }
35 };
36 thread.start();
37 Thread.sleep(1500);
38 Assert.assertTrue(this.inPush);
39 unlockCmd.execute();
40 Thread.sleep(1500);
41 Assert.assertFalse(this.inPush);
42 thread.join();
43 Assert.assertEquals(0, repo.tip().getRevision());
44 }
45
46 }