diff tests/test_svnwrap.py @ 347:537de0300510

Remove the 'outgoing' wrapper, and use the Mercurial infrastructure instead.
author Dan Villiom Podlaski Christiansen <danchr@gmail.com>
date Fri, 22 May 2009 15:12:31 +0200
parents
children 37304494cd15
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/tests/test_svnwrap.py
@@ -0,0 +1,76 @@
+import imp
+import os
+import subprocess
+import shutil
+import tempfile
+import unittest
+
+import test_util
+
+from hgsubversion import svnwrap
+
+class TestBasicRepoLayout(unittest.TestCase):
+    def setUp(self):
+        self.tmpdir = tempfile.mkdtemp('svnwrap_test')
+        self.repo_path = '%s/testrepo' % self.tmpdir
+        os.spawnvp(os.P_WAIT, 'svnadmin', ['svnadmin', 'create',
+                                           self.repo_path,])
+        inp = open(os.path.join(os.path.dirname(__file__), 'fixtures',
+                                'project_root_at_repo_root.svndump'))
+        proc = subprocess.call(['svnadmin', 'load', self.repo_path,],
+                                stdin=inp, close_fds=True,
+                                stdout=subprocess.PIPE,
+                                stderr=subprocess.STDOUT)
+        assert proc == 0
+        self.repo = svnwrap.SubversionRepo('file://%s' % self.repo_path)
+
+    def tearDown(self):
+        shutil.rmtree(self.tmpdir)
+
+
+    def test_num_revs(self):
+        revs = list(self.repo.revisions())
+        self.assertEqual(len(revs), 7)
+        r = revs[1]
+        self.assertEqual(r.revnum, 2)
+        self.assertEqual(sorted(r.paths.keys()),
+                  ['trunk/alpha', 'trunk/beta', 'trunk/delta'])
+        for r in revs:
+            for p in r.paths:
+                # make sure these paths are always non-absolute for sanity
+                if p:
+                    assert p[0] != '/'
+        revs = list(self.repo.revisions(start=3))
+        self.assertEqual(len(revs), 4)
+
+
+    def test_branches(self):
+        self.assertEqual(self.repo.branches.keys(), ['crazy', 'more_crazy'])
+        self.assertEqual(self.repo.branches['crazy'], ('trunk', 2, 4))
+        self.assertEqual(self.repo.branches['more_crazy'], ('trunk', 5, 7))
+
+
+    def test_tags(self):
+        tags = self.repo.tags
+        self.assertEqual(tags.keys(), ['rev1'])
+        self.assertEqual(tags['rev1'], ('trunk', 2))
+
+class TestRootAsSubdirOfRepo(TestBasicRepoLayout):
+    def setUp(self):
+        self.tmpdir = tempfile.mkdtemp('svnwrap_test')
+        self.repo_path = '%s/testrepo' % self.tmpdir
+        os.spawnvp(os.P_WAIT, 'svnadmin', ['svnadmin', 'create',
+                                           self.repo_path,])
+        inp = open(os.path.join(os.path.dirname(__file__), 'fixtures',
+                                'project_root_not_repo_root.svndump'))
+        ret = subprocess.call(['svnadmin', 'load', self.repo_path,],
+                              stdin=inp, close_fds=True,
+                              stdout=subprocess.PIPE,
+                              stderr=subprocess.STDOUT)
+        assert ret == 0
+        self.repo = svnwrap.SubversionRepo('file://%s/dummyproj' %
+                                           self.repo_path)
+def suite():
+    all = [unittest.TestLoader().loadTestsFromTestCase(TestBasicRepoLayout),
+           unittest.TestLoader().loadTestsFromTestCase(TestRootAsSubdirOfRepo)]
+    return unittest.TestSuite(all)