annotate tests/test_template_keywords.py @ 1340:db9d85618d3d

wrapper: delay marker creation in push Before this patch we were creating obsolescence markers when pulling the changesets from subversion. The counterpart stripping logic (when obsolescence is not available) was done after pushing everything. This patch moves the marker creation to the end of the push, to: 1) Make the code more readable (the marker creation and the stripping should be in the same place) 2) Fix a behavior issue with inhibit(evolve) (see below) With inhibit + hgsubversion enabled. When pushing to subversion we were creating markers as expected but inhibiting the marker on the commit that was the parent of the working copy making it therefore visible. By delaying the marker creation to after the update we avoid this issue.
author Laurent Charignon <lcharignon@fb.com>
date Wed, 08 Jul 2015 13:30:16 -0700
parents 8caf1226adec
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
684
8687c5aa4f35 Add svnrev, svnpath and svnuuid keyword.
Andi Albrecht <albrecht.andi@gmail.com>
parents:
diff changeset
1 import test_util
8687c5aa4f35 Add svnrev, svnpath and svnuuid keyword.
Andi Albrecht <albrecht.andi@gmail.com>
parents:
diff changeset
2
8687c5aa4f35 Add svnrev, svnpath and svnuuid keyword.
Andi Albrecht <albrecht.andi@gmail.com>
parents:
diff changeset
3 import unittest
8687c5aa4f35 Add svnrev, svnpath and svnuuid keyword.
Andi Albrecht <albrecht.andi@gmail.com>
parents:
diff changeset
4
8687c5aa4f35 Add svnrev, svnpath and svnuuid keyword.
Andi Albrecht <albrecht.andi@gmail.com>
parents:
diff changeset
5 from mercurial import commands
722
aa24148a7454 uisetup: add fromsvn() and svnrev() revsets.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 721
diff changeset
6 from mercurial import error
684
8687c5aa4f35 Add svnrev, svnpath and svnuuid keyword.
Andi Albrecht <albrecht.andi@gmail.com>
parents:
diff changeset
7 from mercurial import ui
687
d424bd1ac647 templatekw: restore compatibility with hg < 1.5
Augie Fackler <durin42@gmail.com>
parents: 684
diff changeset
8 try:
d424bd1ac647 templatekw: restore compatibility with hg < 1.5
Augie Fackler <durin42@gmail.com>
parents: 684
diff changeset
9 from mercurial import templatekw
d424bd1ac647 templatekw: restore compatibility with hg < 1.5
Augie Fackler <durin42@gmail.com>
parents: 684
diff changeset
10 templatekw.keywords
d424bd1ac647 templatekw: restore compatibility with hg < 1.5
Augie Fackler <durin42@gmail.com>
parents: 684
diff changeset
11 except ImportError:
d424bd1ac647 templatekw: restore compatibility with hg < 1.5
Augie Fackler <durin42@gmail.com>
parents: 684
diff changeset
12 templatekw = None
684
8687c5aa4f35 Add svnrev, svnpath and svnuuid keyword.
Andi Albrecht <albrecht.andi@gmail.com>
parents:
diff changeset
13
722
aa24148a7454 uisetup: add fromsvn() and svnrev() revsets.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 721
diff changeset
14 try:
aa24148a7454 uisetup: add fromsvn() and svnrev() revsets.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 721
diff changeset
15 from mercurial import revset
aa24148a7454 uisetup: add fromsvn() and svnrev() revsets.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 721
diff changeset
16 revset.methods
aa24148a7454 uisetup: add fromsvn() and svnrev() revsets.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 721
diff changeset
17 except ImportError:
835
f089ca13cc4c test_template_keywords.py: fix indentation of revset except block
Yonggang Luo <luoyonggang@gmail.com>
parents: 833
diff changeset
18 revset = None
684
8687c5aa4f35 Add svnrev, svnpath and svnuuid keyword.
Andi Albrecht <albrecht.andi@gmail.com>
parents:
diff changeset
19
8687c5aa4f35 Add svnrev, svnpath and svnuuid keyword.
Andi Albrecht <albrecht.andi@gmail.com>
parents:
diff changeset
20 class CapturingUI(ui.ui):
8687c5aa4f35 Add svnrev, svnpath and svnuuid keyword.
Andi Albrecht <albrecht.andi@gmail.com>
parents:
diff changeset
21
8687c5aa4f35 Add svnrev, svnpath and svnuuid keyword.
Andi Albrecht <albrecht.andi@gmail.com>
parents:
diff changeset
22 def __init__(self, *args, **kwds):
8687c5aa4f35 Add svnrev, svnpath and svnuuid keyword.
Andi Albrecht <albrecht.andi@gmail.com>
parents:
diff changeset
23 super(CapturingUI, self).__init__(*args, **kwds)
8687c5aa4f35 Add svnrev, svnpath and svnuuid keyword.
Andi Albrecht <albrecht.andi@gmail.com>
parents:
diff changeset
24 self._output = ""
8687c5aa4f35 Add svnrev, svnpath and svnuuid keyword.
Andi Albrecht <albrecht.andi@gmail.com>
parents:
diff changeset
25
8687c5aa4f35 Add svnrev, svnpath and svnuuid keyword.
Andi Albrecht <albrecht.andi@gmail.com>
parents:
diff changeset
26 def write(self, msg, *args, **kwds):
8687c5aa4f35 Add svnrev, svnpath and svnuuid keyword.
Andi Albrecht <albrecht.andi@gmail.com>
parents:
diff changeset
27 self._output += msg
8687c5aa4f35 Add svnrev, svnpath and svnuuid keyword.
Andi Albrecht <albrecht.andi@gmail.com>
parents:
diff changeset
28
721
af817963897e test_template_keywords: use new requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 707
diff changeset
29
707
cb32d90f915e templatekw: clean up implementation & test; add help.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 687
diff changeset
30 class TestLogKeywords(test_util.TestBase):
721
af817963897e test_template_keywords: use new requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 707
diff changeset
31 @test_util.requiresmodule(templatekw)
af817963897e test_template_keywords: use new requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 707
diff changeset
32 def test_svn_keywords(self):
1177
8caf1226adec test_template_keywords: handle changeset output ordering change in hg 3.0
Augie Fackler <raf@durin42.com>
parents: 1044
diff changeset
33 defaults = {'date': None, 'rev': None, 'user': None, 'graph': True}
721
af817963897e test_template_keywords: use new requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 707
diff changeset
34 repo = self._load_fixture_and_fetch('two_revs.svndump')
af817963897e test_template_keywords: use new requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 707
diff changeset
35
af817963897e test_template_keywords: use new requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 707
diff changeset
36 # we want one commit that isn't from Subversion
af817963897e test_template_keywords: use new requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 707
diff changeset
37 self.commitchanges([('foo', 'foo', 'frobnicate\n')])
af817963897e test_template_keywords: use new requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 707
diff changeset
38
af817963897e test_template_keywords: use new requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 707
diff changeset
39 ui = CapturingUI()
1177
8caf1226adec test_template_keywords: handle changeset output ordering change in hg 3.0
Augie Fackler <raf@durin42.com>
parents: 1044
diff changeset
40 commands.log(ui, repo, template=(' rev: {rev} svnrev:{svnrev} '
8caf1226adec test_template_keywords: handle changeset output ordering change in hg 3.0
Augie Fackler <raf@durin42.com>
parents: 1044
diff changeset
41 'svnpath:{svnpath} svnuuid:{svnuuid}\n'),
8caf1226adec test_template_keywords: handle changeset output ordering change in hg 3.0
Augie Fackler <raf@durin42.com>
parents: 1044
diff changeset
42 **defaults)
8caf1226adec test_template_keywords: handle changeset output ordering change in hg 3.0
Augie Fackler <raf@durin42.com>
parents: 1044
diff changeset
43 print ui._output
8caf1226adec test_template_keywords: handle changeset output ordering change in hg 3.0
Augie Fackler <raf@durin42.com>
parents: 1044
diff changeset
44 self.assertEqual(ui._output.strip(), '''
8caf1226adec test_template_keywords: handle changeset output ordering change in hg 3.0
Augie Fackler <raf@durin42.com>
parents: 1044
diff changeset
45 rev: 2 svnrev: svnpath: svnuuid:
8caf1226adec test_template_keywords: handle changeset output ordering change in hg 3.0
Augie Fackler <raf@durin42.com>
parents: 1044
diff changeset
46 @
8caf1226adec test_template_keywords: handle changeset output ordering change in hg 3.0
Augie Fackler <raf@durin42.com>
parents: 1044
diff changeset
47 |
8caf1226adec test_template_keywords: handle changeset output ordering change in hg 3.0
Augie Fackler <raf@durin42.com>
parents: 1044
diff changeset
48 rev: 1 svnrev:3 svnpath:/trunk svnuuid:df2126f7-00ab-4d49-b42c-7e981dde0bcf
8caf1226adec test_template_keywords: handle changeset output ordering change in hg 3.0
Augie Fackler <raf@durin42.com>
parents: 1044
diff changeset
49 o
8caf1226adec test_template_keywords: handle changeset output ordering change in hg 3.0
Augie Fackler <raf@durin42.com>
parents: 1044
diff changeset
50 |
8caf1226adec test_template_keywords: handle changeset output ordering change in hg 3.0
Augie Fackler <raf@durin42.com>
parents: 1044
diff changeset
51 rev: 0 svnrev:2 svnpath:/trunk svnuuid:df2126f7-00ab-4d49-b42c-7e981dde0bcf
8caf1226adec test_template_keywords: handle changeset output ordering change in hg 3.0
Augie Fackler <raf@durin42.com>
parents: 1044
diff changeset
52 o
8caf1226adec test_template_keywords: handle changeset output ordering change in hg 3.0
Augie Fackler <raf@durin42.com>
parents: 1044
diff changeset
53 '''.strip())
687
d424bd1ac647 templatekw: restore compatibility with hg < 1.5
Augie Fackler <durin42@gmail.com>
parents: 684
diff changeset
54
723
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
55 @test_util.requiresmodule(revset)
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
56 @test_util.requiresmodule(templatekw)
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
57 def test_svn_revsets(self):
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
58 repo = self._load_fixture_and_fetch('two_revs.svndump')
722
aa24148a7454 uisetup: add fromsvn() and svnrev() revsets.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 721
diff changeset
59
723
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
60 # we want one commit that isn't from Subversion
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
61 self.commitchanges([('foo', 'foo', 'frobnicate\n')])
722
aa24148a7454 uisetup: add fromsvn() and svnrev() revsets.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 721
diff changeset
62
723
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
63 defaults = {'date': None, 'rev': ['fromsvn()'], 'user': None}
722
aa24148a7454 uisetup: add fromsvn() and svnrev() revsets.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 721
diff changeset
64
723
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
65 ui = CapturingUI()
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
66 commands.log(ui, repo, template='{rev}:{svnrev} ', **defaults)
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
67 self.assertEqual(ui._output, '0:2 1:3 ')
722
aa24148a7454 uisetup: add fromsvn() and svnrev() revsets.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 721
diff changeset
68
723
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
69 defaults = {'date': None, 'rev': ['svnrev(2)'], 'user': None}
722
aa24148a7454 uisetup: add fromsvn() and svnrev() revsets.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 721
diff changeset
70
723
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
71 ui = CapturingUI()
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
72 commands.log(ui, repo, template='{rev}:{svnrev} ', **defaults)
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
73 self.assertEqual(ui._output, '0:2 ')
722
aa24148a7454 uisetup: add fromsvn() and svnrev() revsets.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 721
diff changeset
74
723
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
75 defaults = {'date': None, 'rev': ['fromsvn(1)'], 'user': None}
722
aa24148a7454 uisetup: add fromsvn() and svnrev() revsets.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 721
diff changeset
76
723
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
77 self.assertRaises(error.ParseError,
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
78 commands.log, self.ui(), repo,
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
79 template='{rev}:{svnrev} ', **defaults)
722
aa24148a7454 uisetup: add fromsvn() and svnrev() revsets.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 721
diff changeset
80
723
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
81 defaults = {'date': None, 'rev': ['svnrev(1, 2)'], 'user': None}
722
aa24148a7454 uisetup: add fromsvn() and svnrev() revsets.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 721
diff changeset
82
723
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
83 self.assertRaises(error.ParseError,
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
84 commands.log, self.ui(), repo,
4baa41e0f8ad revset tests: use requiresmodule decorator
Augie Fackler <durin42@gmail.com>
parents: 722
diff changeset
85 template='{rev}:{svnrev} ', **defaults)