annotate tests/test_template_keywords.py @ 1512:6d0fe7ce9898

commands: fix command option registering A recent patch introduced svnopts as a way of sharing the svn command options between the old and the new way of registering a command. It turns out 'svnopts' was already used further up in the module to define the flags that should be added to *all* Mercurial commands. So our definition of it here cause us to add all of these options to all Mercurial commands. This was caught because it changes --rev to be '' instead of [], which breaks a number of assumptions in the other commands. Given that none of the subversion tests are command line tests, I'm not sure how to test this. It was caught in other extensions tests. (grafted from 3b1334407783a4379fd515e2ed9acc61e3f175ff) (grafted from 6db63ead5556f2bf72e423ca8c6df08ea3a5b009)
author Durham Goode <durham@fb.com>
date Wed, 24 May 2017 15:07:00 -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)