Mercurial > hgsubversion
view tests/test_svnwrap.py @ 940:34a1217b8218
editor: resolve files copied by directory copy on-demand
Before this change, the data of files brought by directory copies was
resolved immediately and stored for the duration of the run. Now, only
references are stored and are resolved either when opening the files or
when closing the editor. It means RevisionData file data is only set
once per file and only when the file has been handled.
The next step is to turn RevisionData into a data store backed by the
filesystem.
author | Patrick Mezard <patrick@mezard.eu> |
---|---|
date | Mon, 24 Sep 2012 23:44:23 +0200 |
parents | f2de043ac924 |
children | d741f536f23a |
line wrap: on
line source
import test_util import os import subprocess import tempfile import unittest from hgsubversion import svnwrap class TestBasicRepoLayout(unittest.TestCase): def setUp(self): self.tmpdir = tempfile.mkdtemp('svnwrap_test') self.repo_path = '%s/testrepo' % self.tmpdir subprocess.call(['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=test_util.canCloseFds, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) assert proc == 0 self.repo = svnwrap.SubversionRepo(test_util.fileurl(self.repo_path)) def tearDown(self): del self.repo test_util.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) class TestRootAsSubdirOfRepo(TestBasicRepoLayout): def setUp(self): self.tmpdir = tempfile.mkdtemp('svnwrap_test') self.repo_path = '%s/testrepo' % self.tmpdir subprocess.call(['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=test_util.canCloseFds, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) assert ret == 0 self.repo = svnwrap.SubversionRepo(test_util.fileurl( self.repo_path + '/dummyproj' )) def suite(): all_tests = [unittest.TestLoader().loadTestsFromTestCase(TestBasicRepoLayout), unittest.TestLoader().loadTestsFromTestCase(TestRootAsSubdirOfRepo)] return unittest.TestSuite(all_tests)