mirror of
https://github.com/facebook/sapling.git
synced 2025-01-07 14:10:42 +03:00
5a73bf5843
Summary: This migration allows `./run-tests.py` to run `hgsubversion` tests. Since hgsubversion tests are actually python unittests, we don't care about their output at all, they fail differently. But the behavior of the test suite require us to match whatever the tests prints. We do this later in the stack. Depends on D6719886 Test Plan: - check that tests are runnable at least Reviewers: #sourcecontrol Differential Revision: https://phabricator.intern.facebook.com/D6719890
91 lines
3.6 KiB
Python
91 lines
3.6 KiB
Python
import test_hgsubversion_util
|
|
|
|
from mercurial import node
|
|
from mercurial import util as hgutil
|
|
from mercurial import commands
|
|
from hgext.hgsubversion import verify
|
|
|
|
class TestPull(test_hgsubversion_util.TestBase):
|
|
def setUp(self):
|
|
super(TestPull, self).setUp()
|
|
|
|
def _loadupdate(self, fixture_name, *args, **kwargs):
|
|
kwargs = kwargs.copy()
|
|
kwargs.update(noupdate=False)
|
|
repo, repo_path = self.load_and_fetch(fixture_name, *args, **kwargs)
|
|
return repo, repo_path
|
|
|
|
def test_nochanges(self):
|
|
self._loadupdate('single_rev.svndump')
|
|
state = self.repo[None].parents()
|
|
commands.pull(self.repo.ui, self.repo)
|
|
self.assertEqual(state, self.repo[None].parents())
|
|
|
|
def test_onerevision_noupdate(self):
|
|
repo, repo_path = self._loadupdate('single_rev.svndump')
|
|
state = repo[None].parents()
|
|
self.add_svn_rev(repo_path, {'trunk/alpha': 'Changed'})
|
|
commands.pull(self.repo.ui, repo)
|
|
self.assertEqual(state, repo[None].parents())
|
|
self.assertTrue('tip' not in repo['.'].tags())
|
|
|
|
def test_onerevision_doupdate(self):
|
|
repo, repo_path = self._loadupdate('single_rev.svndump')
|
|
state = repo[None].parents()
|
|
self.add_svn_rev(repo_path, {'trunk/alpha': 'Changed'})
|
|
commands.pull(self.repo.ui, repo, update=True)
|
|
self.failIfEqual(state, repo[None].parents())
|
|
self.assertTrue('tip' in repo['.'].tags())
|
|
|
|
def test_onerevision_divergent(self):
|
|
repo, repo_path = self._loadupdate('single_rev.svndump')
|
|
self.commitchanges((('alpha', 'alpha', 'Changed another way'),))
|
|
state = repo[None].parents()
|
|
self.add_svn_rev(repo_path, {'trunk/alpha': 'Changed one way'})
|
|
try:
|
|
commands.pull(self.repo.ui, repo, update=True)
|
|
except hgutil.Abort:
|
|
# hg < 1.9 raised when crossing branches
|
|
pass
|
|
self.assertEqual(state, repo[None].parents())
|
|
self.assertTrue('tip' not in repo['.'].tags())
|
|
self.assertEqual(len(repo.heads()), 2)
|
|
|
|
def test_tag_repull_doesnt_happen(self):
|
|
repo = self._loadupdate('branchtagcollision.svndump')[0]
|
|
oldheads = map(node.hex, repo.heads())
|
|
commands.pull(repo.ui, repo)
|
|
self.assertEqual(oldheads, map(node.hex, repo.heads()))
|
|
|
|
def test_pull_with_secret_default(self):
|
|
repo = self._loadupdate('branchtagcollision.svndump',
|
|
config={'phases.new-commit': 'secret'})[0]
|
|
oldheads = map(node.hex, repo.heads())
|
|
commands.pull(repo.ui, repo)
|
|
self.assertEqual(oldheads, map(node.hex, repo.heads()))
|
|
|
|
def test_skip_basic(self):
|
|
repo, repo_path = self._loadupdate('single_rev.svndump')
|
|
self.add_svn_rev(repo_path, {'trunk/alpha': 'Changed'})
|
|
self.add_svn_rev(repo_path, {'trunk/beta': 'More changed'})
|
|
self.add_svn_rev(repo_path, {'trunk/gamma': 'Even more changeder'})
|
|
repo.ui.setconfig('hgsubversion', 'unsafeskip', '3 4')
|
|
commands.pull(repo.ui, repo)
|
|
tip = repo['tip'].rev()
|
|
self.assertEqual(tip, 1)
|
|
self.assertEquals(verify.verify(repo.ui, repo, rev=tip), 1)
|
|
|
|
def test_skip_delete_restore(self):
|
|
repo, repo_path = self._loadupdate('delete_restore_trunk.svndump',
|
|
rev=2)
|
|
repo.ui.setconfig('hgsubversion', 'unsafeskip', '3 4')
|
|
commands.pull(repo.ui, repo)
|
|
tip = repo['tip'].rev()
|
|
self.assertEqual(tip, 1)
|
|
self.assertEquals(verify.verify(repo.ui, repo, rev=tip), 0)
|
|
|
|
if __name__ == '__main__':
|
|
import silenttestrunner
|
|
silenttestrunner.main(__name__)
|
|
|