diff tests/comprehensive/test_stupid_pull.py @ 194:13ae1bded5e7

Add some comprehensive tests that can be run with nose in order to make it easier to verify stupid and real replay do the same thing.
author Augie Fackler <durin42@gmail.com>
date Wed, 21 Jan 2009 20:27:51 -0600
parents
children 906d3f302b45
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/tests/comprehensive/test_stupid_pull.py
@@ -0,0 +1,50 @@
+import os
+import pickle
+import unittest
+
+from mercurial import hg
+from mercurial import ui
+
+from tests import test_util
+import rebuildmeta
+import hg_delta_editor
+import fetch_command
+
+
+def _do_case(self, name):
+    subdir = test_util.subdir.get(name, '')
+    self._load_fixture_and_fetch(name, subdir=subdir, stupid=False)
+    assert len(self.repo) > 0, 'Repo had no changes, maybe you need to add a subdir entry in test_util?'
+    wc2_path = self.wc_path + '_stupid'
+    u = ui.ui()
+    checkout_path = self.repo_path
+    if subdir:
+        checkout_path += '/' + subdir
+    fetch_command.fetch_revisions(ui.ui(),
+                                  svn_url=test_util.fileurl(checkout_path),
+                                  hg_repo_path=wc2_path,
+                                  stupid=True)
+    self.repo2 = hg.repository(ui.ui(), wc2_path)
+    self.assertEqual(self.repo.branchtags(), self.repo2.branchtags())
+    self.assertEqual(pickle.load(open(os.path.join(self.wc_path, '.hg', 'svn', 'tag_info'))),
+                     pickle.load(open(os.path.join(wc2_path, '.hg', 'svn', 'tag_info'))))
+
+
+def buildmethod(case, name):
+    m = lambda self: self._do_case(case)
+    m.__name__ = name
+    m.__doc__ = 'Test stupid produces same as real on %s.' % case
+    return m
+
+attrs = {'_do_case': _do_case,
+         }
+for case in (f for f in os.listdir(test_util.FIXTURES) if f.endswith('.svndump')):
+    name = 'test_' + case[:-len('.svndump')]
+    attrs[name] = buildmethod(case, name)
+StupidPullTests = type('StupidPullTests', (test_util.TestBase, ), attrs)
+
+
+def suite():
+    all = [unittest.TestLoader().loadTestsFromTestCase(StupidPullTests),
+          ]
+    return unittest.TestSuite(all)