Mercurial > hg4j
comparison test/org/tmatesoft/hg/test/TestHistory.java @ 691:72fc7774b87e
Fix file.isCopy() for blame/annotate. Refactor status and blame to use newly introduced FileHistory helper that builds file rename history
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Fri, 02 Aug 2013 23:07:23 +0200 |
parents | 6526d8adbc0f |
children |
comparison
equal
deleted
inserted
replaced
690:b286222158be | 691:72fc7774b87e |
---|---|
19 import static org.hamcrest.CoreMatchers.equalTo; | 19 import static org.hamcrest.CoreMatchers.equalTo; |
20 import static org.hamcrest.CoreMatchers.is; | 20 import static org.hamcrest.CoreMatchers.is; |
21 import static org.junit.Assert.assertEquals; | 21 import static org.junit.Assert.assertEquals; |
22 import static org.junit.Assert.assertTrue; | 22 import static org.junit.Assert.assertTrue; |
23 import static org.tmatesoft.hg.core.HgIterateDirection.NewToOld; | 23 import static org.tmatesoft.hg.core.HgIterateDirection.NewToOld; |
24 import static org.tmatesoft.hg.core.HgIterateDirection.OldToNew; | |
24 | 25 |
25 import java.util.ArrayList; | 26 import java.util.ArrayList; |
26 import java.util.Collections; | 27 import java.util.Collections; |
27 import java.util.Comparator; | 28 import java.util.Comparator; |
28 import java.util.Iterator; | 29 import java.util.Iterator; |
67 private HgRepository repo; | 68 private HgRepository repo; |
68 private final ExecHelper eh; | 69 private final ExecHelper eh; |
69 private LogOutputParser changelogParser; | 70 private LogOutputParser changelogParser; |
70 | 71 |
71 public static void main(String[] args) throws Throwable { | 72 public static void main(String[] args) throws Throwable { |
72 TestHistory th = new TestHistory(); | 73 TestHistory th = new TestHistory(new HgLookup().detectFromWorkingDir()); |
73 th.testCompleteLog(); | 74 th.testCompleteLog(); |
74 th.testFollowHistory(); | 75 th.testFollowHistory(); |
75 th.errorCollector.verify(); | 76 th.errorCollector.verify(); |
76 // th.testPerformance(); | 77 // th.testPerformance(); |
77 th.testOriginalTestLogRepo(); | 78 th.testOriginalTestLogRepo(); |
79 th.testBranches(); | 80 th.testBranches(); |
80 // | 81 // |
81 th.errorCollector.verify(); | 82 th.errorCollector.verify(); |
82 } | 83 } |
83 | 84 |
84 public TestHistory() throws Exception { | 85 public TestHistory() { |
85 this(new HgLookup().detectFromWorkingDir()); | 86 eh = new ExecHelper(changelogParser = new LogOutputParser(true), null); |
86 // this(new HgLookup().detect("\\temp\\hg\\hello")); | |
87 } | 87 } |
88 | 88 |
89 private TestHistory(HgRepository hgRepo) { | 89 private TestHistory(HgRepository hgRepo) { |
90 this(); | |
90 repo = hgRepo; | 91 repo = hgRepo; |
91 eh = new ExecHelper(changelogParser = new LogOutputParser(true), repo.getWorkingDir()); | 92 eh.cwd(repo.getWorkingDir()); |
92 | 93 } |
93 } | 94 |
94 | |
95 @Test | 95 @Test |
96 public void testCompleteLog() throws Exception { | 96 public void testCompleteLog() throws Exception { |
97 if (repo == null) { | |
98 repo = Configuration.get().own(); | |
99 eh.cwd(repo.getWorkingDir()); | |
100 } | |
97 changelogParser.reset(); | 101 changelogParser.reset(); |
98 eh.run("hg", "log", "--debug"); | 102 eh.run("hg", "log", "--debug"); |
99 List<HgChangeset> r = new HgLogCommand(repo).execute(); | 103 List<HgChangeset> r = new HgLogCommand(repo).execute(); |
100 report("hg log - COMPLETE REPO HISTORY", r, true); | 104 report("hg log - COMPLETE REPO HISTORY", r, true); |
101 | 105 |
103 report("hg log - COMPLETE REPO HISTORY, FROM NEW TO OLD", r, false); | 107 report("hg log - COMPLETE REPO HISTORY, FROM NEW TO OLD", r, false); |
104 } | 108 } |
105 | 109 |
106 @Test | 110 @Test |
107 public void testFollowHistory() throws Exception { | 111 public void testFollowHistory() throws Exception { |
112 if (repo == null) { | |
113 repo = Configuration.get().own(); | |
114 eh.cwd(repo.getWorkingDir()); | |
115 } | |
108 final Path f = Path.create("cmdline/org/tmatesoft/hg/console/Remote.java"); | 116 final Path f = Path.create("cmdline/org/tmatesoft/hg/console/Remote.java"); |
109 assertTrue(repo.getFileNode(f).exists()); | 117 assertTrue(repo.getFileNode(f).exists()); |
110 changelogParser.reset(); | 118 changelogParser.reset(); |
111 eh.run("hg", "log", "--debug", "--follow", f.toString()); | 119 eh.run("hg", "log", "--debug", "--follow", f.toString()); |
112 | 120 |
407 errorCollector.assertEquals(1, rh.renames.size()); | 415 errorCollector.assertEquals(1, rh.renames.size()); |
408 assertRename(fname1, fname2, rh.renames.get(0)); | 416 assertRename(fname1, fname2, rh.renames.get(0)); |
409 report("HgChangesetHandler+RenameHandler with followRenames = false, new2old iteration order", h1.getChanges(), false); | 417 report("HgChangesetHandler+RenameHandler with followRenames = false, new2old iteration order", h1.getChanges(), false); |
410 report("HgChangesetTreeHandler+RenameHandler with followRenames = false, new2old iteration order", h2.getResult(), false); | 418 report("HgChangesetTreeHandler+RenameHandler with followRenames = false, new2old iteration order", h2.getResult(), false); |
411 } | 419 } |
420 | |
421 @Test | |
422 public void testFollowMultipleRenames() throws Exception { | |
423 repo = Configuration.get().find("log-renames"); | |
424 String fname = "a"; | |
425 eh.run("hg", "log", "--debug", "--follow", fname, "--cwd", repo.getLocation()); | |
426 HgLogCommand cmd = new HgLogCommand(repo); | |
427 cmd.file(fname, true, true); | |
428 CollectWithRenameHandler h1; | |
429 // | |
430 cmd.order(OldToNew).execute(h1 = new CollectWithRenameHandler()); | |
431 errorCollector.assertEquals(2, h1.rh.renames.size()); | |
432 report("Follow a->c->b, old2new:", h1.getChanges(), true); | |
433 // | |
434 cmd.order(NewToOld).execute(h1 = new CollectWithRenameHandler()); | |
435 errorCollector.assertEquals(2, h1.rh.renames.size()); | |
436 report("Follow a->c->b, new2old:", h1.getChanges(), false); | |
437 // | |
438 // | |
439 TreeCollectHandler h2 = new TreeCollectHandler(false); | |
440 RenameCollector rh = new RenameCollector(h2); | |
441 cmd.order(OldToNew).execute(h2); | |
442 errorCollector.assertEquals(2, rh.renames.size()); | |
443 report("Tree. Follow a->c->b, old2new:", h2.getResult(), true); | |
444 // | |
445 h2 = new TreeCollectHandler(false); | |
446 rh = new RenameCollector(h2); | |
447 cmd.order(NewToOld).execute(h2); | |
448 errorCollector.assertEquals(2, rh.renames.size()); | |
449 report("Tree. Follow a->c->b, new2old:", h2.getResult(), false); | |
450 } | |
412 | 451 |
413 private void assertRename(String fnameFrom, String fnameTo, Pair<HgFileRevision, HgFileRevision> rename) { | 452 private void assertRename(String fnameFrom, String fnameTo, Pair<HgFileRevision, HgFileRevision> rename) { |
414 errorCollector.assertEquals(fnameFrom, rename.first().getPath().toString()); | 453 errorCollector.assertEquals(fnameFrom, rename.first().getPath().toString()); |
415 errorCollector.assertEquals(fnameTo, rename.second().getPath().toString()); | 454 errorCollector.assertEquals(fnameTo, rename.second().getPath().toString()); |
416 } | 455 } |