Mercurial > hg
annotate tests/test-template-engine.t @ 29494:3b5389ef5cfe
perf: define util.safehasattr forcibly for Mercurial earlier than 1.9.3
Before this patch, using util.safehasattr() prevents perf.py from
being loaded by Mercurial earlier than 1.9.3 (or 94b200a11cf7),
because util.safehasattr() isn't available in such Mercurial, even
though there are some code paths for Mercurial earlier than 1.9.3.
For example, setting "_prereadsize" attribute in perfindex() and
perfnodelookup() is effective only with Mercurial earlier than 1.8 (or
61c9bc3da402).
This patch is a preparation for using util.safehasattr() safely in
subsequent patches.
This patch defines util.safehasattr() forcibly without examining
whether it is available or not, because:
- examining existence of "safehasattr" safely itself needs similar logic
- safehasattr() is small enough to define locally
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Tue, 05 Jul 2016 07:25:51 +0900 |
parents | d813132ea361 |
children | 511d6ae462f3 |
rev | line source |
---|---|
8361
d8c5a7f25a40
templater: make the templating engine pluggable to some extent
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
diff
changeset
|
1 |
12493
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
2 $ cat > engine.py << EOF |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
3 > |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
4 > from mercurial import templater |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
5 > |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
6 > class mytemplater(object): |
28957
d813132ea361
templater: load and expand aliases by template engine (API) (issue4842)
Yuya Nishihara <yuya@tcha.org>
parents:
28831
diff
changeset
|
7 > def __init__(self, loader, filters, defaults, aliases): |
12493
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
8 > self.loader = loader |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
9 > |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
10 > def process(self, t, map): |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
11 > tmpl = self.loader(t) |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
12 > for k, v in map.iteritems(): |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
13 > if k in ('templ', 'ctx', 'repo', 'revcache', 'cache'): |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
14 > continue |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
15 > if hasattr(v, '__call__'): |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
16 > v = v(**map) |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
17 > v = templater.stringify(v) |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
18 > tmpl = tmpl.replace('{{%s}}' % k, v) |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
19 > yield tmpl |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
20 > |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
21 > templater.engines['my'] = mytemplater |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
22 > EOF |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
23 $ hg init test |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
24 $ echo '[extensions]' > test/.hg/hgrc |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
25 $ echo "engine = `pwd`/engine.py" >> test/.hg/hgrc |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
26 $ cd test |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
27 $ cat > mymap << EOF |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
28 > changeset = my:changeset.txt |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
29 > EOF |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
30 $ cat > changeset.txt << EOF |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
31 > {{rev}} {{node}} {{author}} |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
32 > EOF |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
33 $ hg ci -Ama |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
34 adding changeset.txt |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
35 adding mymap |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
36 $ hg log --style=./mymap |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
37 0 97e5f848f0936960273bbf75be6388cd0350a32b test |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
12493
diff
changeset
|
38 |
17355
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
16913
diff
changeset
|
39 $ cat > changeset.txt << EOF |
17358
2917f82f6040
templatekw: merge, preferring the second implementation
Bryan O'Sullivan <bryano@fb.com>
parents:
17355
diff
changeset
|
40 > {{p1rev}} {{p1node}} {{p2rev}} {{p2node}} |
17355
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
16913
diff
changeset
|
41 > EOF |
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
16913
diff
changeset
|
42 $ hg ci -Ama |
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
16913
diff
changeset
|
43 $ hg log --style=./mymap |
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
16913
diff
changeset
|
44 0 97e5f848f0936960273bbf75be6388cd0350a32b -1 0000000000000000000000000000000000000000 |
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
16913
diff
changeset
|
45 -1 0000000000000000000000000000000000000000 -1 0000000000000000000000000000000000000000 |
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
16913
diff
changeset
|
46 |
28831
6b86ce3e3576
templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents:
28213
diff
changeset
|
47 invalid engine type: |
6b86ce3e3576
templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents:
28213
diff
changeset
|
48 |
6b86ce3e3576
templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents:
28213
diff
changeset
|
49 $ echo 'changeset = unknown:changeset.txt' > unknownenginemap |
6b86ce3e3576
templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents:
28213
diff
changeset
|
50 $ hg log --style=./unknownenginemap |
6b86ce3e3576
templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents:
28213
diff
changeset
|
51 abort: invalid template engine: unknown |
6b86ce3e3576
templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents:
28213
diff
changeset
|
52 [255] |
6b86ce3e3576
templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents:
28213
diff
changeset
|
53 |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
12493
diff
changeset
|
54 $ cd .. |