view tests/comprehensive/test_stupid_pull.py @ 203:907c160c6289

Refactor branch handling to be much more dynamic (and hopefully robust). This should allow fixing of several outstanding issues with branch handling. Note that this is a *massive* change to one of the oldest parts of hgsubversion, so it might introduce bugs not caught by the testsuite.
author Augie Fackler <durin42@gmail.com>
date Mon, 02 Mar 2009 23:58:38 -0600
parents 906d3f302b45
children 4950b18cf949
line wrap: on
line source

import os
import pickle
import unittest

from mercurial import hg
from mercurial import ui

from tests import test_util
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)