Mercurial > hg4j
diff test/org/tmatesoft/hg/test/TestCheckout.java @ 527:47b7bedf0569
Tests for present HgCheckoutCommand functionality. Update branch information on checkout. Use UTF8 encoding for the branch file
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Tue, 15 Jan 2013 19:46:19 +0100 |
parents | 2f9ed6bcefa2 |
children | 2813a26b8999 |
line wrap: on
line diff
--- a/test/org/tmatesoft/hg/test/TestCheckout.java Tue Jan 15 17:07:19 2013 +0100 +++ b/test/org/tmatesoft/hg/test/TestCheckout.java Tue Jan 15 19:46:19 2013 +0100 @@ -16,8 +16,20 @@ */ package org.tmatesoft.hg.test; +import static org.junit.Assert.assertEquals; + +import java.io.File; +import java.io.FileFilter; + import org.junit.Assert; +import org.junit.Rule; import org.junit.Test; +import org.tmatesoft.hg.core.HgCheckoutCommand; +import org.tmatesoft.hg.core.Nodeid; +import org.tmatesoft.hg.repo.HgLookup; +import org.tmatesoft.hg.repo.HgRepository; +import org.tmatesoft.hg.util.Pair; +import org.tmatesoft.hg.util.Path; /** * @@ -26,10 +38,42 @@ */ public class TestCheckout { + @Rule + public ErrorCollectorExt errorCollector = new ErrorCollectorExt(); + + private HgRepository repo; + private ExecHelper eh; + @Test - public void testCleanCheckoutInEmptyDir() { - Assert.fail("clone without update, checkout, status"); + public void testCleanCheckoutInEmptyDir() throws Exception { + File testRepoLoc = TestRevert.cloneRepoToTempLocation(Configuration.get().find("log-1"), "test-checkoutClean", true); + repo = new HgLookup().detect(testRepoLoc); + // nothing but .hg dir + assertEquals("[sanity]", 0, testRepoLoc.listFiles(new FilesOnlyFilter()).length); + + new HgCheckoutCommand(repo).changeset(1).execute(); + errorCollector.assertEquals(2, testRepoLoc.listFiles(new FilesOnlyFilter()).length); + + Pair<Nodeid, Nodeid> workingCopyParents = repo.getWorkingCopyParents(); + errorCollector.assertEquals("da3461cd828dae8eb5fd11189d40e9df1961f191", workingCopyParents.first().toString()); + errorCollector.assertEquals(Nodeid.NULL, workingCopyParents.second()); + errorCollector.assertEquals(HgRepository.DEFAULT_BRANCH_NAME, repo.getWorkingCopyBranchName()); + + StatusOutputParser statusOutputParser = new StatusOutputParser(); + eh = new ExecHelper(statusOutputParser, testRepoLoc); + eh.run("hg", "status", "-A"); + errorCollector.assertEquals(2, statusOutputParser.getClean().size()); + errorCollector.assertTrue(statusOutputParser.getClean().contains(Path.create("a"))); + errorCollector.assertTrue(statusOutputParser.getClean().contains(Path.create("b"))); + + new HgCheckoutCommand(repo).changeset(3).execute(); + statusOutputParser.reset(); + eh.run("hg", "status", "-A"); + errorCollector.assertEquals(3, statusOutputParser.getClean().size()); + errorCollector.assertTrue(statusOutputParser.getClean().contains(Path.create("b"))); + errorCollector.assertTrue(statusOutputParser.getClean().contains(Path.create("d"))); + errorCollector.assertTrue(statusOutputParser.getClean().contains(Path.create("dir/b"))); } @Test @@ -38,7 +82,26 @@ } @Test - public void testBranchCheckout() { - Assert.fail("Make sure branch file is written"); + public void testBranchCheckout() throws Exception { + File testRepoLoc = TestRevert.cloneRepoToTempLocation(Configuration.get().find("log-branches"), "test-checkoutBranch", true); + repo = new HgLookup().detect(testRepoLoc); + + new HgCheckoutCommand(repo).changeset(3 /*branch test*/).execute(); + + StatusOutputParser statusOutputParser = new StatusOutputParser(); + eh = new ExecHelper(statusOutputParser, testRepoLoc); + eh.run("hg", "status", "-A"); + errorCollector.assertEquals(3, statusOutputParser.getClean().size()); + errorCollector.assertTrue(statusOutputParser.getClean().contains(Path.create("a"))); + errorCollector.assertTrue(statusOutputParser.getClean().contains(Path.create("b"))); + errorCollector.assertTrue(statusOutputParser.getClean().contains(Path.create("c"))); + + errorCollector.assertEquals("test", repo.getWorkingCopyBranchName()); + } + + private static final class FilesOnlyFilter implements FileFilter { + public boolean accept(File f) { + return f.isFile(); + } } }