Mercurial > hgsubversion
view tests/comprehensive/test_verify.py @ 469:5567af673f83
Revive svn+http(s) URLs support (issue94)
Telling svn from mercurial repository automatically is not always possible, or
at least not seamlessly. Let 'http://repo.com/svn' be an svn repository,
protected with basic authentication. Trying to clone it directly does something
like:
1- Open it like a mercurial repository:
* send between command, ask for credentials, fail
* fallback to static-http, ask for crendentials two times, fail
2- Open it like an svn repository
Mercurial [auth] facility is helpful here, but few people know about it, and it
may seem weird to store svn credentials in mercurial configuration. An svn-like
password manager would not help either because all connections attempts in [1]
fail and it's unlikely we would store credentials in this situation. Instead,
we can clone 'svn+http://repo.com/svn', which will skip step [1].
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sat, 18 Jul 2009 20:44:33 -0500 |
parents | de085126dbd4 |
children | 1fd3cfa47c5e |
line wrap: on
line source
import os import pickle import unittest # wrapped in a try/except because of weirdness in how # run.py works as compared to nose. try: import test_util except ImportError: from tests import test_util from mercurial import hg from mercurial import ui from hgsubversion import svncommands def _do_case(self, name, stupid): subdir = test_util.subdir.get(name, '') repo = self._load_fixture_and_fetch(name, subdir=subdir, stupid=stupid) assert len(self.repo) > 0 for i in repo: ctx = repo[i] self.assertEqual(svncommands.verify(repo.ui, repo, rev=ctx.node()), 0) def buildmethod(case, name, stupid): m = lambda self: self._do_case(case, stupid) m.__name__ = name bits = case, stupid and 'stupid' or 'real' m.__doc__ = 'Test verify on %s with %s replay.' % bits return m attrs = {'_do_case': _do_case} fixtures = [f for f in os.listdir(test_util.FIXTURES) if f.endswith('.svndump')] for case in fixtures: # this fixture results in an empty repository, don't use it if case == 'project_root_not_repo_root.svndump': continue name = 'test_' + case[:-len('.svndump')] attrs[name] = buildmethod(case, name, False) name += '_stupid' attrs[name] = buildmethod(case, name, True) VerifyTests = type('VerifyTests', (test_util.TestBase,), attrs) def suite(): all = [unittest.TestLoader().loadTestsFromTestCase(VerifyTests)] return unittest.TestSuite(all)