view tests/comprehensive/test_stupid_pull.py @ 284:f8f9a2993705

Implement parseurl support (#revision in repository urls) Note: Normally when using parseurl, hg clone will treat the revision after # as if it was passed in as --rev, treats that rev as a head and won't clone beyond that. This wasn't implemented here, hence all the TODO's in the comments. All we do is use the checkout parameter where appropriate to update the wc to the selected revision.
author Martijn Pieters <mj@zopatista.com>
date Mon, 27 Apr 2009 09:39:39 -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)