annotate tests/test-template-basic.t @ 49487:e8481625c582

rust: add Debug constraint to Matcher trait This makes sure we can easily debug which Matcher we're looking at when using trait objects, and is just generally useful. Effort to make the debugging output nicer has been kept to a minimum, please feel free to improve.
author Raphaël Gomès <rgomes@octobus.net>
date Mon, 11 Jul 2022 11:59:13 +0200
parents c000eff2c635
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38437
550b7d110f45 tests: rename and document test-command-template.t
Yuya Nishihara <yuya@tcha.org>
parents: 38436
diff changeset
1 Test template syntax and basic functionality
550b7d110f45 tests: rename and document test-command-template.t
Yuya Nishihara <yuya@tcha.org>
parents: 38436
diff changeset
2 ============================================
550b7d110f45 tests: rename and document test-command-template.t
Yuya Nishihara <yuya@tcha.org>
parents: 38436
diff changeset
3
12283
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
4 $ hg init a
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
5 $ cd a
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
6 $ echo a > a
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
7 $ hg add a
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
8 $ echo line 1 > b
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
9 $ echo line 2 >> b
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
10 $ hg commit -l b -d '1000000 0' -u 'User Name <user@hostname>'
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
11
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
12 $ hg add b
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
13 $ echo other 1 > c
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
14 $ echo other 2 >> c
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
15 $ echo >> c
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
16 $ echo other 3 >> c
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
17 $ hg commit -l c -d '1100000 0' -u 'A. N. Other <other@place>'
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
18
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
19 $ hg add c
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
20 $ hg commit -m 'no person' -d '1200000 0' -u 'other@place'
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
21 $ echo c >> c
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
22 $ hg commit -m 'no user, no domain' -d '1300000 0' -u 'person'
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
23
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
24 $ echo foo > .hg/branch
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
25 $ hg commit -m 'new branch' -d '1400000 0' -u 'person'
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
26
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
27 $ hg co -q 3
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
28 $ echo other 4 >> d
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
29 $ hg add d
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
30 $ hg commit -m 'new head' -d '1500000 0' -u 'person'
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
31
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
32 $ hg merge -q foo
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
33 $ hg commit -m 'merge' -d '1500001 0' -u 'person'
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
34
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
35 Test arithmetic operators have the right precedence:
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
36
30237
94ef2f00b8a4 tests: use basic format code "%Y" instead of "%s" for test portability
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 30232
diff changeset
37 $ hg log -l 1 -T '{date(date, "%Y") + 5 * 10} {date(date, "%Y") - 2 * 3}\n'
94ef2f00b8a4 tests: use basic format code "%Y" instead of "%s" for test portability
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 30232
diff changeset
38 2020 1964
94ef2f00b8a4 tests: use basic format code "%Y" instead of "%s" for test portability
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 30232
diff changeset
39 $ hg log -l 1 -T '{date(date, "%Y") * 5 + 10} {date(date, "%Y") * 3 - 2}\n'
94ef2f00b8a4 tests: use basic format code "%Y" instead of "%s" for test portability
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 30232
diff changeset
40 9860 5908
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
41
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
42 Test division:
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
43
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
44 $ hg debugtemplate -r0 -v '{5 / 2} {mod(5, 2)}\n'
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
45 (template
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
46 (/
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
47 (integer '5')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
48 (integer '2'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
49 (string ' ')
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
50 (func
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
51 (symbol 'mod')
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
52 (list
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
53 (integer '5')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
54 (integer '2')))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
55 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
56 * keywords:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
57 * functions: mod
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
58 2 1
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
59 $ hg debugtemplate -r0 -v '{5 / -2} {mod(5, -2)}\n'
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
60 (template
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
61 (/
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
62 (integer '5')
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
63 (negate
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
64 (integer '2')))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
65 (string ' ')
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
66 (func
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
67 (symbol 'mod')
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
68 (list
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
69 (integer '5')
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
70 (negate
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
71 (integer '2'))))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
72 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
73 * keywords:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
74 * functions: mod
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
75 -3 -1
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
76 $ hg debugtemplate -r0 -v '{-5 / 2} {mod(-5, 2)}\n'
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
77 (template
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
78 (/
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
79 (negate
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
80 (integer '5'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
81 (integer '2'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
82 (string ' ')
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
83 (func
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
84 (symbol 'mod')
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
85 (list
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
86 (negate
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
87 (integer '5'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
88 (integer '2')))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
89 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
90 * keywords:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
91 * functions: mod
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
92 -3 1
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
93 $ hg debugtemplate -r0 -v '{-5 / -2} {mod(-5, -2)}\n'
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
94 (template
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
95 (/
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
96 (negate
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
97 (integer '5'))
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
98 (negate
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
99 (integer '2')))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
100 (string ' ')
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
101 (func
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
102 (symbol 'mod')
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
103 (list
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
104 (negate
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
105 (integer '5'))
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
106 (negate
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
107 (integer '2'))))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
108 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
109 * keywords:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
110 * functions: mod
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
111 2 -1
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
112
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
113 Filters bind closer than arithmetic:
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
114
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
115 $ hg debugtemplate -r0 -v '{revset(".")|count - 1}\n'
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
116 (template
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
117 (-
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
118 (|
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
119 (func
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
120 (symbol 'revset')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
121 (string '.'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
122 (symbol 'count'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
123 (integer '1'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
124 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
125 * keywords:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
126 * functions: count, revset
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
127 0
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
128
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
129 But negate binds closer still:
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
130
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
131 $ hg debugtemplate -r0 -v '{1-3|stringify}\n'
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
132 (template
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
133 (-
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
134 (integer '1')
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
135 (|
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
136 (integer '3')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
137 (symbol 'stringify')))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
138 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
139 * keywords:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
140 * functions: stringify
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
141 hg: parse error: arithmetic only defined on integers
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
142 [10]
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
143 $ hg debugtemplate -r0 -v '{-3|stringify}\n'
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
144 (template
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
145 (|
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
146 (negate
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
147 (integer '3'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
148 (symbol 'stringify'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
149 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
150 * keywords:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
151 * functions: stringify
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
152 -3
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
153
34329
6367318327f0 templater: adjust binding strength of '%' and '|' operators (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 34073
diff changeset
154 Filters bind as close as map operator:
6367318327f0 templater: adjust binding strength of '%' and '|' operators (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 34073
diff changeset
155
6367318327f0 templater: adjust binding strength of '%' and '|' operators (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 34073
diff changeset
156 $ hg debugtemplate -r0 -v '{desc|splitlines % "{line}\n"}'
6367318327f0 templater: adjust binding strength of '%' and '|' operators (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 34073
diff changeset
157 (template
6367318327f0 templater: adjust binding strength of '%' and '|' operators (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 34073
diff changeset
158 (%
6367318327f0 templater: adjust binding strength of '%' and '|' operators (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 34073
diff changeset
159 (|
6367318327f0 templater: adjust binding strength of '%' and '|' operators (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 34073
diff changeset
160 (symbol 'desc')
6367318327f0 templater: adjust binding strength of '%' and '|' operators (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 34073
diff changeset
161 (symbol 'splitlines'))
6367318327f0 templater: adjust binding strength of '%' and '|' operators (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 34073
diff changeset
162 (template
6367318327f0 templater: adjust binding strength of '%' and '|' operators (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 34073
diff changeset
163 (symbol 'line')
6367318327f0 templater: adjust binding strength of '%' and '|' operators (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 34073
diff changeset
164 (string '\n'))))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
165 * keywords: desc, line
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
166 * functions: splitlines
34329
6367318327f0 templater: adjust binding strength of '%' and '|' operators (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 34073
diff changeset
167 line 1
6367318327f0 templater: adjust binding strength of '%' and '|' operators (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 34073
diff changeset
168 line 2
6367318327f0 templater: adjust binding strength of '%' and '|' operators (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 34073
diff changeset
169
31885
d18b624c1c06 templater: add parsing rule for key-value pair
Yuya Nishihara <yuya@tcha.org>
parents: 31882
diff changeset
170 Keyword arguments:
d18b624c1c06 templater: add parsing rule for key-value pair
Yuya Nishihara <yuya@tcha.org>
parents: 31882
diff changeset
171
d18b624c1c06 templater: add parsing rule for key-value pair
Yuya Nishihara <yuya@tcha.org>
parents: 31882
diff changeset
172 $ hg debugtemplate -r0 -v '{foo=bar|baz}'
d18b624c1c06 templater: add parsing rule for key-value pair
Yuya Nishihara <yuya@tcha.org>
parents: 31882
diff changeset
173 (template
d18b624c1c06 templater: add parsing rule for key-value pair
Yuya Nishihara <yuya@tcha.org>
parents: 31882
diff changeset
174 (keyvalue
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
175 (symbol 'foo')
31885
d18b624c1c06 templater: add parsing rule for key-value pair
Yuya Nishihara <yuya@tcha.org>
parents: 31882
diff changeset
176 (|
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
177 (symbol 'bar')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
178 (symbol 'baz'))))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
179 * keywords: bar, foo
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
180 * functions: baz
31885
d18b624c1c06 templater: add parsing rule for key-value pair
Yuya Nishihara <yuya@tcha.org>
parents: 31882
diff changeset
181 hg: parse error: can't use a key-value pair in this context
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
182 [10]
31885
d18b624c1c06 templater: add parsing rule for key-value pair
Yuya Nishihara <yuya@tcha.org>
parents: 31882
diff changeset
183
31887
f7b3677f66cd templater: port pad() to take keyword arguments
Yuya Nishihara <yuya@tcha.org>
parents: 31886
diff changeset
184 $ hg debugtemplate '{pad("foo", width=10, left=true)}\n'
f7b3677f66cd templater: port pad() to take keyword arguments
Yuya Nishihara <yuya@tcha.org>
parents: 31886
diff changeset
185 foo
f7b3677f66cd templater: port pad() to take keyword arguments
Yuya Nishihara <yuya@tcha.org>
parents: 31886
diff changeset
186
31886
bdda942f4b9c templater: add support for keyword arguments
Yuya Nishihara <yuya@tcha.org>
parents: 31885
diff changeset
187 Call function which takes named arguments by filter syntax:
bdda942f4b9c templater: add support for keyword arguments
Yuya Nishihara <yuya@tcha.org>
parents: 31885
diff changeset
188
bdda942f4b9c templater: add support for keyword arguments
Yuya Nishihara <yuya@tcha.org>
parents: 31885
diff changeset
189 $ hg debugtemplate '{" "|separate}'
bdda942f4b9c templater: add support for keyword arguments
Yuya Nishihara <yuya@tcha.org>
parents: 31885
diff changeset
190 $ hg debugtemplate '{("not", "an", "argument", "list")|separate}'
40618
ff8b2886c492 templater: check invalid use of list expression properly (issue5920)
Yuya Nishihara <yuya@tcha.org>
parents: 38476
diff changeset
191 hg: parse error: can't use a list in this context
ff8b2886c492 templater: check invalid use of list expression properly (issue5920)
Yuya Nishihara <yuya@tcha.org>
parents: 38476
diff changeset
192 (check place of comma and parens)
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
193 [10]
31886
bdda942f4b9c templater: add support for keyword arguments
Yuya Nishihara <yuya@tcha.org>
parents: 31885
diff changeset
194
12283
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
195 Second branch starting at nullrev:
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
196
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
197 $ hg update null
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
198 0 files updated, 0 files merged, 4 files removed, 0 files unresolved
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
199 $ echo second > second
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
200 $ hg add second
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
201 $ hg commit -m second -d '1000000 0' -u 'User Name <user@hostname>'
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
202 created new head
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
203
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
204 $ echo third > third
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
205 $ hg add third
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
206 $ hg mv second fourth
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
207 $ hg commit -m third -d "2020-01-01 10:01"
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
208
18970
3cdb6f2f6789 templatekw: add default styles for hybrid types (issue3887)
Matt Mackall <mpm@selenic.com>
parents: 18893
diff changeset
209 $ hg log --template '{join(file_copies, ",\n")}\n' -r .
3cdb6f2f6789 templatekw: add default styles for hybrid types (issue3887)
Matt Mackall <mpm@selenic.com>
parents: 18893
diff changeset
210 fourth (second)
20665
945bc5497e6d commands: add -T alternative to --template
Matt Mackall <mpm@selenic.com>
parents: 20520
diff changeset
211 $ hg log -T '{file_copies % "{source} -> {name}\n"}' -r .
18715
c4ff927b6f68 templater: properly handle file_copies with %
Matt Mackall <mpm@selenic.com>
parents: 18207
diff changeset
212 second -> fourth
24240
bd504d90588d templater: implement _hybrid.__contains__ so that ifcontains can accept dict
Yuya Nishihara <yuya@tcha.org>
parents: 24157
diff changeset
213 $ hg log -T '{rev} {ifcontains("fourth", file_copies, "t", "f")}\n' -r .:7
bd504d90588d templater: implement _hybrid.__contains__ so that ifcontains can accept dict
Yuya Nishihara <yuya@tcha.org>
parents: 24157
diff changeset
214 8 t
bd504d90588d templater: implement _hybrid.__contains__ so that ifcontains can accept dict
Yuya Nishihara <yuya@tcha.org>
parents: 24157
diff changeset
215 7 f
18715
c4ff927b6f68 templater: properly handle file_copies with %
Matt Mackall <mpm@selenic.com>
parents: 18207
diff changeset
216
35469
f1c54d003327 templater: move repo, ui and cache to per-engine resources
Yuya Nishihara <yuya@tcha.org>
parents: 34993
diff changeset
217 Internal resources shouldn't be exposed (issue5699):
f1c54d003327 templater: move repo, ui and cache to per-engine resources
Yuya Nishihara <yuya@tcha.org>
parents: 34993
diff changeset
218
35470
a33be093ec62 templater: look up symbols/resources as if they were separated (issue5699)
Yuya Nishihara <yuya@tcha.org>
parents: 35469
diff changeset
219 $ hg log -r. -T '{cache}{ctx}{repo}{revcache}{templ}{ui}'
a33be093ec62 templater: look up symbols/resources as if they were separated (issue5699)
Yuya Nishihara <yuya@tcha.org>
parents: 35469
diff changeset
220
a33be093ec62 templater: look up symbols/resources as if they were separated (issue5699)
Yuya Nishihara <yuya@tcha.org>
parents: 35469
diff changeset
221 Never crash on internal resource not available:
a33be093ec62 templater: look up symbols/resources as if they were separated (issue5699)
Yuya Nishihara <yuya@tcha.org>
parents: 35469
diff changeset
222
a33be093ec62 templater: look up symbols/resources as if they were separated (issue5699)
Yuya Nishihara <yuya@tcha.org>
parents: 35469
diff changeset
223 $ hg --cwd .. debugtemplate '{"c0bebeef"|shortest}\n'
38427
4b73f316ba0e templatefuncs: minimize resource requirements
Yuya Nishihara <yuya@tcha.org>
parents: 38355
diff changeset
224 abort: template resource not available: repo
35470
a33be093ec62 templater: look up symbols/resources as if they were separated (issue5699)
Yuya Nishihara <yuya@tcha.org>
parents: 35469
diff changeset
225 [255]
35469
f1c54d003327 templater: move repo, ui and cache to per-engine resources
Yuya Nishihara <yuya@tcha.org>
parents: 34993
diff changeset
226
36445
e8d37838f5df templatekw: add 'requires' flag to switch to exception-safe interface
Yuya Nishihara <yuya@tcha.org>
parents: 36246
diff changeset
227 $ hg config -T '{author}'
e8d37838f5df templatekw: add 'requires' flag to switch to exception-safe interface
Yuya Nishihara <yuya@tcha.org>
parents: 36246
diff changeset
228
16678
48b1674ac1e7 templater: handle SyntaxError when parsing ui.logtemplate
Martin Geisler <martin@geisler.net>
parents: 15839
diff changeset
229 Quoting for ui.logtemplate
48b1674ac1e7 templater: handle SyntaxError when parsing ui.logtemplate
Martin Geisler <martin@geisler.net>
parents: 15839
diff changeset
230
48b1674ac1e7 templater: handle SyntaxError when parsing ui.logtemplate
Martin Geisler <martin@geisler.net>
parents: 15839
diff changeset
231 $ hg tip --config "ui.logtemplate={rev}\n"
48b1674ac1e7 templater: handle SyntaxError when parsing ui.logtemplate
Martin Geisler <martin@geisler.net>
parents: 15839
diff changeset
232 8
48b1674ac1e7 templater: handle SyntaxError when parsing ui.logtemplate
Martin Geisler <martin@geisler.net>
parents: 15839
diff changeset
233 $ hg tip --config "ui.logtemplate='{rev}\n'"
48b1674ac1e7 templater: handle SyntaxError when parsing ui.logtemplate
Martin Geisler <martin@geisler.net>
parents: 15839
diff changeset
234 8
48b1674ac1e7 templater: handle SyntaxError when parsing ui.logtemplate
Martin Geisler <martin@geisler.net>
parents: 15839
diff changeset
235 $ hg tip --config 'ui.logtemplate="{rev}\n"'
48b1674ac1e7 templater: handle SyntaxError when parsing ui.logtemplate
Martin Geisler <martin@geisler.net>
parents: 15839
diff changeset
236 8
28687
29c249dfb4ef templater: do not strip non-quote characters from template config
Yuya Nishihara <yuya@tcha.org>
parents: 28628
diff changeset
237 $ hg tip --config 'ui.logtemplate=n{rev}\n'
29c249dfb4ef templater: do not strip non-quote characters from template config
Yuya Nishihara <yuya@tcha.org>
parents: 28628
diff changeset
238 n8
16678
48b1674ac1e7 templater: handle SyntaxError when parsing ui.logtemplate
Martin Geisler <martin@geisler.net>
parents: 15839
diff changeset
239
27939
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
240 Check that recursive reference does not fall into RuntimeError (issue4758):
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
241
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
242 common mistake:
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
243
32874
dddba6f3e59c test-command-template: rewrite recursion tests by using a map file
Yuya Nishihara <yuya@tcha.org>
parents: 32684
diff changeset
244 $ cat << EOF > issue4758
dddba6f3e59c test-command-template: rewrite recursion tests by using a map file
Yuya Nishihara <yuya@tcha.org>
parents: 32684
diff changeset
245 > changeset = '{changeset}\n'
dddba6f3e59c test-command-template: rewrite recursion tests by using a map file
Yuya Nishihara <yuya@tcha.org>
parents: 32684
diff changeset
246 > EOF
dddba6f3e59c test-command-template: rewrite recursion tests by using a map file
Yuya Nishihara <yuya@tcha.org>
parents: 32684
diff changeset
247 $ hg log --style ./issue4758
27939
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
248 abort: recursive reference 'changeset' in template
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
249 [255]
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
250
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
251 circular reference:
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
252
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
253 $ cat << EOF > issue4758
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
254 > changeset = '{foo}'
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
255 > foo = '{changeset}'
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
256 > EOF
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
257 $ hg log --style ./issue4758
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
258 abort: recursive reference 'foo' in template
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
259 [255]
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
260
27940
cfe7da66f555 templater: abort if infinite recursion detected while compiling
Yuya Nishihara <yuya@tcha.org>
parents: 27939
diff changeset
261 buildmap() -> gettemplate(), where no thunk was made:
cfe7da66f555 templater: abort if infinite recursion detected while compiling
Yuya Nishihara <yuya@tcha.org>
parents: 27939
diff changeset
262
32874
dddba6f3e59c test-command-template: rewrite recursion tests by using a map file
Yuya Nishihara <yuya@tcha.org>
parents: 32684
diff changeset
263 $ cat << EOF > issue4758
dddba6f3e59c test-command-template: rewrite recursion tests by using a map file
Yuya Nishihara <yuya@tcha.org>
parents: 32684
diff changeset
264 > changeset = '{files % changeset}\n'
dddba6f3e59c test-command-template: rewrite recursion tests by using a map file
Yuya Nishihara <yuya@tcha.org>
parents: 32684
diff changeset
265 > EOF
dddba6f3e59c test-command-template: rewrite recursion tests by using a map file
Yuya Nishihara <yuya@tcha.org>
parents: 32684
diff changeset
266 $ hg log --style ./issue4758
27940
cfe7da66f555 templater: abort if infinite recursion detected while compiling
Yuya Nishihara <yuya@tcha.org>
parents: 27939
diff changeset
267 abort: recursive reference 'changeset' in template
46120
c000eff2c635 errors: raise InputError on recursive template definition
Martin von Zweigbergk <martinvonz@google.com>
parents: 45895
diff changeset
268 [10]
27940
cfe7da66f555 templater: abort if infinite recursion detected while compiling
Yuya Nishihara <yuya@tcha.org>
parents: 27939
diff changeset
269
27939
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
270 not a recursion if a keyword of the same name exists:
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
271
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
272 $ cat << EOF > issue4758
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
273 > changeset = '{tags % rev}'
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
274 > rev = '{rev} {tag}\n'
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
275 > EOF
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
276 $ hg log --style ./issue4758 -r tip
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
277 8 tip
7ed3a3c0cef1 templater: abort if infinite recursion detected while evaluation (issue4758)
Yuya Nishihara <yuya@tcha.org>
parents: 27894
diff changeset
278
38436
da4508cdef37 tests: extract test-template-keywords.t from test-command-template.t
Yuya Nishihara <yuya@tcha.org>
parents: 38434
diff changeset
279 Set up phase:
22764
1e2f54a149e8 templater: set the correct phase for parents
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 22668
diff changeset
280
1e2f54a149e8 templater: set the correct phase for parents
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 22668
diff changeset
281 $ hg phase -r 5 --public
1e2f54a149e8 templater: set the correct phase for parents
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 22668
diff changeset
282 $ hg phase -r 7 --secret --force
12283
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
283
25005
5ddbb024c2e9 tests: fix hidden repeatability problem with age filter test
Matt Mackall <mpm@selenic.com>
parents: 25003
diff changeset
284 Add a dummy commit to make up for the instability of the above:
5ddbb024c2e9 tests: fix hidden repeatability problem with age filter test
Matt Mackall <mpm@selenic.com>
parents: 25003
diff changeset
285
5ddbb024c2e9 tests: fix hidden repeatability problem with age filter test
Matt Mackall <mpm@selenic.com>
parents: 25003
diff changeset
286 $ echo a > a
5ddbb024c2e9 tests: fix hidden repeatability problem with age filter test
Matt Mackall <mpm@selenic.com>
parents: 25003
diff changeset
287 $ hg add a
5ddbb024c2e9 tests: fix hidden repeatability problem with age filter test
Matt Mackall <mpm@selenic.com>
parents: 25003
diff changeset
288 $ hg ci -m future
5ddbb024c2e9 tests: fix hidden repeatability problem with age filter test
Matt Mackall <mpm@selenic.com>
parents: 25003
diff changeset
289
24985
20bff5d09018 tests: add a new commit to test-commandline-template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24966
diff changeset
290 Add a commit that does all possible modifications at once
20bff5d09018 tests: add a new commit to test-commandline-template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24966
diff changeset
291
20bff5d09018 tests: add a new commit to test-commandline-template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24966
diff changeset
292 $ echo modify >> third
20bff5d09018 tests: add a new commit to test-commandline-template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24966
diff changeset
293 $ touch b
20bff5d09018 tests: add a new commit to test-commandline-template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24966
diff changeset
294 $ hg add b
20bff5d09018 tests: add a new commit to test-commandline-template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24966
diff changeset
295 $ hg mv fourth fifth
20bff5d09018 tests: add a new commit to test-commandline-template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24966
diff changeset
296 $ hg rm a
20bff5d09018 tests: add a new commit to test-commandline-template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24966
diff changeset
297 $ hg ci -m "Modify, add, remove, rename"
20bff5d09018 tests: add a new commit to test-commandline-template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 24966
diff changeset
298
38433
ddce7bdf7f3c tests: extract test-template-map.t from test-command-template.t
Yuya Nishihara <yuya@tcha.org>
parents: 38427
diff changeset
299 Error on syntax:
ddce7bdf7f3c tests: extract test-template-map.t from test-command-template.t
Yuya Nishihara <yuya@tcha.org>
parents: 38427
diff changeset
300
ddce7bdf7f3c tests: extract test-template-map.t from test-command-template.t
Yuya Nishihara <yuya@tcha.org>
parents: 38427
diff changeset
301 $ cat <<EOF > t
ddce7bdf7f3c tests: extract test-template-map.t from test-command-template.t
Yuya Nishihara <yuya@tcha.org>
parents: 38427
diff changeset
302 > changeset = '{c}'
ddce7bdf7f3c tests: extract test-template-map.t from test-command-template.t
Yuya Nishihara <yuya@tcha.org>
parents: 38427
diff changeset
303 > c = q
ddce7bdf7f3c tests: extract test-template-map.t from test-command-template.t
Yuya Nishihara <yuya@tcha.org>
parents: 38427
diff changeset
304 > x = "f
25006
517763f87141 log: add a status template
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 25005
diff changeset
305 > EOF
38433
ddce7bdf7f3c tests: extract test-template-map.t from test-command-template.t
Yuya Nishihara <yuya@tcha.org>
parents: 38427
diff changeset
306 $ echo '[ui]' > .hg/hgrc
ddce7bdf7f3c tests: extract test-template-map.t from test-command-template.t
Yuya Nishihara <yuya@tcha.org>
parents: 38427
diff changeset
307 $ echo 'style = t' >> .hg/hgrc
12283
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
308 $ hg log
28628
ed1d90f6e921 templater: do not abuse SyntaxError to report errors in template map file
Yuya Nishihara <yuya@tcha.org>
parents: 28548
diff changeset
309 hg: parse error at t:3: unmatched quotes
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
310 [10]
12283
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
311
25782
babd2c93bd99 templater: check existence of closing brace of template string
Yuya Nishihara <yuya@tcha.org>
parents: 25762
diff changeset
312 $ hg log -T '{date'
babd2c93bd99 templater: check existence of closing brace of template string
Yuya Nishihara <yuya@tcha.org>
parents: 25762
diff changeset
313 hg: parse error at 1: unterminated template expansion
36669
80d7fb6c2dec templater: add hint to template parse errors to help locate issues
Ryan McElroy <rmcelroy@fb.com>
parents: 36635
diff changeset
314 ({date
36691
1b179d151578 templater: fix position of terminator character in error message
Yuya Nishihara <yuya@tcha.org>
parents: 36669
diff changeset
315 ^ here)
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
316 [10]
35680
077ee15b8493 templater: make sure expression is terminated by '}'
Yuya Nishihara <yuya@tcha.org>
parents: 35594
diff changeset
317 $ hg log -T '{date(}'
36691
1b179d151578 templater: fix position of terminator character in error message
Yuya Nishihara <yuya@tcha.org>
parents: 36669
diff changeset
318 hg: parse error at 6: not a prefix: end
36669
80d7fb6c2dec templater: add hint to template parse errors to help locate issues
Ryan McElroy <rmcelroy@fb.com>
parents: 36635
diff changeset
319 ({date(}
80d7fb6c2dec templater: add hint to template parse errors to help locate issues
Ryan McElroy <rmcelroy@fb.com>
parents: 36635
diff changeset
320 ^ here)
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
321 [10]
35680
077ee15b8493 templater: make sure expression is terminated by '}'
Yuya Nishihara <yuya@tcha.org>
parents: 35594
diff changeset
322 $ hg log -T '{date)}'
077ee15b8493 templater: make sure expression is terminated by '}'
Yuya Nishihara <yuya@tcha.org>
parents: 35594
diff changeset
323 hg: parse error at 5: invalid token
36669
80d7fb6c2dec templater: add hint to template parse errors to help locate issues
Ryan McElroy <rmcelroy@fb.com>
parents: 36635
diff changeset
324 ({date)}
36691
1b179d151578 templater: fix position of terminator character in error message
Yuya Nishihara <yuya@tcha.org>
parents: 36669
diff changeset
325 ^ here)
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
326 [10]
35680
077ee15b8493 templater: make sure expression is terminated by '}'
Yuya Nishihara <yuya@tcha.org>
parents: 35594
diff changeset
327 $ hg log -T '{date date}'
077ee15b8493 templater: make sure expression is terminated by '}'
Yuya Nishihara <yuya@tcha.org>
parents: 35594
diff changeset
328 hg: parse error at 6: invalid token
36669
80d7fb6c2dec templater: add hint to template parse errors to help locate issues
Ryan McElroy <rmcelroy@fb.com>
parents: 36635
diff changeset
329 ({date date}
36691
1b179d151578 templater: fix position of terminator character in error message
Yuya Nishihara <yuya@tcha.org>
parents: 36669
diff changeset
330 ^ here)
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
331 [10]
25782
babd2c93bd99 templater: check existence of closing brace of template string
Yuya Nishihara <yuya@tcha.org>
parents: 25762
diff changeset
332
35744
8685192a8733 templater: fix crash by empty group expression
Yuya Nishihara <yuya@tcha.org>
parents: 35680
diff changeset
333 $ hg log -T '{}'
36691
1b179d151578 templater: fix position of terminator character in error message
Yuya Nishihara <yuya@tcha.org>
parents: 36669
diff changeset
334 hg: parse error at 1: not a prefix: end
36669
80d7fb6c2dec templater: add hint to template parse errors to help locate issues
Ryan McElroy <rmcelroy@fb.com>
parents: 36635
diff changeset
335 ({}
80d7fb6c2dec templater: add hint to template parse errors to help locate issues
Ryan McElroy <rmcelroy@fb.com>
parents: 36635
diff changeset
336 ^ here)
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
337 [10]
35744
8685192a8733 templater: fix crash by empty group expression
Yuya Nishihara <yuya@tcha.org>
parents: 35680
diff changeset
338 $ hg debugtemplate -v '{()}'
8685192a8733 templater: fix crash by empty group expression
Yuya Nishihara <yuya@tcha.org>
parents: 35680
diff changeset
339 (template
8685192a8733 templater: fix crash by empty group expression
Yuya Nishihara <yuya@tcha.org>
parents: 35680
diff changeset
340 (group
8685192a8733 templater: fix crash by empty group expression
Yuya Nishihara <yuya@tcha.org>
parents: 35680
diff changeset
341 None))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
342 * keywords:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
343 * functions:
35744
8685192a8733 templater: fix crash by empty group expression
Yuya Nishihara <yuya@tcha.org>
parents: 35680
diff changeset
344 hg: parse error: missing argument
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
345 [10]
25782
babd2c93bd99 templater: check existence of closing brace of template string
Yuya Nishihara <yuya@tcha.org>
parents: 25762
diff changeset
346
37223
08e042f0a67c templatefilters: declare input type as bytes where appropriate
Yuya Nishihara <yuya@tcha.org>
parents: 37105
diff changeset
347 Behind the scenes, this would throw TypeError without intype=bytes
17383
099c778ceb33 templater: abort when a template filter raises an exception (issue2987)
Neil Kodner <neilk@fb.com>
parents: 17345
diff changeset
348
099c778ceb33 templater: abort when a template filter raises an exception (issue2987)
Neil Kodner <neilk@fb.com>
parents: 17345
diff changeset
349 $ hg log -l 3 --template '{date|obfuscate}\n'
38299
88e7105b5cd9 templater: restore the original string format of {date}
Yuya Nishihara <yuya@tcha.org>
parents: 38289
diff changeset
350 &#48;&#46;&#48;&#48;
88e7105b5cd9 templater: restore the original string format of {date}
Yuya Nishihara <yuya@tcha.org>
parents: 38289
diff changeset
351 &#48;&#46;&#48;&#48;
88e7105b5cd9 templater: restore the original string format of {date}
Yuya Nishihara <yuya@tcha.org>
parents: 38289
diff changeset
352 &#49;&#53;&#55;&#55;&#56;&#55;&#50;&#56;&#54;&#48;&#46;&#48;&#48;
17383
099c778ceb33 templater: abort when a template filter raises an exception (issue2987)
Neil Kodner <neilk@fb.com>
parents: 17345
diff changeset
353
099c778ceb33 templater: abort when a template filter raises an exception (issue2987)
Neil Kodner <neilk@fb.com>
parents: 17345
diff changeset
354 Behind the scenes, this will throw a ValueError
099c778ceb33 templater: abort when a template filter raises an exception (issue2987)
Neil Kodner <neilk@fb.com>
parents: 17345
diff changeset
355
099c778ceb33 templater: abort when a template filter raises an exception (issue2987)
Neil Kodner <neilk@fb.com>
parents: 17345
diff changeset
356 $ hg log -l 3 --template 'line: {desc|shortdate}\n'
37227
9bcf096a2da2 templatefilters: declare input type as date where appropriate
Yuya Nishihara <yuya@tcha.org>
parents: 37223
diff changeset
357 hg: parse error: invalid date: 'Modify, add, remove, rename'
9bcf096a2da2 templatefilters: declare input type as date where appropriate
Yuya Nishihara <yuya@tcha.org>
parents: 37223
diff changeset
358 (template filter 'shortdate' is not compatible with keyword 'desc')
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
359 [10]
17383
099c778ceb33 templater: abort when a template filter raises an exception (issue2987)
Neil Kodner <neilk@fb.com>
parents: 17345
diff changeset
360
37223
08e042f0a67c templatefilters: declare input type as bytes where appropriate
Yuya Nishihara <yuya@tcha.org>
parents: 37105
diff changeset
361 Behind the scenes, this would throw AttributeError without intype=bytes
17383
099c778ceb33 templater: abort when a template filter raises an exception (issue2987)
Neil Kodner <neilk@fb.com>
parents: 17345
diff changeset
362
099c778ceb33 templater: abort when a template filter raises an exception (issue2987)
Neil Kodner <neilk@fb.com>
parents: 17345
diff changeset
363 $ hg log -l 3 --template 'line: {date|escape}\n'
38299
88e7105b5cd9 templater: restore the original string format of {date}
Yuya Nishihara <yuya@tcha.org>
parents: 38289
diff changeset
364 line: 0.00
88e7105b5cd9 templater: restore the original string format of {date}
Yuya Nishihara <yuya@tcha.org>
parents: 38289
diff changeset
365 line: 0.00
88e7105b5cd9 templater: restore the original string format of {date}
Yuya Nishihara <yuya@tcha.org>
parents: 38289
diff changeset
366 line: 1577872860.00
17383
099c778ceb33 templater: abort when a template filter raises an exception (issue2987)
Neil Kodner <neilk@fb.com>
parents: 17345
diff changeset
367
26127
7012be5ab5bd templater: port localdate filter to a function
Yuya Nishihara <yuya@tcha.org>
parents: 26106
diff changeset
368 $ hg log -l 3 --template 'line: {extras|localdate}\n'
7012be5ab5bd templater: port localdate filter to a function
Yuya Nishihara <yuya@tcha.org>
parents: 26106
diff changeset
369 hg: parse error: localdate expects a date information
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
370 [10]
26127
7012be5ab5bd templater: port localdate filter to a function
Yuya Nishihara <yuya@tcha.org>
parents: 26106
diff changeset
371
17383
099c778ceb33 templater: abort when a template filter raises an exception (issue2987)
Neil Kodner <neilk@fb.com>
parents: 17345
diff changeset
372 Behind the scenes, this will throw ValueError
099c778ceb33 templater: abort when a template filter raises an exception (issue2987)
Neil Kodner <neilk@fb.com>
parents: 17345
diff changeset
373
099c778ceb33 templater: abort when a template filter raises an exception (issue2987)
Neil Kodner <neilk@fb.com>
parents: 17345
diff changeset
374 $ hg tip --template '{author|email|date}\n'
26106
c568c4db036f templatefilters: remove redundant 'date' and 'strip' filters
Yuya Nishihara <yuya@tcha.org>
parents: 26105
diff changeset
375 hg: parse error: date expects a date information
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
376 [10]
17383
099c778ceb33 templater: abort when a template filter raises an exception (issue2987)
Neil Kodner <neilk@fb.com>
parents: 17345
diff changeset
377
31927
2abc556dbe92 templater: find keyword name more thoroughly on filtering error
Yuya Nishihara <yuya@tcha.org>
parents: 31926
diff changeset
378 $ hg tip -T '{author|email|shortdate}\n'
37227
9bcf096a2da2 templatefilters: declare input type as date where appropriate
Yuya Nishihara <yuya@tcha.org>
parents: 37223
diff changeset
379 hg: parse error: invalid date: 'test'
9bcf096a2da2 templatefilters: declare input type as date where appropriate
Yuya Nishihara <yuya@tcha.org>
parents: 37223
diff changeset
380 (template filter 'shortdate' is not compatible with keyword 'author')
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
381 [10]
31927
2abc556dbe92 templater: find keyword name more thoroughly on filtering error
Yuya Nishihara <yuya@tcha.org>
parents: 31926
diff changeset
382
2abc556dbe92 templater: find keyword name more thoroughly on filtering error
Yuya Nishihara <yuya@tcha.org>
parents: 31926
diff changeset
383 $ hg tip -T '{get(extras, "branch")|shortdate}\n'
37227
9bcf096a2da2 templatefilters: declare input type as date where appropriate
Yuya Nishihara <yuya@tcha.org>
parents: 37223
diff changeset
384 hg: parse error: invalid date: 'default'
9bcf096a2da2 templatefilters: declare input type as date where appropriate
Yuya Nishihara <yuya@tcha.org>
parents: 37223
diff changeset
385 (incompatible use of template filter 'shortdate')
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
386 [10]
31927
2abc556dbe92 templater: find keyword name more thoroughly on filtering error
Yuya Nishihara <yuya@tcha.org>
parents: 31926
diff changeset
387
25783
1f6878c87c25 templater: introduce one-pass parsing of nested template strings
Yuya Nishihara <yuya@tcha.org>
parents: 25782
diff changeset
388 Error in nested template:
1f6878c87c25 templater: introduce one-pass parsing of nested template strings
Yuya Nishihara <yuya@tcha.org>
parents: 25782
diff changeset
389
1f6878c87c25 templater: introduce one-pass parsing of nested template strings
Yuya Nishihara <yuya@tcha.org>
parents: 25782
diff changeset
390 $ hg log -T '{"date'
1f6878c87c25 templater: introduce one-pass parsing of nested template strings
Yuya Nishihara <yuya@tcha.org>
parents: 25782
diff changeset
391 hg: parse error at 2: unterminated string
36669
80d7fb6c2dec templater: add hint to template parse errors to help locate issues
Ryan McElroy <rmcelroy@fb.com>
parents: 36635
diff changeset
392 ({"date
36691
1b179d151578 templater: fix position of terminator character in error message
Yuya Nishihara <yuya@tcha.org>
parents: 36669
diff changeset
393 ^ here)
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
394 [10]
25783
1f6878c87c25 templater: introduce one-pass parsing of nested template strings
Yuya Nishihara <yuya@tcha.org>
parents: 25782
diff changeset
395
31885
d18b624c1c06 templater: add parsing rule for key-value pair
Yuya Nishihara <yuya@tcha.org>
parents: 31882
diff changeset
396 $ hg log -T '{"foo{date|?}"}'
25783
1f6878c87c25 templater: introduce one-pass parsing of nested template strings
Yuya Nishihara <yuya@tcha.org>
parents: 25782
diff changeset
397 hg: parse error at 11: syntax error
36669
80d7fb6c2dec templater: add hint to template parse errors to help locate issues
Ryan McElroy <rmcelroy@fb.com>
parents: 36635
diff changeset
398 ({"foo{date|?}"}
36691
1b179d151578 templater: fix position of terminator character in error message
Yuya Nishihara <yuya@tcha.org>
parents: 36669
diff changeset
399 ^ here)
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
400 [10]
25783
1f6878c87c25 templater: introduce one-pass parsing of nested template strings
Yuya Nishihara <yuya@tcha.org>
parents: 25782
diff changeset
401
20857
6eb55310fcbc templater: raise error for unknown func
Sean Farley <sean.michael.farley@gmail.com>
parents: 20663
diff changeset
402 Thrown an error if a template function doesn't exist
6eb55310fcbc templater: raise error for unknown func
Sean Farley <sean.michael.farley@gmail.com>
parents: 20663
diff changeset
403
6eb55310fcbc templater: raise error for unknown func
Sean Farley <sean.michael.farley@gmail.com>
parents: 20663
diff changeset
404 $ hg tip --template '{foo()}\n'
6eb55310fcbc templater: raise error for unknown func
Sean Farley <sean.michael.farley@gmail.com>
parents: 20663
diff changeset
405 hg: parse error: unknown function 'foo'
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
406 [10]
20857
6eb55310fcbc templater: raise error for unknown func
Sean Farley <sean.michael.farley@gmail.com>
parents: 20663
diff changeset
407
12283
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
408 $ cd ..
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
409
38436
da4508cdef37 tests: extract test-template-keywords.t from test-command-template.t
Yuya Nishihara <yuya@tcha.org>
parents: 38434
diff changeset
410 Set up latesttag repository:
12283
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
411
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
412 $ hg init latesttag
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
413 $ cd latesttag
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
414
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
415 $ echo a > file
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
416 $ hg ci -Am a -d '0 0'
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
417 adding file
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
418
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
419 $ echo b >> file
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
420 $ hg ci -m b -d '1 0'
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
421
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
422 $ echo c >> head1
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
423 $ hg ci -Am h1c -d '2 0'
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
424 adding head1
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
425
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
426 $ hg update -q 1
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
427 $ echo d >> head2
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
428 $ hg ci -Am h2d -d '3 0'
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
429 adding head2
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
430 created new head
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
431
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
432 $ echo e >> head2
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
433 $ hg ci -m h2e -d '4 0'
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
434
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
435 $ hg merge -q
19989
c38c3fdc8b93 date: allow %z in format (issue4040)
Matt Mackall <mpm@selenic.com>
parents: 19770
diff changeset
436 $ hg ci -m merge -d '5 -3600'
12283
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
437
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
438 $ hg tag -r 1 -m t1 -d '6 0' t1
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
439 $ hg tag -r 2 -m t2 -d '7 0' t2
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
440 $ hg tag -r 3 -m t3 -d '8 0' t3
33862
fb672eac2702 templatekw: choose {latesttag} by len(changes), not date (issue5659)
Martin von Zweigbergk <martinvonz@google.com>
parents: 33861
diff changeset
441 $ hg tag -r 4 -m t4 -d '4 0' t4 # older than t2, but should not matter
12283
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
442 $ hg tag -r 5 -m t5 -d '9 0' t5
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
443 $ hg tag -r 3 -m at3 -d '10 0' at3
33861
0e15d5ae52cf tests: use graph log in {latesttag} tests
Martin von Zweigbergk <martinvonz@google.com>
parents: 33542
diff changeset
444
12283
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
445 $ cd ..
850e089eb41c tests: unify test-command-template
Adrian Buehlmann <adrian@cadifra.com>
parents: 11656
diff changeset
446
17631
0b241d7a8c62 templating: make new-style templating features work with command line lists
Matt Mackall <mpm@selenic.com>
parents: 17387
diff changeset
447 Test new-style inline templating:
0b241d7a8c62 templating: make new-style templating features work with command line lists
Matt Mackall <mpm@selenic.com>
parents: 17387
diff changeset
448
0b241d7a8c62 templating: make new-style templating features work with command line lists
Matt Mackall <mpm@selenic.com>
parents: 17387
diff changeset
449 $ hg log -R latesttag -r tip --template 'modified files: {file_mods % " {file}\n"}\n'
0b241d7a8c62 templating: make new-style templating features work with command line lists
Matt Mackall <mpm@selenic.com>
parents: 17387
diff changeset
450 modified files: .hgtags
0b241d7a8c62 templating: make new-style templating features work with command line lists
Matt Mackall <mpm@selenic.com>
parents: 17387
diff changeset
451
28349
7cb2f2438f85 templater: handle exception when applying map operator to non-iterable object
Yuya Nishihara <yuya@tcha.org>
parents: 28346
diff changeset
452
7cb2f2438f85 templater: handle exception when applying map operator to non-iterable object
Yuya Nishihara <yuya@tcha.org>
parents: 28346
diff changeset
453 $ hg log -R latesttag -r tip -T '{rev % "a"}\n'
38229
7701c2d4a438 templater: always map over a wrapped object
Yuya Nishihara <yuya@tcha.org>
parents: 38228
diff changeset
454 hg: parse error: 11 is not iterable of mappings
38271
4b0f39e7406e templater: show slightly better hint on map operation error
Yuya Nishihara <yuya@tcha.org>
parents: 38267
diff changeset
455 (keyword 'rev' does not support map operation)
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
456 [10]
28349
7cb2f2438f85 templater: handle exception when applying map operator to non-iterable object
Yuya Nishihara <yuya@tcha.org>
parents: 28346
diff changeset
457 $ hg log -R latesttag -r tip -T '{get(extras, "unknown") % "a"}\n'
37404
7c902a8345ef templater: complain about invalid application of '%' operator (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 37229
diff changeset
458 hg: parse error: None is not iterable of mappings
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
459 [10]
37404
7c902a8345ef templater: complain about invalid application of '%' operator (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 37229
diff changeset
460 $ hg log -R latesttag -r tip -T '{extras % "{key}\n" % "{key}\n"}'
37499
75c13343cf38 templater: wrap result of '%' operation so it never looks like a thunk
Yuya Nishihara <yuya@tcha.org>
parents: 37418
diff changeset
461 hg: parse error: list of strings is not mappable
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
462 [10]
28349
7cb2f2438f85 templater: handle exception when applying map operator to non-iterable object
Yuya Nishihara <yuya@tcha.org>
parents: 28346
diff changeset
463
34330
89aec1834a86 templatekw: add new-style template expansion to {manifest}
Yuya Nishihara <yuya@tcha.org>
parents: 34329
diff changeset
464 Test new-style inline templating of non-list/dict type:
89aec1834a86 templatekw: add new-style template expansion to {manifest}
Yuya Nishihara <yuya@tcha.org>
parents: 34329
diff changeset
465
89aec1834a86 templatekw: add new-style template expansion to {manifest}
Yuya Nishihara <yuya@tcha.org>
parents: 34329
diff changeset
466 $ hg log -R latesttag -r tip -T '{manifest}\n'
89aec1834a86 templatekw: add new-style template expansion to {manifest}
Yuya Nishihara <yuya@tcha.org>
parents: 34329
diff changeset
467 11:2bc6e9006ce2
89aec1834a86 templatekw: add new-style template expansion to {manifest}
Yuya Nishihara <yuya@tcha.org>
parents: 34329
diff changeset
468 $ hg log -R latesttag -r tip -T 'string length: {manifest|count}\n'
89aec1834a86 templatekw: add new-style template expansion to {manifest}
Yuya Nishihara <yuya@tcha.org>
parents: 34329
diff changeset
469 string length: 15
89aec1834a86 templatekw: add new-style template expansion to {manifest}
Yuya Nishihara <yuya@tcha.org>
parents: 34329
diff changeset
470 $ hg log -R latesttag -r tip -T '{manifest % "{rev}:{node}"}\n'
89aec1834a86 templatekw: add new-style template expansion to {manifest}
Yuya Nishihara <yuya@tcha.org>
parents: 34329
diff changeset
471 11:2bc6e9006ce29882383a22d39fd1f4e66dd3e2fc
89aec1834a86 templatekw: add new-style template expansion to {manifest}
Yuya Nishihara <yuya@tcha.org>
parents: 34329
diff changeset
472
34534
b3073e175c17 templater: wrap get/min/max result so map operation can apply to element
Yuya Nishihara <yuya@tcha.org>
parents: 34330
diff changeset
473 $ hg log -R latesttag -r tip -T '{get(extras, "branch") % "{key}: {value}\n"}'
b3073e175c17 templater: wrap get/min/max result so map operation can apply to element
Yuya Nishihara <yuya@tcha.org>
parents: 34330
diff changeset
474 branch: default
b3073e175c17 templater: wrap get/min/max result so map operation can apply to element
Yuya Nishihara <yuya@tcha.org>
parents: 34330
diff changeset
475 $ hg log -R latesttag -r tip -T '{get(extras, "unknown") % "{key}\n"}'
37404
7c902a8345ef templater: complain about invalid application of '%' operator (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 37229
diff changeset
476 hg: parse error: None is not iterable of mappings
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
477 [10]
34534
b3073e175c17 templater: wrap get/min/max result so map operation can apply to element
Yuya Nishihara <yuya@tcha.org>
parents: 34330
diff changeset
478 $ hg log -R latesttag -r tip -T '{min(extras) % "{key}: {value}\n"}'
b3073e175c17 templater: wrap get/min/max result so map operation can apply to element
Yuya Nishihara <yuya@tcha.org>
parents: 34330
diff changeset
479 branch: default
b3073e175c17 templater: wrap get/min/max result so map operation can apply to element
Yuya Nishihara <yuya@tcha.org>
parents: 34330
diff changeset
480 $ hg log -R latesttag -l1 -T '{min(revset("0:9")) % "{rev}:{node|short}\n"}'
b3073e175c17 templater: wrap get/min/max result so map operation can apply to element
Yuya Nishihara <yuya@tcha.org>
parents: 34330
diff changeset
481 0:ce3cec86e6c2
b3073e175c17 templater: wrap get/min/max result so map operation can apply to element
Yuya Nishihara <yuya@tcha.org>
parents: 34330
diff changeset
482 $ hg log -R latesttag -l1 -T '{max(revset("0:9")) % "{rev}:{node|short}\n"}'
b3073e175c17 templater: wrap get/min/max result so map operation can apply to element
Yuya Nishihara <yuya@tcha.org>
parents: 34330
diff changeset
483 9:fbc7cd862e9c
b3073e175c17 templater: wrap get/min/max result so map operation can apply to element
Yuya Nishihara <yuya@tcha.org>
parents: 34330
diff changeset
484
34535
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
485 Test dot operator precedence:
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
486
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
487 $ hg debugtemplate -R latesttag -r0 -v '{manifest.node|short}\n'
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
488 (template
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
489 (|
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
490 (.
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
491 (symbol 'manifest')
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
492 (symbol 'node'))
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
493 (symbol 'short'))
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
494 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
495 * keywords: manifest, node, rev
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
496 * functions: formatnode, short
34535
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
497 89f4071fec70
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
498
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
499 (the following examples are invalid, but seem natural in parsing POV)
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
500
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
501 $ hg debugtemplate -R latesttag -r0 -v '{foo|bar.baz}\n' 2> /dev/null
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
502 (template
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
503 (|
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
504 (symbol 'foo')
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
505 (.
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
506 (symbol 'bar')
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
507 (symbol 'baz')))
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
508 (string '\n'))
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
509 [10]
34535
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
510 $ hg debugtemplate -R latesttag -r0 -v '{foo.bar()}\n' 2> /dev/null
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
511 (template
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
512 (.
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
513 (symbol 'foo')
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
514 (func
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
515 (symbol 'bar')
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
516 None))
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
517 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
518 * keywords: foo
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
519 * functions: bar
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
520 [10]
34535
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
521
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
522 Test evaluation of dot operator:
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
523
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
524 $ hg log -R latesttag -l1 -T '{min(revset("0:9")).node}\n'
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
525 ce3cec86e6c26bd9bdfc590a6b92abc9680f1796
34536
4c1cfe54c08d templater: extend dot operator as a short for get(dict, key)
Yuya Nishihara <yuya@tcha.org>
parents: 34535
diff changeset
526 $ hg log -R latesttag -r0 -T '{extras.branch}\n'
4c1cfe54c08d templater: extend dot operator as a short for get(dict, key)
Yuya Nishihara <yuya@tcha.org>
parents: 34535
diff changeset
527 default
38286
851fc9d42d6d templater: make date wrapper support dot/map operations
Yuya Nishihara <yuya@tcha.org>
parents: 38285
diff changeset
528 $ hg log -R latesttag -r0 -T '{date.unixtime} {localdate(date, "+0200").tzoffset}\n'
851fc9d42d6d templater: make date wrapper support dot/map operations
Yuya Nishihara <yuya@tcha.org>
parents: 38285
diff changeset
529 0 -7200
34535
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
530
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
531 $ hg log -R latesttag -l1 -T '{author.invalid}\n'
38243
06d11cd90516 templater: promote getmember() to an interface of wrapped types
Yuya Nishihara <yuya@tcha.org>
parents: 38229
diff changeset
532 hg: parse error: 'test' is not a dictionary
06d11cd90516 templater: promote getmember() to an interface of wrapped types
Yuya Nishihara <yuya@tcha.org>
parents: 38229
diff changeset
533 (keyword 'author' does not support member operation)
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
534 [10]
34535
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
535 $ hg log -R latesttag -l1 -T '{min("abc").invalid}\n'
38243
06d11cd90516 templater: promote getmember() to an interface of wrapped types
Yuya Nishihara <yuya@tcha.org>
parents: 38229
diff changeset
536 hg: parse error: 'a' is not a dictionary
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
537 [10]
34535
78590585c0db templater: add dot operator to easily access a sub item
Yuya Nishihara <yuya@tcha.org>
parents: 34534
diff changeset
538
25002
829faf8ab605 templater: tokenize decimal integer literal (issue4638) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24985
diff changeset
539 Test integer literal:
829faf8ab605 templater: tokenize decimal integer literal (issue4638) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24985
diff changeset
540
28548
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
541 $ hg debugtemplate -v '{(0)}\n'
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
542 (template
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
543 (group
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
544 (integer '0'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
545 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
546 * keywords:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
547 * functions:
25002
829faf8ab605 templater: tokenize decimal integer literal (issue4638) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24985
diff changeset
548 0
28548
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
549 $ hg debugtemplate -v '{(123)}\n'
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
550 (template
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
551 (group
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
552 (integer '123'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
553 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
554 * keywords:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
555 * functions:
25002
829faf8ab605 templater: tokenize decimal integer literal (issue4638) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24985
diff changeset
556 123
28548
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
557 $ hg debugtemplate -v '{(-4)}\n'
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
558 (template
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
559 (group
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
560 (negate
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
561 (integer '4')))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
562 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
563 * keywords:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
564 * functions:
25002
829faf8ab605 templater: tokenize decimal integer literal (issue4638) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24985
diff changeset
565 -4
28548
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
566 $ hg debugtemplate '{(-)}\n'
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
567 hg: parse error at 3: not a prefix: )
36669
80d7fb6c2dec templater: add hint to template parse errors to help locate issues
Ryan McElroy <rmcelroy@fb.com>
parents: 36635
diff changeset
568 ({(-)}\n
36691
1b179d151578 templater: fix position of terminator character in error message
Yuya Nishihara <yuya@tcha.org>
parents: 36669
diff changeset
569 ^ here)
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
570 [10]
28548
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
571 $ hg debugtemplate '{(-a)}\n'
30115
8e42dfde93d1 templater: provide arithmetic operations on integers
Simon Farnsworth <simonfar@fb.com>
parents: 30088
diff changeset
572 hg: parse error: negation needs an integer argument
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
573 [10]
25002
829faf8ab605 templater: tokenize decimal integer literal (issue4638) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24985
diff changeset
574
829faf8ab605 templater: tokenize decimal integer literal (issue4638) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24985
diff changeset
575 top-level integer literal is interpreted as symbol (i.e. variable name):
829faf8ab605 templater: tokenize decimal integer literal (issue4638) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24985
diff changeset
576
28548
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
577 $ hg debugtemplate -D 1=one -v '{1}\n'
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
578 (template
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
579 (integer '1')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
580 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
581 * keywords:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
582 * functions:
28548
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
583 one
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
584 $ hg debugtemplate -D 1=one -v '{if("t", "{1}")}\n'
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
585 (template
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
586 (func
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
587 (symbol 'if')
28548
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
588 (list
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
589 (string 't')
28548
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
590 (template
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
591 (integer '1'))))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
592 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
593 * keywords:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
594 * functions: if
28548
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
595 one
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
596 $ hg debugtemplate -D 1=one -v '{1|stringify}\n'
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
597 (template
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
598 (|
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
599 (integer '1')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
600 (symbol 'stringify'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
601 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
602 * keywords:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
603 * functions: stringify
28548
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
604 one
25002
829faf8ab605 templater: tokenize decimal integer literal (issue4638) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24985
diff changeset
605
829faf8ab605 templater: tokenize decimal integer literal (issue4638) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24985
diff changeset
606 unless explicit symbol is expected:
829faf8ab605 templater: tokenize decimal integer literal (issue4638) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24985
diff changeset
607
829faf8ab605 templater: tokenize decimal integer literal (issue4638) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24985
diff changeset
608 $ hg log -Ra -r0 -T '{desc|1}\n'
829faf8ab605 templater: tokenize decimal integer literal (issue4638) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24985
diff changeset
609 hg: parse error: expected a symbol, got 'integer'
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
610 [10]
25002
829faf8ab605 templater: tokenize decimal integer literal (issue4638) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24985
diff changeset
611 $ hg log -Ra -r0 -T '{1()}\n'
829faf8ab605 templater: tokenize decimal integer literal (issue4638) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24985
diff changeset
612 hg: parse error: expected a symbol, got 'integer'
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
613 [10]
25002
829faf8ab605 templater: tokenize decimal integer literal (issue4638) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24985
diff changeset
614
25596
c1975809a6b5 templater: take any string literals as template, but not for rawstring (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 25580
diff changeset
615 Test string literal:
c1975809a6b5 templater: take any string literals as template, but not for rawstring (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 25580
diff changeset
616
28548
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
617 $ hg debugtemplate -Ra -r0 -v '{"string with no template fragment"}\n'
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
618 (template
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
619 (string 'string with no template fragment')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
620 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
621 * keywords:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
622 * functions:
25596
c1975809a6b5 templater: take any string literals as template, but not for rawstring (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 25580
diff changeset
623 string with no template fragment
28548
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
624 $ hg debugtemplate -Ra -r0 -v '{"template: {rev}"}\n'
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
625 (template
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
626 (template
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
627 (string 'template: ')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
628 (symbol 'rev'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
629 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
630 * keywords: rev
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
631 * functions:
25596
c1975809a6b5 templater: take any string literals as template, but not for rawstring (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 25580
diff changeset
632 template: 0
28548
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
633 $ hg debugtemplate -Ra -r0 -v '{r"rawstring: {rev}"}\n'
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
634 (template
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
635 (string 'rawstring: {rev}')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
636 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
637 * keywords:
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
638 * functions:
25596
c1975809a6b5 templater: take any string literals as template, but not for rawstring (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 25580
diff changeset
639 rawstring: {rev}
28548
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
640 $ hg debugtemplate -Ra -r0 -v '{files % r"rawstring: {file}"}\n'
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
641 (template
b7a31068cc80 templater: add debugtemplate command
Yuya Nishihara <yuya@tcha.org>
parents: 28546
diff changeset
642 (%
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
643 (symbol 'files')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
644 (string 'rawstring: {file}'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
645 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
646 * keywords: files
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
647 * functions:
28546
1987ed32efca templater: relax type of mapped template
Yuya Nishihara <yuya@tcha.org>
parents: 28374
diff changeset
648 rawstring: {file}
25597
fd5bc660c9f0 templater: do not reevaluate rawstring as template (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 25596
diff changeset
649
20066
64b4f0cd7336 templater: fix escaping in nested string literals (issue4102)
Matt Mackall <mpm@selenic.com>
parents: 19770
diff changeset
650 Test string escaping:
64b4f0cd7336 templater: fix escaping in nested string literals (issue4102)
Matt Mackall <mpm@selenic.com>
parents: 19770
diff changeset
651
64b4f0cd7336 templater: fix escaping in nested string literals (issue4102)
Matt Mackall <mpm@selenic.com>
parents: 19770
diff changeset
652 $ hg log -R latesttag -r 0 --template '>\n<>\\n<{if(rev, "[>\n<>\\n<]")}>\n<>\\n<\n'
64b4f0cd7336 templater: fix escaping in nested string literals (issue4102)
Matt Mackall <mpm@selenic.com>
parents: 19770
diff changeset
653 >
64b4f0cd7336 templater: fix escaping in nested string literals (issue4102)
Matt Mackall <mpm@selenic.com>
parents: 19770
diff changeset
654 <>\n<[>
64b4f0cd7336 templater: fix escaping in nested string literals (issue4102)
Matt Mackall <mpm@selenic.com>
parents: 19770
diff changeset
655 <>\n<]>
64b4f0cd7336 templater: fix escaping in nested string literals (issue4102)
Matt Mackall <mpm@selenic.com>
parents: 19770
diff changeset
656 <>\n<
20067
3d8bfe2ecf6d templater: only recursively evaluate string literals as templates (issue4103)
Matt Mackall <mpm@selenic.com>
parents: 20066
diff changeset
657
24948
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
658 $ hg log -R latesttag -r 0 \
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
659 > --config ui.logtemplate='>\n<>\\n<{if(rev, "[>\n<>\\n<]")}>\n<>\\n<\n'
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
660 >
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
661 <>\n<[>
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
662 <>\n<]>
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
663 <>\n<
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
664
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
665 $ hg log -R latesttag -r 0 -T esc \
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
666 > --config templates.esc='>\n<>\\n<{if(rev, "[>\n<>\\n<]")}>\n<>\\n<\n'
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
667 >
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
668 <>\n<[>
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
669 <>\n<]>
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
670 <>\n<
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
671
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
672 $ cat <<'EOF' > esctmpl
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
673 > changeset = '>\n<>\\n<{if(rev, "[>\n<>\\n<]")}>\n<>\\n<\n'
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
674 > EOF
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
675 $ hg log -R latesttag -r 0 --style ./esctmpl
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
676 >
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
677 <>\n<[>
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
678 <>\n<]>
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
679 <>\n<
db7463aa080f templater: do not process \-escapes at parsestring() (issue4290)
Yuya Nishihara <yuya@tcha.org>
parents: 24903
diff changeset
680
25638
6047b60cdd09 templater: fix handling of \-escapes in raw string literals
Yuya Nishihara <yuya@tcha.org>
parents: 25637
diff changeset
681 Test string escaping of quotes:
6047b60cdd09 templater: fix handling of \-escapes in raw string literals
Yuya Nishihara <yuya@tcha.org>
parents: 25637
diff changeset
682
6047b60cdd09 templater: fix handling of \-escapes in raw string literals
Yuya Nishihara <yuya@tcha.org>
parents: 25637
diff changeset
683 $ hg log -Ra -r0 -T '{"\""}\n'
6047b60cdd09 templater: fix handling of \-escapes in raw string literals
Yuya Nishihara <yuya@tcha.org>
parents: 25637
diff changeset
684 "
6047b60cdd09 templater: fix handling of \-escapes in raw string literals
Yuya Nishihara <yuya@tcha.org>
parents: 25637
diff changeset
685 $ hg log -Ra -r0 -T '{"\\\""}\n'
6047b60cdd09 templater: fix handling of \-escapes in raw string literals
Yuya Nishihara <yuya@tcha.org>
parents: 25637
diff changeset
686 \"
6047b60cdd09 templater: fix handling of \-escapes in raw string literals
Yuya Nishihara <yuya@tcha.org>
parents: 25637
diff changeset
687 $ hg log -Ra -r0 -T '{r"\""}\n'
6047b60cdd09 templater: fix handling of \-escapes in raw string literals
Yuya Nishihara <yuya@tcha.org>
parents: 25637
diff changeset
688 \"
6047b60cdd09 templater: fix handling of \-escapes in raw string literals
Yuya Nishihara <yuya@tcha.org>
parents: 25637
diff changeset
689 $ hg log -Ra -r0 -T '{r"\\\""}\n'
6047b60cdd09 templater: fix handling of \-escapes in raw string literals
Yuya Nishihara <yuya@tcha.org>
parents: 25637
diff changeset
690 \\\"
6047b60cdd09 templater: fix handling of \-escapes in raw string literals
Yuya Nishihara <yuya@tcha.org>
parents: 25637
diff changeset
691
25695
ce3d4b858420 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 25676 25662
diff changeset
692
ce3d4b858420 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 25676 25662
diff changeset
693 $ hg log -Ra -r0 -T '{"\""}\n'
ce3d4b858420 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 25676 25662
diff changeset
694 "
ce3d4b858420 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 25676 25662
diff changeset
695 $ hg log -Ra -r0 -T '{"\\\""}\n'
ce3d4b858420 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 25676 25662
diff changeset
696 \"
ce3d4b858420 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 25676 25662
diff changeset
697 $ hg log -Ra -r0 -T '{r"\""}\n'
ce3d4b858420 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 25676 25662
diff changeset
698 \"
ce3d4b858420 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 25676 25662
diff changeset
699 $ hg log -Ra -r0 -T '{r"\\\""}\n'
ce3d4b858420 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 25676 25662
diff changeset
700 \\\"
ce3d4b858420 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 25676 25662
diff changeset
701
24966
554d6fcc3c84 templater: strip single backslash before quotation mark in quoted template
Yuya Nishihara <yuya@tcha.org>
parents: 24951
diff changeset
702 Test exception in quoted template. single backslash before quotation mark is
554d6fcc3c84 templater: strip single backslash before quotation mark in quoted template
Yuya Nishihara <yuya@tcha.org>
parents: 24951
diff changeset
703 stripped before parsing:
554d6fcc3c84 templater: strip single backslash before quotation mark in quoted template
Yuya Nishihara <yuya@tcha.org>
parents: 24951
diff changeset
704
554d6fcc3c84 templater: strip single backslash before quotation mark in quoted template
Yuya Nishihara <yuya@tcha.org>
parents: 24951
diff changeset
705 $ cat <<'EOF' > escquotetmpl
554d6fcc3c84 templater: strip single backslash before quotation mark in quoted template
Yuya Nishihara <yuya@tcha.org>
parents: 24951
diff changeset
706 > changeset = "\" \\" \\\" \\\\" {files % \"{file}\"}\n"
554d6fcc3c84 templater: strip single backslash before quotation mark in quoted template
Yuya Nishihara <yuya@tcha.org>
parents: 24951
diff changeset
707 > EOF
554d6fcc3c84 templater: strip single backslash before quotation mark in quoted template
Yuya Nishihara <yuya@tcha.org>
parents: 24951
diff changeset
708 $ cd latesttag
554d6fcc3c84 templater: strip single backslash before quotation mark in quoted template
Yuya Nishihara <yuya@tcha.org>
parents: 24951
diff changeset
709 $ hg log -r 2 --style ../escquotetmpl
554d6fcc3c84 templater: strip single backslash before quotation mark in quoted template
Yuya Nishihara <yuya@tcha.org>
parents: 24951
diff changeset
710 " \" \" \\" head1
554d6fcc3c84 templater: strip single backslash before quotation mark in quoted template
Yuya Nishihara <yuya@tcha.org>
parents: 24951
diff changeset
711
554d6fcc3c84 templater: strip single backslash before quotation mark in quoted template
Yuya Nishihara <yuya@tcha.org>
parents: 24951
diff changeset
712 $ hg log -r 2 -T esc --config templates.esc='"{\"valid\"}\n"'
554d6fcc3c84 templater: strip single backslash before quotation mark in quoted template
Yuya Nishihara <yuya@tcha.org>
parents: 24951
diff changeset
713 valid
554d6fcc3c84 templater: strip single backslash before quotation mark in quoted template
Yuya Nishihara <yuya@tcha.org>
parents: 24951
diff changeset
714 $ hg log -r 2 -T esc --config templates.esc="'"'{\'"'"'valid\'"'"'}\n'"'"
554d6fcc3c84 templater: strip single backslash before quotation mark in quoted template
Yuya Nishihara <yuya@tcha.org>
parents: 24951
diff changeset
715 valid
25695
ce3d4b858420 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 25676 25662
diff changeset
716
25676
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
717 Test compatibility with 2.9.2-3.4 of escaped quoted strings in nested
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
718 _evalifliteral() templates (issue4733):
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
719
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
720 $ hg log -r 2 -T '{if(rev, "\"{rev}")}\n'
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
721 "2
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
722 $ hg log -r 2 -T '{if(rev, "{if(rev, \"\\\"{rev}\")}")}\n'
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
723 "2
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
724 $ hg log -r 2 -T '{if(rev, "{if(rev, \"{if(rev, \\\"\\\\\\\"{rev}\\\")}\")}")}\n'
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
725 "2
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
726
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
727 $ hg log -r 2 -T '{if(rev, "\\\"")}\n'
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
728 \"
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
729 $ hg log -r 2 -T '{if(rev, "{if(rev, \"\\\\\\\"\")}")}\n'
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
730 \"
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
731 $ hg log -r 2 -T '{if(rev, "{if(rev, \"{if(rev, \\\"\\\\\\\\\\\\\\\"\\\")}\")}")}\n'
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
732 \"
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
733
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
734 $ hg log -r 2 -T '{if(rev, r"\\\"")}\n'
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
735 \\\"
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
736 $ hg log -r 2 -T '{if(rev, "{if(rev, r\"\\\\\\\"\")}")}\n'
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
737 \\\"
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
738 $ hg log -r 2 -T '{if(rev, "{if(rev, \"{if(rev, r\\\"\\\\\\\\\\\\\\\"\\\")}\")}")}\n'
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
739 \\\"
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
740
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
741 escaped single quotes and errors:
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
742
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
743 $ hg log -r 2 -T "{if(rev, '{if(rev, \'foo\')}')}"'\n'
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
744 foo
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
745 $ hg log -r 2 -T "{if(rev, '{if(rev, r\'foo\')}')}"'\n'
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
746 foo
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
747 $ hg log -r 2 -T '{if(rev, "{if(rev, \")}")}\n'
25783
1f6878c87c25 templater: introduce one-pass parsing of nested template strings
Yuya Nishihara <yuya@tcha.org>
parents: 25782
diff changeset
748 hg: parse error at 21: unterminated string
36669
80d7fb6c2dec templater: add hint to template parse errors to help locate issues
Ryan McElroy <rmcelroy@fb.com>
parents: 36635
diff changeset
749 ({if(rev, "{if(rev, \")}")}\n
36691
1b179d151578 templater: fix position of terminator character in error message
Yuya Nishihara <yuya@tcha.org>
parents: 36669
diff changeset
750 ^ here)
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
751 [10]
25676
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
752 $ hg log -r 2 -T '{if(rev, \"\\"")}\n'
26215
72aad184f061 templater: create string unescape helper (issue4798)
Matt Mackall <mpm@selenic.com>
parents: 26188
diff changeset
753 hg: parse error: trailing \ in string
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
754 [10]
25676
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
755 $ hg log -r 2 -T '{if(rev, r\"\\"")}\n'
26215
72aad184f061 templater: create string unescape helper (issue4798)
Matt Mackall <mpm@selenic.com>
parents: 26188
diff changeset
756 hg: parse error: trailing \ in string
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
757 [10]
25676
ec9c258e666d templater: parse \"...\" as string for 2.9.2-3.4 compatibility (issue4733)
Yuya Nishihara <yuya@tcha.org>
parents: 25638
diff changeset
758
24966
554d6fcc3c84 templater: strip single backslash before quotation mark in quoted template
Yuya Nishihara <yuya@tcha.org>
parents: 24951
diff changeset
759 $ cd ..
554d6fcc3c84 templater: strip single backslash before quotation mark in quoted template
Yuya Nishihara <yuya@tcha.org>
parents: 24951
diff changeset
760
24949
890845af1ac2 templater: strictly parse leading backslashes of '{' (issue4569) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24948
diff changeset
761 Test leading backslashes:
890845af1ac2 templater: strictly parse leading backslashes of '{' (issue4569) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24948
diff changeset
762
890845af1ac2 templater: strictly parse leading backslashes of '{' (issue4569) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24948
diff changeset
763 $ cd latesttag
25597
fd5bc660c9f0 templater: do not reevaluate rawstring as template (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 25596
diff changeset
764 $ hg log -r 2 -T '\{rev} {files % "\{file}"}\n'
fd5bc660c9f0 templater: do not reevaluate rawstring as template (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 25596
diff changeset
765 {rev} {file}
fd5bc660c9f0 templater: do not reevaluate rawstring as template (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 25596
diff changeset
766 $ hg log -r 2 -T '\\{rev} {files % "\\{file}"}\n'
fd5bc660c9f0 templater: do not reevaluate rawstring as template (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 25596
diff changeset
767 \2 \head1
fd5bc660c9f0 templater: do not reevaluate rawstring as template (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 25596
diff changeset
768 $ hg log -r 2 -T '\\\{rev} {files % "\\\{file}"}\n'
fd5bc660c9f0 templater: do not reevaluate rawstring as template (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 25596
diff changeset
769 \{rev} \{file}
24949
890845af1ac2 templater: strictly parse leading backslashes of '{' (issue4569) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24948
diff changeset
770 $ cd ..
890845af1ac2 templater: strictly parse leading backslashes of '{' (issue4569) (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 24948
diff changeset
771
25471
7298da81f5a9 templater: do not preprocess template string in "if" expression (issue4714)
Yuya Nishihara <yuya@tcha.org>
parents: 24949
diff changeset
772 Test leading backslashes in "if" expression (issue4714):
7298da81f5a9 templater: do not preprocess template string in "if" expression (issue4714)
Yuya Nishihara <yuya@tcha.org>
parents: 24949
diff changeset
773
7298da81f5a9 templater: do not preprocess template string in "if" expression (issue4714)
Yuya Nishihara <yuya@tcha.org>
parents: 24949
diff changeset
774 $ cd latesttag
7298da81f5a9 templater: do not preprocess template string in "if" expression (issue4714)
Yuya Nishihara <yuya@tcha.org>
parents: 24949
diff changeset
775 $ hg log -r 2 -T '{if("1", "\{rev}")} {if("1", r"\{rev}")}\n'
25597
fd5bc660c9f0 templater: do not reevaluate rawstring as template (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 25596
diff changeset
776 {rev} \{rev}
25471
7298da81f5a9 templater: do not preprocess template string in "if" expression (issue4714)
Yuya Nishihara <yuya@tcha.org>
parents: 24949
diff changeset
777 $ hg log -r 2 -T '{if("1", "\\{rev}")} {if("1", r"\\{rev}")}\n'
25597
fd5bc660c9f0 templater: do not reevaluate rawstring as template (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 25596
diff changeset
778 \2 \\{rev}
25471
7298da81f5a9 templater: do not preprocess template string in "if" expression (issue4714)
Yuya Nishihara <yuya@tcha.org>
parents: 24949
diff changeset
779 $ hg log -r 2 -T '{if("1", "\\\{rev}")} {if("1", r"\\\{rev}")}\n'
25597
fd5bc660c9f0 templater: do not reevaluate rawstring as template (BC)
Yuya Nishihara <yuya@tcha.org>
parents: 25596
diff changeset
780 \{rev} \\\{rev}
25471
7298da81f5a9 templater: do not preprocess template string in "if" expression (issue4714)
Yuya Nishihara <yuya@tcha.org>
parents: 24949
diff changeset
781 $ cd ..
7298da81f5a9 templater: do not preprocess template string in "if" expression (issue4714)
Yuya Nishihara <yuya@tcha.org>
parents: 24949
diff changeset
782
20663
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
783 "string-escape"-ed "\x5c\x786e" becomes r"\x6e" (once) or r"n" (twice)
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
784
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
785 $ hg log -R a -r 0 --template '{if("1", "\x5c\x786e", "NG")}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
786 \x6e
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
787 $ hg log -R a -r 0 --template '{if("1", r"\x5c\x786e", "NG")}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
788 \x5c\x786e
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
789 $ hg log -R a -r 0 --template '{if("", "NG", "\x5c\x786e")}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
790 \x6e
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
791 $ hg log -R a -r 0 --template '{if("", "NG", r"\x5c\x786e")}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
792 \x5c\x786e
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
793
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
794 $ hg log -R a -r 2 --template '{ifeq("no perso\x6e", desc, "\x5c\x786e", "NG")}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
795 \x6e
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
796 $ hg log -R a -r 2 --template '{ifeq(r"no perso\x6e", desc, "NG", r"\x5c\x786e")}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
797 \x5c\x786e
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
798 $ hg log -R a -r 2 --template '{ifeq(desc, "no perso\x6e", "\x5c\x786e", "NG")}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
799 \x6e
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
800 $ hg log -R a -r 2 --template '{ifeq(desc, r"no perso\x6e", "NG", r"\x5c\x786e")}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
801 \x5c\x786e
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
802
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
803 $ hg log -R a -r 8 --template '{join(files, "\n")}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
804 fourth
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
805 second
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
806 third
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
807 $ hg log -R a -r 8 --template '{join(files, r"\n")}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
808 fourth\nsecond\nthird
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
809
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
810 $ hg log -R a -r 2 --template '{rstdoc("1st\n\n2nd", "htm\x6c")}'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
811 <p>
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
812 1st
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
813 </p>
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
814 <p>
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
815 2nd
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
816 </p>
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
817 $ hg log -R a -r 2 --template '{rstdoc(r"1st\n\n2nd", "html")}'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
818 <p>
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
819 1st\n\n2nd
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
820 </p>
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
821 $ hg log -R a -r 2 --template '{rstdoc("1st\n\n2nd", r"htm\x6c")}'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
822 1st
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
823
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
824 2nd
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
825
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
826 $ hg log -R a -r 2 --template '{strip(desc, "\x6e")}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
827 o perso
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
828 $ hg log -R a -r 2 --template '{strip(desc, r"\x6e")}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
829 no person
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
830 $ hg log -R a -r 2 --template '{strip("no perso\x6e", "\x6e")}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
831 o perso
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
832 $ hg log -R a -r 2 --template '{strip(r"no perso\x6e", r"\x6e")}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
833 no perso
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
834
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
835 $ hg log -R a -r 2 --template '{sub("\\x6e", "\x2d", desc)}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
836 -o perso-
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
837 $ hg log -R a -r 2 --template '{sub(r"\\x6e", "-", desc)}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
838 no person
38476
b4cfd803b3f2 tests: fix up some lax escaping in test-template-basic.t
Augie Fackler <augie@google.com>
parents: 38437
diff changeset
839 $ hg log -R a -r 2 --template '{sub("n", r"\\x2d", desc)}\n'
20663
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
840 \x2do perso\x2d
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
841 $ hg log -R a -r 2 --template '{sub("n", "\x2d", "no perso\x6e")}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
842 -o perso-
38476
b4cfd803b3f2 tests: fix up some lax escaping in test-template-basic.t
Augie Fackler <augie@google.com>
parents: 38437
diff changeset
843 $ hg log -R a -r 2 --template '{sub("n", r"\\x2d", r"no perso\x6e")}\n'
20663
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
844 \x2do perso\x6e
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
845
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
846 $ hg log -R a -r 8 --template '{files % "{file}\n"}'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
847 fourth
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
848 second
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
849 third
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
850
21024
7731a2281cf0 spelling: fixes from spell checker
Mads Kiilerich <madski@unity3d.com>
parents: 20860
diff changeset
851 Test string escaping in nested expression:
20663
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
852
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
853 $ hg log -R a -r 8 --template '{ifeq(r"\x6e", if("1", "\x5c\x786e"), join(files, "\x5c\x786e"))}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
854 fourth\x6esecond\x6ethird
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
855 $ hg log -R a -r 8 --template '{ifeq(if("1", r"\x6e"), "\x5c\x786e", join(files, "\x5c\x786e"))}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
856 fourth\x6esecond\x6ethird
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
857
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
858 $ hg log -R a -r 8 --template '{join(files, ifeq(branch, "default", "\x5c\x786e"))}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
859 fourth\x6esecond\x6ethird
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
860 $ hg log -R a -r 8 --template '{join(files, ifeq(branch, "default", r"\x5c\x786e"))}\n'
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
861 fourth\x5c\x786esecond\x5c\x786ethird
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
862
40942
e48fdeb08c77 py3: fix bad escapes of sub() replacement pattern in test-template-basic.t
Yuya Nishihara <yuya@tcha.org>
parents: 40618
diff changeset
863 $ hg log -R a -r 3:4 --template '{rev}:{sub(if("1", "\x6e"), ifeq(branch, "foo", r"\\x5c\\x786e", "\x5c\x5c\x786e"), desc)}\n'
20663
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
864 3:\x6eo user, \x6eo domai\x6e
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
865 4:\x5c\x786eew bra\x5c\x786ech
5ab28a2e9962 templater: make strings in template expressions be "string-escape"-ed correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20662
diff changeset
866
25783
1f6878c87c25 templater: introduce one-pass parsing of nested template strings
Yuya Nishihara <yuya@tcha.org>
parents: 25782
diff changeset
867 Test quotes in nested expression are evaluated just like a $(command)
1f6878c87c25 templater: introduce one-pass parsing of nested template strings
Yuya Nishihara <yuya@tcha.org>
parents: 25782
diff changeset
868 substitution in POSIX shells:
1f6878c87c25 templater: introduce one-pass parsing of nested template strings
Yuya Nishihara <yuya@tcha.org>
parents: 25782
diff changeset
869
1f6878c87c25 templater: introduce one-pass parsing of nested template strings
Yuya Nishihara <yuya@tcha.org>
parents: 25782
diff changeset
870 $ hg log -R a -r 8 -T '{"{"{rev}:{node|short}"}"}\n'
1f6878c87c25 templater: introduce one-pass parsing of nested template strings
Yuya Nishihara <yuya@tcha.org>
parents: 25782
diff changeset
871 8:95c24699272e
1f6878c87c25 templater: introduce one-pass parsing of nested template strings
Yuya Nishihara <yuya@tcha.org>
parents: 25782
diff changeset
872 $ hg log -R a -r 8 -T '{"{"\{{rev}} \"{node|short}\""}"}\n'
1f6878c87c25 templater: introduce one-pass parsing of nested template strings
Yuya Nishihara <yuya@tcha.org>
parents: 25782
diff changeset
873 {8} "95c24699272e"
1f6878c87c25 templater: introduce one-pass parsing of nested template strings
Yuya Nishihara <yuya@tcha.org>
parents: 25782
diff changeset
874
20067
3d8bfe2ecf6d templater: only recursively evaluate string literals as templates (issue4103)
Matt Mackall <mpm@selenic.com>
parents: 20066
diff changeset
875 Test recursive evaluation:
3d8bfe2ecf6d templater: only recursively evaluate string literals as templates (issue4103)
Matt Mackall <mpm@selenic.com>
parents: 20066
diff changeset
876
3d8bfe2ecf6d templater: only recursively evaluate string literals as templates (issue4103)
Matt Mackall <mpm@selenic.com>
parents: 20066
diff changeset
877 $ hg init r
3d8bfe2ecf6d templater: only recursively evaluate string literals as templates (issue4103)
Matt Mackall <mpm@selenic.com>
parents: 20066
diff changeset
878 $ cd r
3d8bfe2ecf6d templater: only recursively evaluate string literals as templates (issue4103)
Matt Mackall <mpm@selenic.com>
parents: 20066
diff changeset
879 $ echo a > a
3d8bfe2ecf6d templater: only recursively evaluate string literals as templates (issue4103)
Matt Mackall <mpm@selenic.com>
parents: 20066
diff changeset
880 $ hg ci -Am '{rev}'
3d8bfe2ecf6d templater: only recursively evaluate string literals as templates (issue4103)
Matt Mackall <mpm@selenic.com>
parents: 20066
diff changeset
881 adding a
3d8bfe2ecf6d templater: only recursively evaluate string literals as templates (issue4103)
Matt Mackall <mpm@selenic.com>
parents: 20066
diff changeset
882 $ hg log -r 0 --template '{if(rev, desc)}\n'
3d8bfe2ecf6d templater: only recursively evaluate string literals as templates (issue4103)
Matt Mackall <mpm@selenic.com>
parents: 20066
diff changeset
883 {rev}
3d8bfe2ecf6d templater: only recursively evaluate string literals as templates (issue4103)
Matt Mackall <mpm@selenic.com>
parents: 20066
diff changeset
884 $ hg log -r 0 --template '{if(rev, "{author} {rev}")}\n'
3d8bfe2ecf6d templater: only recursively evaluate string literals as templates (issue4103)
Matt Mackall <mpm@selenic.com>
parents: 20066
diff changeset
885 test 0
20076
faa4b3fc4197 templater: makes branches work correctly with stringify (issue4108)
Matt Mackall <mpm@selenic.com>
parents: 20067
diff changeset
886
20661
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
887 $ hg branch -q 'text.{rev}'
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
888 $ echo aa >> aa
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
889 $ hg ci -u '{node|short}' -m 'desc to be wrapped desc to be wrapped'
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
890
20670
0084fcd5d7e2 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 20668 20663
diff changeset
891 $ hg log -l1 --template '{fill(desc, "20", author, branch)}'
20661
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
892 {node|short}desc to
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
893 text.{rev}be wrapped
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
894 text.{rev}desc to be
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
895 text.{rev}wrapped (no-eol)
20670
0084fcd5d7e2 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 20668 20663
diff changeset
896 $ hg log -l1 --template '{fill(desc, "20", "{node|short}:", "text.{rev}:")}'
20661
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
897 bcc7ff960b8e:desc to
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
898 text.1:be wrapped
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
899 text.1:desc to be
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
900 text.1:wrapped (no-eol)
28344
ac371d4c007f templater: drop redundant type conversion when evaluating integer argument
Yuya Nishihara <yuya@tcha.org>
parents: 28333
diff changeset
901 $ hg log -l1 -T '{fill(desc, date, "", "")}\n'
ac371d4c007f templater: drop redundant type conversion when evaluating integer argument
Yuya Nishihara <yuya@tcha.org>
parents: 28333
diff changeset
902 hg: parse error: fill expects an integer width
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
903 [10]
20661
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
904
20670
0084fcd5d7e2 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 20668 20663
diff changeset
905 $ hg log -l 1 --template '{sub(r"[0-9]", "-", author)}'
20661
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
906 {node|short} (no-eol)
20670
0084fcd5d7e2 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 20668 20663
diff changeset
907 $ hg log -l 1 --template '{sub(r"[0-9]", "-", "{node|short}")}'
20661
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
908 bcc-ff---b-e (no-eol)
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
909
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
910 $ cat >> .hg/hgrc <<EOF
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
911 > [extensions]
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
912 > color=
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
913 > [color]
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
914 > mode=ansi
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
915 > text.{rev} = red
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
916 > text.1 = green
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
917 > EOF
20670
0084fcd5d7e2 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 20668 20663
diff changeset
918 $ hg log --color=always -l 1 --template '{label(branch, "text\n")}'
20661
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
919 \x1b[0;31mtext\x1b[0m (esc)
20670
0084fcd5d7e2 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 20668 20663
diff changeset
920 $ hg log --color=always -l 1 --template '{label("text.{rev}", "text\n")}'
20661
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
921 \x1b[0;32mtext\x1b[0m (esc)
7e627fe63e5e templater: avoid recursive evaluation of string literals completely
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20079
diff changeset
922
20670
0084fcd5d7e2 merge with stable
Matt Mackall <mpm@selenic.com>
parents: 20668 20663
diff changeset
923 $ cd ..
21822
028a48105191 templater: add symbol to error
Ryan McElroy <rmcelroy@fb.com>
parents: 21821
diff changeset
924
028a48105191 templater: add symbol to error
Ryan McElroy <rmcelroy@fb.com>
parents: 21821
diff changeset
925 Test bad template with better error message
028a48105191 templater: add symbol to error
Ryan McElroy <rmcelroy@fb.com>
parents: 21821
diff changeset
926
028a48105191 templater: add symbol to error
Ryan McElroy <rmcelroy@fb.com>
parents: 21821
diff changeset
927 $ hg log -Gv -R a --template '{desc|user()}'
028a48105191 templater: add symbol to error
Ryan McElroy <rmcelroy@fb.com>
parents: 21821
diff changeset
928 hg: parse error: expected a symbol, got 'func'
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
929 [10]
21846
8f23f8096606 templater: introduce word function
Ryan McElroy <rmcelroy@fb.com>
parents: 21822
diff changeset
930
26215
72aad184f061 templater: create string unescape helper (issue4798)
Matt Mackall <mpm@selenic.com>
parents: 26188
diff changeset
931 Test broken string escapes:
72aad184f061 templater: create string unescape helper (issue4798)
Matt Mackall <mpm@selenic.com>
parents: 26188
diff changeset
932
72aad184f061 templater: create string unescape helper (issue4798)
Matt Mackall <mpm@selenic.com>
parents: 26188
diff changeset
933 $ hg log -T "bogus\\" -R a
72aad184f061 templater: create string unescape helper (issue4798)
Matt Mackall <mpm@selenic.com>
parents: 26188
diff changeset
934 hg: parse error: trailing \ in string
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
935 [10]
26215
72aad184f061 templater: create string unescape helper (issue4798)
Matt Mackall <mpm@selenic.com>
parents: 26188
diff changeset
936 $ hg log -T "\\xy" -R a
36635
e80f8a134731 test-command-template: glob out detailed "invalid escape" message
Yuya Nishihara <yuya@tcha.org>
parents: 36548
diff changeset
937 hg: parse error: invalid \x escape* (glob)
45895
fc4fb2f17dd4 errors: use exit code 10 for parse errors
Martin von Zweigbergk <martinvonz@google.com>
parents: 40942
diff changeset
938 [10]
26856
baa77652be68 templatefilters: try round-trip utf-8 conversion by json filter (issue4933)
Yuya Nishihara <yuya@tcha.org>
parents: 26504
diff changeset
939
28912
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
940 Templater supports aliases of symbol and func() styles:
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
941
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
942 $ hg clone -q a aliases
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
943 $ cd aliases
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
944 $ cat <<EOF >> .hg/hgrc
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
945 > [templatealias]
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
946 > r = rev
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
947 > rn = "{r}:{node|short}"
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
948 > status(c, files) = files % "{c} {file}\n"
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
949 > utcdate(d) = localdate(d, "UTC")
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
950 > EOF
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
951
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
952 $ hg debugtemplate -vr0 '{rn} {utcdate(date)|isodate}\n'
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
953 (template
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
954 (symbol 'rn')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
955 (string ' ')
28912
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
956 (|
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
957 (func
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
958 (symbol 'utcdate')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
959 (symbol 'date'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
960 (symbol 'isodate'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
961 (string '\n'))
28912
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
962 * expanded:
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
963 (template
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
964 (template
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
965 (symbol 'rev')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
966 (string ':')
28912
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
967 (|
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
968 (symbol 'node')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
969 (symbol 'short')))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
970 (string ' ')
28912
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
971 (|
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
972 (func
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
973 (symbol 'localdate')
28912
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
974 (list
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
975 (symbol 'date')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
976 (string 'UTC')))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
977 (symbol 'isodate'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
978 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
979 * keywords: date, node, rev
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
980 * functions: isodate, localdate, short
28957
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
981 0:1e4e1b8f71e0 1970-01-12 13:46 +0000
28912
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
982
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
983 $ hg debugtemplate -vr0 '{status("A", file_adds)}'
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
984 (template
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
985 (func
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
986 (symbol 'status')
28912
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
987 (list
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
988 (string 'A')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
989 (symbol 'file_adds'))))
28912
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
990 * expanded:
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
991 (template
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
992 (%
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
993 (symbol 'file_adds')
28912
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
994 (template
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
995 (string 'A')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
996 (string ' ')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
997 (symbol 'file')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
998 (string '\n'))))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
999 * keywords: file, file_adds
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
1000 * functions:
28957
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1001 A a
28912
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1002
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1003 A unary function alias can be called as a filter:
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1004
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1005 $ hg debugtemplate -vr0 '{date|utcdate|isodate}\n'
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1006 (template
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1007 (|
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1008 (|
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
1009 (symbol 'date')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
1010 (symbol 'utcdate'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
1011 (symbol 'isodate'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
1012 (string '\n'))
28912
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1013 * expanded:
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1014 (template
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1015 (|
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1016 (func
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
1017 (symbol 'localdate')
28912
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1018 (list
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
1019 (symbol 'date')
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
1020 (string 'UTC')))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
1021 (symbol 'isodate'))
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
1022 (string '\n'))
38355
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
1023 * keywords: date
d4fae9a0ab1f templater: add function to look up symbols used in template
Yuya Nishihara <yuya@tcha.org>
parents: 38299
diff changeset
1024 * functions: isodate, localdate
28957
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1025 1970-01-12 13:46 +0000
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1026
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1027 Aliases should be applied only to command arguments and templates in hgrc.
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1028 Otherwise, our stock styles and web templates could be corrupted:
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1029
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1030 $ hg log -r0 -T '{rn} {utcdate(date)|isodate}\n'
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1031 0:1e4e1b8f71e0 1970-01-12 13:46 +0000
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1032
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1033 $ hg log -r0 --config ui.logtemplate='"{rn} {utcdate(date)|isodate}\n"'
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1034 0:1e4e1b8f71e0 1970-01-12 13:46 +0000
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1035
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1036 $ cat <<EOF > tmpl
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1037 > changeset = 'nothing expanded:{rn}\n'
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1038 > EOF
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1039 $ hg log -r0 --style ./tmpl
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1040 nothing expanded:
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1041
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1042 Aliases in formatter:
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1043
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1044 $ hg branches -T '{pad(branch, 7)} {rn}\n'
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1045 default 6:d41e714fe50d
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1046 foo 4:bbe44766e73d
28912
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1047
28958
77e566fe31ec ui: drop template aliases by HGPLAIN
Yuya Nishihara <yuya@tcha.org>
parents: 28957
diff changeset
1048 Aliases should honor HGPLAIN:
77e566fe31ec ui: drop template aliases by HGPLAIN
Yuya Nishihara <yuya@tcha.org>
parents: 28957
diff changeset
1049
77e566fe31ec ui: drop template aliases by HGPLAIN
Yuya Nishihara <yuya@tcha.org>
parents: 28957
diff changeset
1050 $ HGPLAIN= hg log -r0 -T 'nothing expanded:{rn}\n'
77e566fe31ec ui: drop template aliases by HGPLAIN
Yuya Nishihara <yuya@tcha.org>
parents: 28957
diff changeset
1051 nothing expanded:
77e566fe31ec ui: drop template aliases by HGPLAIN
Yuya Nishihara <yuya@tcha.org>
parents: 28957
diff changeset
1052 $ HGPLAINEXCEPT=templatealias hg log -r0 -T '{rn}\n'
77e566fe31ec ui: drop template aliases by HGPLAIN
Yuya Nishihara <yuya@tcha.org>
parents: 28957
diff changeset
1053 0:1e4e1b8f71e0
77e566fe31ec ui: drop template aliases by HGPLAIN
Yuya Nishihara <yuya@tcha.org>
parents: 28957
diff changeset
1054
28912
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1055 Unparsable alias:
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1056
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1057 $ hg debugtemplate --config templatealias.bad='x(' -v '{bad}'
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1058 (template
34073
7bbc4e113e5f parser: stabilize output of prettyformat() by using byte-safe repr()
Yuya Nishihara <yuya@tcha.org>
parents: 33950
diff changeset
1059 (symbol 'bad'))
29059
8eba4cdcfd81 parser: shorten prefix of alias parsing errors
Yuya Nishihara <yuya@tcha.org>
parents: 28958
diff changeset
1060 abort: bad definition of template alias "bad": at 2: not a prefix: end
28912
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1061 [255]
28957
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1062 $ hg log --config templatealias.bad='x(' -T '{bad}'
29059
8eba4cdcfd81 parser: shorten prefix of alias parsing errors
Yuya Nishihara <yuya@tcha.org>
parents: 28958
diff changeset
1063 abort: bad definition of template alias "bad": at 2: not a prefix: end
28957
d813132ea361 templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents: 28912
diff changeset
1064 [255]
28912
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1065
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1066 $ cd ..
867d6ba2353d templater: add parsing and expansion rules to process "templatealias" section
Yuya Nishihara <yuya@tcha.org>
parents: 28695
diff changeset
1067
28695
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1068 Test that template function in extension is registered as expected
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1069
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1070 $ cd a
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1071
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1072 $ cat <<EOF > $TESTTMP/customfunc.py
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1073 > from mercurial import registrar
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1074 >
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1075 > templatefunc = registrar.templatefunc()
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1076 >
36548
086fc71fbb09 py3: mark all string literals in test-command-template.t as bytes
Yuya Nishihara <yuya@tcha.org>
parents: 36542
diff changeset
1077 > @templatefunc(b'custom()')
28695
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1078 > def custom(context, mapping, args):
36548
086fc71fbb09 py3: mark all string literals in test-command-template.t as bytes
Yuya Nishihara <yuya@tcha.org>
parents: 36542
diff changeset
1079 > return b'custom'
28695
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1080 > EOF
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1081 $ cat <<EOF > .hg/hgrc
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1082 > [extensions]
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1083 > customfunc = $TESTTMP/customfunc.py
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1084 > EOF
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1085
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1086 $ hg log -r . -T "{custom()}\n" --config customfunc.enabled=true
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1087 custom
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1088
cc103bd0dbf9 registrar: add templatefunc to mark a function as template function (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 28687
diff changeset
1089 $ cd ..