tests/test-template-engine.t
author Connor Sheehan <sheehan@mozilla.com>
Sat, 31 Mar 2018 11:36:55 -0400
changeset 37248 0e7550b0964c
parent 36977 ff9cb7067329
child 37274 7d3bc1d4e871
permissions -rw-r--r--
stringutil: improve check for failed mailmap line parsing The existing check for a bad mailmap file entry fails with inputs like b'>@<'. This commit adds a function to check if a sufficient amount of information has been parsed from a mailmap file entry. At minimum, one email must be found (assumed to be the commit email). If email is not empty and no names are found, then there must be two emails. If there are at least one email and name, the mapping is valid. Differential Revision: https://phab.mercurial-scm.org/D3003
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
  > 
36926
6ff6e1d6b5b8 templater: move stringify() to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents: 36475
diff changeset
     4
  > from mercurial import (
36976
e55d80804ace py3: make test-template-engine.t bytes-safe
Yuya Nishihara <yuya@tcha.org>
parents: 36975
diff changeset
     5
  >     pycompat,
36926
6ff6e1d6b5b8 templater: move stringify() to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents: 36475
diff changeset
     6
  >     templater,
6ff6e1d6b5b8 templater: move stringify() to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents: 36475
diff changeset
     7
  >     templateutil,
6ff6e1d6b5b8 templater: move stringify() to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents: 36475
diff changeset
     8
  > )
12493
dc6b9b3bf63e tests: unify test-template-engine
Matt Mackall <mpm@selenic.com>
parents: 10057
diff changeset
     9
  > 
36975
452696bf3e60 test-template-engine: deduplicate methods of custom template engine
Yuya Nishihara <yuya@tcha.org>
parents: 36926
diff changeset
    10
  > class mytemplater(templater.engine):
452696bf3e60 test-template-engine: deduplicate methods of custom template engine
Yuya Nishihara <yuya@tcha.org>
parents: 36926
diff changeset
    11
  >     def _load(self, t):
452696bf3e60 test-template-engine: deduplicate methods of custom template engine
Yuya Nishihara <yuya@tcha.org>
parents: 36926
diff changeset
    12
  >         return self._loader(t)
36475
e8d37838f5df templatekw: add 'requires' flag to switch to exception-safe interface
Yuya Nishihara <yuya@tcha.org>
parents: 36360
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):
36975
452696bf3e60 test-template-engine: deduplicate methods of custom template engine
Yuya Nishihara <yuya@tcha.org>
parents: 36926
diff changeset
    15
  >         tmpl = self._load(t)
35487
817a3d20dd01 templater: register keywords to defaults table
Yuya Nishihara <yuya@tcha.org>
parents: 35472
diff changeset
    16
  >         props = self._defaults.copy()
817a3d20dd01 templater: register keywords to defaults table
Yuya Nishihara <yuya@tcha.org>
parents: 35472
diff changeset
    17
  >         props.update(map)
36360
58c1368ab629 py3: use dict.items() instead of dict.iteritems() in tests
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35487
diff changeset
    18
  >         for k, v in props.items():
36977
ff9cb7067329 test-template-engine: do not evaluate unused keywords by custom engine
Yuya Nishihara <yuya@tcha.org>
parents: 36976
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
36475
e8d37838f5df templatekw: add 'requires' flag to switch to exception-safe interface
Yuya Nishihara <yuya@tcha.org>
parents: 36360
diff changeset
    21
  >             if callable(v) and getattr(v, '_requires', None) is None:
35472
32c278eb876f templater: keep default resources per template engine (API)
Yuya Nishihara <yuya@tcha.org>
parents: 33735
diff changeset
    22
  >                 props = self._resources.copy()
32c278eb876f templater: keep default resources per template engine (API)
Yuya Nishihara <yuya@tcha.org>
parents: 33735
diff changeset
    23
  >                 props.update(map)
36976
e55d80804ace py3: make test-template-engine.t bytes-safe
Yuya Nishihara <yuya@tcha.org>
parents: 36975
diff changeset
    24
  >                 v = v(**pycompat.strkwargs(props))
36475
e8d37838f5df templatekw: add 'requires' flag to switch to exception-safe interface
Yuya Nishihara <yuya@tcha.org>
parents: 36360
diff changeset
    25
  >             elif callable(v):
e8d37838f5df templatekw: add 'requires' flag to switch to exception-safe interface
Yuya Nishihara <yuya@tcha.org>
parents: 36360
diff changeset
    26
  >                 v = v(self, props)
36926
6ff6e1d6b5b8 templater: move stringify() to templateutil module
Yuya Nishihara <yuya@tcha.org>
parents: 36475
diff changeset
    27
  >             v = templateutil.stringify(v)
36976
e55d80804ace py3: make test-template-engine.t bytes-safe
Yuya Nishihara <yuya@tcha.org>
parents: 36975
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
  > 
36976
e55d80804ace py3: make test-template-engine.t bytes-safe
Yuya Nishihara <yuya@tcha.org>
parents: 36975
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 ..