diff test/org/tmatesoft/hg/test/TestHistory.java @ 507:a6435c1a42d0

Test for HgChangesetTreeHandler - make sure nothing is broken prior to adding --follow support
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Wed, 12 Dec 2012 14:17:12 +0100
parents 3ca4ae7bdd38
children ca5202afea90
line wrap: on
line diff
--- a/test/org/tmatesoft/hg/test/TestHistory.java	Fri Nov 30 22:52:39 2012 +0100
+++ b/test/org/tmatesoft/hg/test/TestHistory.java	Wed Dec 12 14:17:12 2012 +0100
@@ -29,14 +29,18 @@
 
 import org.junit.Rule;
 import org.junit.Test;
+import org.tmatesoft.hg.core.HgCallbackTargetException;
 import org.tmatesoft.hg.core.HgChangeset;
 import org.tmatesoft.hg.core.HgChangesetHandler;
+import org.tmatesoft.hg.core.HgChangesetTreeHandler;
 import org.tmatesoft.hg.core.HgFileRevision;
 import org.tmatesoft.hg.core.HgLogCommand;
 import org.tmatesoft.hg.core.HgLogCommand.CollectHandler;
+import org.tmatesoft.hg.core.Nodeid;
 import org.tmatesoft.hg.repo.HgLookup;
 import org.tmatesoft.hg.repo.HgRepository;
 import org.tmatesoft.hg.test.LogOutputParser.Record;
+import org.tmatesoft.hg.util.Pair;
 import org.tmatesoft.hg.util.Path;
 
 
@@ -118,6 +122,39 @@
 		});
 		report(what, sorted, false);
 	}
+	
+	@Test
+	public void testChangesetTree() throws Exception {
+		repo = Configuration.get().find("branches-1");
+		final String fname = "file1";
+		assertTrue("[sanity]", repo.getFileNode(fname).exists());
+		eh.run("hg", "log", "--debug", fname, "--cwd", repo.getLocation());
+		
+		final LinkedList<HgChangeset> cmdResult = new LinkedList<HgChangeset>();
+		new HgLogCommand(repo).file(fname, false).execute(new HgChangesetTreeHandler() {
+
+			public void treeElement(TreeElement entry) throws HgCallbackTargetException {
+				// check consistency
+				Nodeid cset = entry.changeset().getNodeid();
+				errorCollector.assertEquals(entry.changesetRevision(), cset);
+				Pair<HgChangeset, HgChangeset> parents_a = entry.parents();
+				Pair<Nodeid, Nodeid> parents_b = entry.parentRevisions();
+				if (parents_b.first().isNull()) {
+					errorCollector.assertTrue(parents_a.first() == null);
+				} else {
+					errorCollector.assertEquals(parents_b.first(), parents_a.first().getNodeid());
+				}
+				if (parents_b.second().isNull()) {
+					errorCollector.assertTrue(parents_a.second() == null);
+				} else {
+					errorCollector.assertEquals(parents_b.second(), parents_a.second().getNodeid());
+				}
+				//
+				cmdResult.add(entry.changeset());
+			}
+		});
+		report("execute with HgChangesetTreeHandler", cmdResult, true);
+	}
 
 	private void report(String what, List<HgChangeset> r, boolean reverseConsoleResult) {
 		final List<Record> consoleResult = changelogParser.getResult();