tests/test-template-engine.t
branchstable
changeset 38739 7acec9408e1c
parent 37883 443029011990
parent 38738 faea9b1980d9
child 38740 c08ea1e219c0
equal deleted inserted replaced
37883:443029011990 38739:7acec9408e1c
     1 
       
     2   $ cat > engine.py << EOF
       
     3   > 
       
     4   > from mercurial import (
       
     5   >     pycompat,
       
     6   >     templater,
       
     7   >     templateutil,
       
     8   > )
       
     9   > 
       
    10   > class mytemplater(templater.engine):
       
    11   >     def _load(self, t):
       
    12   >         return self._loader(t)
       
    13   > 
       
    14   >     def process(self, t, map):
       
    15   >         tmpl = self._load(t)
       
    16   >         props = self._defaults.copy()
       
    17   >         props.update(map)
       
    18   >         for k, v in props.items():
       
    19   >             if b'{{%s}}' % k not in tmpl:
       
    20   >                 continue
       
    21   >             if callable(v) and getattr(v, '_requires', None) is None:
       
    22   >                 props = self._resources.copy()
       
    23   >                 props.update(map)
       
    24   >                 v = v(**pycompat.strkwargs(props))
       
    25   >             elif callable(v):
       
    26   >                 v = v(self, props)
       
    27   >             v = templateutil.stringify(self, props, v)
       
    28   >             tmpl = tmpl.replace(b'{{%s}}' % k, v)
       
    29   >         yield tmpl
       
    30   > 
       
    31   > templater.engines[b'my'] = mytemplater
       
    32   > EOF
       
    33   $ hg init test
       
    34   $ echo '[extensions]' > test/.hg/hgrc
       
    35   $ echo "engine = `pwd`/engine.py" >> test/.hg/hgrc
       
    36   $ cd test
       
    37   $ cat > mymap << EOF
       
    38   > changeset = my:changeset.txt
       
    39   > EOF
       
    40   $ cat > changeset.txt << EOF
       
    41   > {{rev}} {{node}} {{author}}
       
    42   > EOF
       
    43   $ hg ci -Ama
       
    44   adding changeset.txt
       
    45   adding mymap
       
    46   $ hg log --style=./mymap
       
    47   0 97e5f848f0936960273bbf75be6388cd0350a32b test
       
    48 
       
    49   $ cat > changeset.txt << EOF
       
    50   > {{p1rev}} {{p1node}} {{p2rev}} {{p2node}}
       
    51   > EOF
       
    52   $ hg ci -Ama
       
    53   $ hg log --style=./mymap
       
    54   0 97e5f848f0936960273bbf75be6388cd0350a32b -1 0000000000000000000000000000000000000000
       
    55   -1 0000000000000000000000000000000000000000 -1 0000000000000000000000000000000000000000
       
    56 
       
    57 invalid engine type:
       
    58 
       
    59   $ echo 'changeset = unknown:changeset.txt' > unknownenginemap
       
    60   $ hg log --style=./unknownenginemap
       
    61   abort: invalid template engine: unknown
       
    62   [255]
       
    63 
       
    64   $ cd ..