view tests/test_svnwrap.py @ 1449:6463dae16c33

meta: check for revmap existence locally This was the last non-documentaiton reference to the meta layer in the map layer, so it now feels very clear to me that the check should just live at the svnmeta level.
author Augie Fackler <raf@durin42.com>
date Mon, 06 Jun 2016 00:54:49 -0400
parents d741f536f23a
children 019c3e194fba
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'
        ))