Mercurial > hgsubversion
annotate tests/test_hooks.py @ 933:a9f315eae67c
push: use native rebase instead of our rebase wrapper
Our rebase wrapper doesn't quite do the right thing with repect to a
just-pushed revision. In particular, it will try to rebase the
just-pushed revision on top of the version of that revision we just
pulled down from svn. This will sometimes result in a local revision
with an identical commit message as the revision from svn, but no file
changes.
This changes the rebase portion of the push command to instead use the
native rebase with a revset that excludes the revision we just pushed
to svn from the set to be rebased. It also moves to a single strip
operation that removes all of the revisions based on a pre-push or
partially pushed revision. This moves to a separate rebase and strip
operation since we now need to strip revisions we are not rebasing.
author | David Schleimer <dschleimer@fb.com> |
---|---|
date | Mon, 24 Sep 2012 10:18:28 -0700 |
parents | 92bd7b3678ea |
children | d741f536f23a |
rev | line source |
---|---|
919
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
1 import sys |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
2 import test_util |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
3 import unittest |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
4 |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
5 from mercurial import hg |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
6 from mercurial import commands |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
7 |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
8 class TestHooks(test_util.TestBase): |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
9 def setUp(self): |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
10 super(TestHooks, self).setUp() |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
11 |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
12 def _loadupdate(self, fixture_name, *args, **kwargs): |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
13 kwargs = kwargs.copy() |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
14 kwargs.update(stupid=False, noupdate=False) |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
15 repo, repo_path = self.load_and_fetch(fixture_name, *args, **kwargs) |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
16 return repo, repo_path |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
17 |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
18 def test_updatemetahook(self): |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
19 repo, repo_path = self._loadupdate('single_rev.svndump') |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
20 state = repo.parents() |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
21 self.add_svn_rev(repo_path, {'trunk/alpha': 'Changed'}) |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
22 commands.pull(self.repo.ui, self.repo) |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
23 |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
24 # Clone to a new repository and add a hook |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
25 new_wc_path = "%s-2" % self.wc_path |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
26 commands.clone(self.repo.ui, self.wc_path, new_wc_path) |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
27 newrepo = hg.repository(test_util.testui(), new_wc_path) |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
28 newrepo.ui.setconfig('hooks', 'changegroup.meta', |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
29 'python:hgsubversion.hooks.updatemeta.hook') |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
30 |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
31 # Commit a rev that should trigger svn meta update |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
32 self.add_svn_rev(repo_path, {'trunk/alpha': 'Changed Again'}) |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
33 commands.pull(self.repo.ui, self.repo) |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
34 |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
35 self.called = False |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
36 import hgsubversion.svncommands |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
37 oldupdatemeta = hgsubversion.svncommands.updatemeta |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
38 def _updatemeta(ui, repo, args=[]): |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
39 self.called = True |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
40 hgsubversion.svncommands.updatemeta = _updatemeta |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
41 |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
42 # Pull and make sure our updatemeta function gets called |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
43 commands.pull(newrepo.ui, newrepo) |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
44 hgsubversion.svncommands.updatemeta = oldupdatemeta |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
45 self.assertTrue(self.called) |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
46 |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
47 def suite(): |
92bd7b3678ea
Add a changegroup hook to update svn metadata
Brad Hall <bhall@fb.com>
parents:
diff
changeset
|
48 return unittest.findTestCases(sys.modules[__name__]) |