Switch to side-by-side view

--- a
+++ b/Allura/allura/tests/unit/test_repo.py
@@ -0,0 +1,50 @@
+import unittest
+
+from allura import model as M
+from alluratest.controller import setup_unit_test
+
+class TestCommitRunBuilder(unittest.TestCase):
+
+    def setUp(self):
+        setup_unit_test()
+        commits = [
+            M.repo.CommitDoc.make(dict(
+                _id=str(i)))
+            for i in range(10) ]
+        for p,c in zip(commits, commits[1:]):
+            p.child_ids = [ c._id ]
+            c.parent_ids = [ p._id ]
+        for ci in commits:
+            ci.m.save()
+        self.commits = commits
+
+    def test_single_pass(self):
+        crb = M.repo_refresh.CommitRunBuilder(
+            [ci._id for ci in self.commits])
+        crb.run()
+        self.assertEqual(M.repo.CommitRunDoc.m.count(), 1)
+
+    def test_two_pass(self):
+        crb = M.repo_refresh.CommitRunBuilder(
+            [ci._id for ci in self.commits[:5]])
+        crb.run()
+        crb = M.repo_refresh.CommitRunBuilder(
+            [ci._id for ci in self.commits[5:]])
+        crb.run()
+        self.assertEqual(M.repo.CommitRunDoc.m.count(), 2)
+        crb.cleanup()
+        self.assertEqual(M.repo.CommitRunDoc.m.count(), 1)
+
+    def test_svn_like(self):
+        for ci in self.commits:
+            crb = M.repo_refresh.CommitRunBuilder([ci._id])
+            crb.run()
+            crb.cleanup()
+        self.assertEqual(M.repo.CommitRunDoc.m.count(), 1)
+
+    def test_reversed(self):
+        for ci in reversed(self.commits):
+            crb = M.repo_refresh.CommitRunBuilder([ci._id])
+            crb.run()
+            crb.cleanup()
+        self.assertEqual(M.repo.CommitRunDoc.m.count(), 1)