# HG changeset patch # User Augie Fackler # Date 1223422963 18000 # Node ID d78dbf88c13dc45b1fa86ebe02aea92c4693b5a4 # Parent e60bd31f58a75f3a61d1769d89d3f8919b33d250 Started a meaningful test suite. diff --git a/tests/fixtures/single_rev.svndump b/tests/fixtures/single_rev.svndump new file mode 100644 --- /dev/null +++ b/tests/fixtures/single_rev.svndump @@ -0,0 +1,89 @@ +SVN-fs-dump-format-version: 2 + +UUID: df2126f7-00ab-4d49-b42c-7e981dde0bcf + +Revision-number: 0 +Prop-content-length: 56 +Content-length: 56 + +K 8 +svn:date +V 27 +2008-10-07T22:49:12.059692Z +PROPS-END + +Revision-number: 1 +Prop-content-length: 111 +Content-length: 111 + +K 7 +svn:log +V 11 +Empty dirs. +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-07T22:49:41.118037Z +PROPS-END + +Node-path: branches +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +PROPS-END + + +Node-path: tags +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +PROPS-END + + +Node-path: trunk +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +PROPS-END + + +Revision-number: 2 +Prop-content-length: 108 +Content-length: 108 + +K 7 +svn:log +V 9 +Add alpha +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-07T23:23:02.991743Z +PROPS-END + +Node-path: trunk/alpha +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 12 +Text-content-md5: 3c72ebf8bbd7fa88b1fdcee5398b5a17 +Content-length: 22 + +PROPS-END +file: alpha + + diff --git a/tests/fixtures/two_revs.svndump b/tests/fixtures/two_revs.svndump new file mode 100644 --- /dev/null +++ b/tests/fixtures/two_revs.svndump @@ -0,0 +1,119 @@ +SVN-fs-dump-format-version: 2 + +UUID: df2126f7-00ab-4d49-b42c-7e981dde0bcf + +Revision-number: 0 +Prop-content-length: 56 +Content-length: 56 + +K 8 +svn:date +V 27 +2008-10-07T22:49:12.059692Z +PROPS-END + +Revision-number: 1 +Prop-content-length: 111 +Content-length: 111 + +K 7 +svn:log +V 11 +Empty dirs. +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-07T22:49:41.118037Z +PROPS-END + +Node-path: branches +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +PROPS-END + + +Node-path: tags +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +PROPS-END + + +Node-path: trunk +Node-kind: dir +Node-action: add +Prop-content-length: 10 +Content-length: 10 + +PROPS-END + + +Revision-number: 2 +Prop-content-length: 108 +Content-length: 108 + +K 7 +svn:log +V 9 +Add alpha +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-07T23:23:02.991743Z +PROPS-END + +Node-path: trunk/alpha +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 12 +Text-content-md5: 3c72ebf8bbd7fa88b1fdcee5398b5a17 +Content-length: 22 + +PROPS-END +file: alpha + + +Revision-number: 3 +Prop-content-length: 107 +Content-length: 107 + +K 7 +svn:log +V 8 +Add beta +K 10 +svn:author +V 5 +durin +K 8 +svn:date +V 27 +2008-10-07T23:28:22.651398Z +PROPS-END + +Node-path: trunk/beta +Node-kind: file +Node-action: add +Prop-content-length: 10 +Text-content-length: 13 +Text-content-md5: 981d1eb5fd0bbe05354c292105944863 +Content-length: 23 + +PROPS-END +Data of beta + + diff --git a/tests/test_fetch_command.py b/tests/test_fetch_command.py new file mode 100644 --- /dev/null +++ b/tests/test_fetch_command.py @@ -0,0 +1,45 @@ +import os +import shutil +import tempfile +import unittest + +from mercurial import hg +from mercurial import ui +from mercurial import node + +import fetch_command +import util + +class TestBasicRepoLayout(unittest.TestCase): + def setUp(self): + self.oldwd = os.getcwd() + self.tmpdir = tempfile.mkdtemp('svnwrap_test') + self.repo_path = '%s/testrepo' % self.tmpdir + self.wc_path = '%s/testrepo_wc' % self.tmpdir + + def tearDown(self): + shutil.rmtree(self.tmpdir) + os.chdir(self.oldwd) + + def test_fresh_fetch_single_rev(self): + util.load_svndump_fixture(self.repo_path, 'single_rev.svndump') + fetch_command.fetch_revisions(ui.ui(), + svn_url='file://%s' % self.repo_path, + hg_repo_path=self.wc_path) + repo = hg.repository(ui.ui(), self.wc_path) + self.assertEqual(node.hex(repo['tip'].node()), + 'a47d0ce778660a91c31bf2c21c448e9ee296ac90') + self.assertEqual(repo['tip'], repo[0]) + + def test_fresh_fetch_two_revs(self): + util.load_svndump_fixture(self.repo_path, 'two_revs.svndump') + fetch_command.fetch_revisions(ui.ui(), + svn_url='file://%s' % self.repo_path, + hg_repo_path=self.wc_path) + repo = hg.repository(ui.ui(), self.wc_path) + # TODO there must be a better way than repo[0] for this check + self.assertEqual(node.hex(repo[0].node()), + 'a47d0ce778660a91c31bf2c21c448e9ee296ac90') + self.assertEqual(node.hex(repo['tip'].node()), + 'bf3767835b3b32ecc775a298c2fa27134dd91c11') + self.assertEqual(repo['tip'], repo[1]) diff --git a/tests/util.py b/tests/util.py new file mode 100644 --- /dev/null +++ b/tests/util.py @@ -0,0 +1,16 @@ +import os +import popen2 + +FIXTURES = os.path.join(os.path.abspath(os.path.dirname(__file__)), + 'fixtures') + +def load_svndump_fixture(path, fixture_name): + '''Loads an svnadmin dump into a fresh repo at path, which should not + already exist. + ''' + os.spawnvp(os.P_WAIT, 'svnadmin', ['svnadmin', 'create', path,]) + proc = popen2.Popen4(['svnadmin', 'load', path,]) + inp = open(os.path.join(FIXTURES, fixture_name)) + proc.tochild.write(inp.read()) + proc.tochild.close() + proc.wait()