tests/test-template-engine.t
author Yuya Nishihara <yuya@tcha.org>
Thu, 15 Mar 2018 20:10:54 +0900
changeset 36969 452696bf3e60
parent 36920 6ff6e1d6b5b8
child 36970 e55d80804ace
permissions -rw-r--r--
test-template-engine: deduplicate methods of custom template engine
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 (
6ff6e1d6b5b8 templater: move stringify() to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents: 36445
diff changeset
     5
  >     templater,
6ff6e1d6b5b8 templater: move stringify() to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents: 36445
diff changeset
     6
  >     templateutil,
6ff6e1d6b5b8 templater: move stringify() to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents: 36445
diff changeset
     7
  > )
12493
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
     8
  > 
36969
452696bf3e60 test-template-engine: deduplicate methods of custom template engine
Yuya Nishihara <yuya@tcha.org>
parents: 36920
diff changeset
     9
  > class mytemplater(templater.engine):
452696bf3e60 test-template-engine: deduplicate methods of custom template engine
Yuya Nishihara <yuya@tcha.org>
parents: 36920
diff changeset
    10
  >     def _load(self, t):
452696bf3e60 test-template-engine: deduplicate methods of custom template engine
Yuya Nishihara <yuya@tcha.org>
parents: 36920
diff changeset
    11
  >         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
    12
  > 
12493
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    13
  >     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
    14
  >         tmpl = self._load(t)
35483
817a3d20dd01 templater: register keywords to defaults table
Yuya Nishihara <yuya@tcha.org>
parents: 35468
diff changeset
    15
  >         props = self._defaults.copy()
817a3d20dd01 templater: register keywords to defaults table
Yuya Nishihara <yuya@tcha.org>
parents: 35468
diff changeset
    16
  >         props.update(map)
36327
58c1368ab629 py3: use dict.items() instead of dict.iteritems() in tests
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35483
diff changeset
    17
  >         for k, v in props.items():
33709
511d6ae462f3 template: rename troubles templatekw into instabilities
Boris Feld <boris.feld@octobus.net>
parents: 28957
diff changeset
    18
  >             if k in ('templ', 'ctx', 'repo', 'revcache', 'cache', 'troubles'):
12493
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    19
  >                 continue
36445
e8d37838f5df templatekw: add 'requires' flag to switch to exception-safe interface
Yuya Nishihara <yuya@tcha.org>
parents: 36327
diff changeset
    20
  >             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
    21
  >                 props = self._resources.copy()
32c278eb876f templater: keep default resources per template engine (API)
Yuya Nishihara <yuya@tcha.org>
parents: 33709
diff changeset
    22
  >                 props.update(map)
32c278eb876f templater: keep default resources per template engine (API)
Yuya Nishihara <yuya@tcha.org>
parents: 33709
diff changeset
    23
  >                 v = v(**props)
36445
e8d37838f5df templatekw: add 'requires' flag to switch to exception-safe interface
Yuya Nishihara <yuya@tcha.org>
parents: 36327
diff changeset
    24
  >             elif callable(v):
e8d37838f5df templatekw: add 'requires' flag to switch to exception-safe interface
Yuya Nishihara <yuya@tcha.org>
parents: 36327
diff changeset
    25
  >                 v = v(self, props)
36920
6ff6e1d6b5b8 templater: move stringify() to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents: 36445
diff changeset
    26
  >             v = templateutil.stringify(v)
12493
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    27
  >             tmpl = tmpl.replace('{{%s}}' % k, v)
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    28
  >         yield tmpl
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    29
  > 
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    30
  > templater.engines['my'] = mytemplater
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    31
  > EOF
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    32
  $ hg init test
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    33
  $ echo '[extensions]' > test/.hg/hgrc
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    34
  $ echo "engine = `pwd`/engine.py" >> test/.hg/hgrc
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    35
  $ cd test
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    36
  $ cat > mymap << EOF
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    37
  > changeset = my:changeset.txt
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    38
  > EOF
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    39
  $ cat > changeset.txt << EOF
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    40
  > {{rev}} {{node}} {{author}}
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    41
  > EOF
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    42
  $ hg ci -Ama
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    43
  adding changeset.txt
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    44
  adding mymap
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    45
  $ hg log --style=./mymap
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
    46
  0 97e5f848f0936960273bbf75be6388cd0350a32b test
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 12493
diff changeset
    47
17355
c25531ed58b0 templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents: 16913
diff changeset
    48
  $ cat > changeset.txt << EOF
17358
2917f82f6040 templatekw: merge, preferring the second implementation
Bryan O'Sullivan <bryano@fb.com>
parents: 17355
diff changeset
    49
  > {{p1rev}} {{p1node}} {{p2rev}} {{p2node}}
17355
c25531ed58b0 templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents: 16913
diff changeset
    50
  > EOF
c25531ed58b0 templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents: 16913
diff changeset
    51
  $ hg ci -Ama
c25531ed58b0 templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents: 16913
diff changeset
    52
  $ hg log --style=./mymap
c25531ed58b0 templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents: 16913
diff changeset
    53
  0 97e5f848f0936960273bbf75be6388cd0350a32b -1 0000000000000000000000000000000000000000
c25531ed58b0 templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents: 16913
diff changeset
    54
  -1 0000000000000000000000000000000000000000 -1 0000000000000000000000000000000000000000
c25531ed58b0 templatekw: add parent1, parent1node, parent2, parent2node keywords
epriestley <hg@yghe.net>
parents: 16913
diff changeset
    55
28831
6b86ce3e3576 templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents: 28213
diff changeset
    56
invalid engine type:
6b86ce3e3576 templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents: 28213
diff changeset
    57
6b86ce3e3576 templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents: 28213
diff changeset
    58
  $ 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
    59
  $ hg log --style=./unknownenginemap
6b86ce3e3576 templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents: 28213
diff changeset
    60
  abort: invalid template engine: unknown
6b86ce3e3576 templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents: 28213
diff changeset
    61
  [255]
6b86ce3e3576 templater: give better error message for invalid engine type
Yuya Nishihara <yuya@tcha.org>
parents: 28213
diff changeset
    62
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 12493
diff changeset
    63
  $ cd ..