view tests/comprehensive/test_stupid_pull.py @ 323:067914ecb4eb

push: Fix a bug in deletion of an entire tree. This bug meant that if an entire subtree of the repo was deleted and there were files at varying levels of the hierarchy, then some of the files at higher levels might escape deletion when the revision was pushed to svn.
author Augie Fackler <durin42@gmail.com>
date Fri, 08 May 2009 16:26:33 -0500
parents ffccf0080e54
children 537de0300510
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 wrappers


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
    wrappers.clone(None, ui.ui(), source=test_util.fileurl(checkout_path),
                     dest=wc2_path, stupid=True, noupdate=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)