Mercurial > hg
annotate tests/test-template-engine.t @ 38178:3790efb388ca stable
lfs: bypass wrapped functions when reposetup() hasn't been called (issue5902)
There are only a handful of methods that access repo attributes that are applied
in reposetup(). The `diff` test covers all of the commands that call
scmutil.prefetchfiles(). Along the way, I saw that adding files and upgrading
the repo format were also problems (also tested here).
I don't think running `hg serve` through the commandserver is sane, but I
conditionalized both the capabilities and the wsgirequest handler because it's
trivially correct. It doesn't look like there has ever been a caller of
candownload(), so there's no test for that path.
The upload case isn't testable, because uploadblobs() bails if there are no
pointers. The requirement should be added any time pointers are introduced, and
that would force the extension to be loaded specifically for the repo. This
covers `debuglfsupload`, the pre-push hook (which isn't set until the repo is
promoted to LFS), and uploadblobsfromrevs(), which can be called by other
extensions.
I think readfromstore() and writetostore() are only reachable as a flag
processor for revlog.REVIDX_EXTSTORED, and a requirement is added as soon as
that is seen, so I don't think those are a problem.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 31 May 2018 09:19:09 -0400 |
parents | 7d3bc1d4e871 |
children |
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 > |
36920
6ff6e1d6b5b8
templater: move stringify() to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36445
diff
changeset
|
4 > from mercurial import ( |
36970
e55d80804ace
py3: make test-template-engine.t bytes-safe
Yuya Nishihara <yuya@tcha.org>
parents:
36969
diff
changeset
|
5 > pycompat, |
36920
6ff6e1d6b5b8
templater: move stringify() to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36445
diff
changeset
|
6 > templater, |
6ff6e1d6b5b8
templater: move stringify() to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36445
diff
changeset
|
7 > templateutil, |
6ff6e1d6b5b8
templater: move stringify() to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents:
36445
diff
changeset
|
8 > ) |
12493
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
9 > |
36969
452696bf3e60
test-template-engine: deduplicate methods of custom template engine
Yuya Nishihara <yuya@tcha.org>
parents:
36920
diff
changeset
|
10 > class mytemplater(templater.engine): |
452696bf3e60
test-template-engine: deduplicate methods of custom template engine
Yuya Nishihara <yuya@tcha.org>
parents:
36920
diff
changeset
|
11 > def _load(self, t): |
452696bf3e60
test-template-engine: deduplicate methods of custom template engine
Yuya Nishihara <yuya@tcha.org>
parents:
36920
diff
changeset
|
12 > return self._loader(t) |
36445
e8d37838f5df
templatekw: add 'requires' flag to switch to exception-safe interface
Yuya Nishihara <yuya@tcha.org>
parents:
36327
diff
changeset
|
13 > |
12493
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
14 > def process(self, t, map): |
36969
452696bf3e60
test-template-engine: deduplicate methods of custom template engine
Yuya Nishihara <yuya@tcha.org>
parents:
36920
diff
changeset
|
15 > tmpl = self._load(t) |
35483
817a3d20dd01
templater: register keywords to defaults table
Yuya Nishihara <yuya@tcha.org>
parents:
35468
diff
changeset
|
16 > props = self._defaults.copy() |
817a3d20dd01
templater: register keywords to defaults table
Yuya Nishihara <yuya@tcha.org>
parents:
35468
diff
changeset
|
17 > props.update(map) |
36327
58c1368ab629
py3: use dict.items() instead of dict.iteritems() in tests
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35483
diff
changeset
|
18 > for k, v in props.items(): |
36971
ff9cb7067329
test-template-engine: do not evaluate unused keywords by custom engine
Yuya Nishihara <yuya@tcha.org>
parents:
36970
diff
changeset
|
19 > if b'{{%s}}' % k not in tmpl: |
12493
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
20 > continue |
36445
e8d37838f5df
templatekw: add 'requires' flag to switch to exception-safe interface
Yuya Nishihara <yuya@tcha.org>
parents:
36327
diff
changeset
|
21 > if callable(v) and getattr(v, '_requires', None) is None: |
35468
32c278eb876f
templater: keep default resources per template engine (API)
Yuya Nishihara <yuya@tcha.org>
parents:
33709
diff
changeset
|
22 > props = self._resources.copy() |
32c278eb876f
templater: keep default resources per template engine (API)
Yuya Nishihara <yuya@tcha.org>
parents:
33709
diff
changeset
|
23 > props.update(map) |
36970
e55d80804ace
py3: make test-template-engine.t bytes-safe
Yuya Nishihara <yuya@tcha.org>
parents:
36969
diff
changeset
|
24 > v = v(**pycompat.strkwargs(props)) |
36445
e8d37838f5df
templatekw: add 'requires' flag to switch to exception-safe interface
Yuya Nishihara <yuya@tcha.org>
parents:
36327
diff
changeset
|
25 > elif callable(v): |
e8d37838f5df
templatekw: add 'requires' flag to switch to exception-safe interface
Yuya Nishihara <yuya@tcha.org>
parents:
36327
diff
changeset
|
26 > v = v(self, props) |
37272
7d3bc1d4e871
templater: pass (context, mapping) down to unwraphybrid()
Yuya Nishihara <yuya@tcha.org>
parents:
36971
diff
changeset
|
27 > v = templateutil.stringify(self, props, v) |
36970
e55d80804ace
py3: make test-template-engine.t bytes-safe
Yuya Nishihara <yuya@tcha.org>
parents:
36969
diff
changeset
|
28 > tmpl = tmpl.replace(b'{{%s}}' % k, v) |
12493
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
29 > yield tmpl |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
30 > |
36970
e55d80804ace
py3: make test-template-engine.t bytes-safe
Yuya Nishihara <yuya@tcha.org>
parents:
36969
diff
changeset
|
31 > templater.engines[b'my'] = mytemplater |
12493
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 init test |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
34 $ echo '[extensions]' > test/.hg/hgrc |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
35 $ echo "engine = `pwd`/engine.py" >> test/.hg/hgrc |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
36 $ cd test |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
37 $ cat > mymap << EOF |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
38 > changeset = my:changeset.txt |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
39 > EOF |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
40 $ cat > changeset.txt << EOF |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
41 > {{rev}} {{node}} {{author}} |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
42 > EOF |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
43 $ hg ci -Ama |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
44 adding changeset.txt |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
45 adding mymap |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
46 $ hg log --style=./mymap |
dc6b9b3bf63e
tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents:
10057
diff
changeset
|
47 0 97e5f848f0936960273bbf75be6388cd0350a32b test |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
12493
diff
changeset
|
48 |
17355
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
16913
diff
changeset
|
49 $ cat > changeset.txt << EOF |
17358
2917f82f6040
templatekw: merge, preferring the second implementation
Bryan O'Sullivan <bryano@fb.com>
parents:
17355
diff
changeset
|
50 > {{p1rev}} {{p1node}} {{p2rev}} {{p2node}} |
17355
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
16913
diff
changeset
|
51 > EOF |
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
16913
diff
changeset
|
52 $ hg ci -Ama |
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
16913
diff
changeset
|
53 $ hg log --style=./mymap |
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
16913
diff
changeset
|
54 0 97e5f848f0936960273bbf75be6388cd0350a32b -1 0000000000000000000000000000000000000000 |
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
16913
diff
changeset
|
55 -1 0000000000000000000000000000000000000000 -1 0000000000000000000000000000000000000000 |
c25531ed58b0
templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents:
16913
diff
changeset
|
56 |
28831
6b86ce3e3576
templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents:
28213
diff
changeset
|
57 invalid engine type: |
6b86ce3e3576
templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents:
28213
diff
changeset
|
58 |
6b86ce3e3576
templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents:
28213
diff
changeset
|
59 $ 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
|
60 $ hg log --style=./unknownenginemap |
6b86ce3e3576
templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents:
28213
diff
changeset
|
61 abort: invalid template engine: unknown |
6b86ce3e3576
templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents:
28213
diff
changeset
|
62 [255] |
6b86ce3e3576
templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents:
28213
diff
changeset
|
63 |
16913
f2719b387380
tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents:
12493
diff
changeset
|
64 $ cd .. |