Patchwork [1,of,3] templatekw: reference predecessor node id as {node} in map operation

login
register
mail settings
Submitter Yuya Nishihara
Date June 17, 2017, 5:02 a.m.
Message ID <89557eb72b36450b6833.1497675765@mimosa>
Download mbox | patch
Permalink /patch/21446/
State Accepted
Headers show

Comments

Yuya Nishihara - June 17, 2017, 5:02 a.m.
# HG changeset patch
# User Yuya Nishihara <yuya@tcha.org>
# Date 1497673083 -32400
#      Sat Jun 17 13:18:03 2017 +0900
# Node ID 89557eb72b36450b6833ee04673a131b063c77d5
# Parent  9d472b219fb07e011c7a6255c5be47e6fc66229c
templatekw: reference predecessor node id as {node} in map operation

More predecessor-depending values will be populated by the next patch.
via Mercurial-devel - June 19, 2017, 9:24 p.m.
On Fri, Jun 16, 2017 at 10:02 PM, Yuya Nishihara <yuya@tcha.org> wrote:
> # HG changeset patch
> # User Yuya Nishihara <yuya@tcha.org>
> # Date 1497673083 -32400
> #      Sat Jun 17 13:18:03 2017 +0900
> # Node ID 89557eb72b36450b6833ee04673a131b063c77d5
> # Parent  9d472b219fb07e011c7a6255c5be47e6fc66229c
> templatekw: reference predecessor node id as {node} in map operation

Queued this series, thanks.

>
> More predecessor-depending values will be populated by the next patch.
>
> diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
> --- a/mercurial/templatekw.py
> +++ b/mercurial/templatekw.py
> @@ -568,8 +568,8 @@ def showpredecessors(repo, ctx, **args):
>      predecessors = sorted(obsutil.closestpredecessors(repo, ctx.node()))
>      predecessors = map(hex, predecessors)
>
> -    return _hybrid(None, predecessors, lambda x: {'predecessor': x},
> -                   lambda d: d['predecessor'][:12])
> +    return _hybrid(None, predecessors, lambda x: {'node': x},
> +                   lambda d: d['node'][:12])
>
>  @templatekeyword('p1rev')
>  def showp1rev(repo, ctx, templ, **args):
> diff --git a/tests/test-obsmarker-template.t b/tests/test-obsmarker-template.t
> --- a/tests/test-obsmarker-template.t
> +++ b/tests/test-obsmarker-template.t
> @@ -15,7 +15,8 @@ Global setup
>    > tlog = log -G -T '{node|short}\
>    >     {if(predecessors, "\n  Predecessors: {predecessors}")}\
>    >     {if(predecessors, "\n  semi-colon: {join(predecessors, "; ")}")}\

You know the templater much better than I do, but do the above still
add any value to the test after we have the newly added?

> -  >     {if(predecessors, "\n  json: {predecessors|json}")}\n'
> +  >     {if(predecessors, "\n  json: {predecessors|json}")}\
> +  >     {if(predecessors, "\n  map: {join(predecessors % "{node}", " ")}")}\n'
>    > EOF
>
>  Test templates on amended commit
> @@ -72,6 +73,7 @@ Predecessors template should show curren
>    |    Predecessors: 471f378eab4c
>    |    semi-colon: 471f378eab4c
>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>    | @  471f378eab4c
>    |/
>    o  ea207398892e
> @@ -85,6 +87,7 @@ Predecessors template should show curren
>    |    Predecessors: a468dc9b3633
>    |    semi-colon: a468dc9b3633
>    |    json: ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"]
> +  |    map: a468dc9b36338b14fdb7825f55ce3df4e71517ad
>    | @  a468dc9b3633
>    |/
>    o  ea207398892e
> @@ -96,10 +99,12 @@ with --hidden
>    |    Predecessors: a468dc9b3633
>    |    semi-colon: a468dc9b3633
>    |    json: ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"]
> +  |    map: a468dc9b36338b14fdb7825f55ce3df4e71517ad
>    | @  a468dc9b3633
>    |/     Predecessors: 471f378eab4c
>    |      semi-colon: 471f378eab4c
>    |      json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
> +  |      map: 471f378eab4c5e25f6c77f785b27c936efb22874
>    | x  f137d23bb3e1
>    | |
>    | x  471f378eab4c
> @@ -121,10 +126,12 @@ visible.
>    |    Predecessors: a468dc9b3633
>    |    semi-colon: a468dc9b3633
>    |    json: ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"]
> +  |    map: a468dc9b36338b14fdb7825f55ce3df4e71517ad
>    | x  a468dc9b3633
>    |/     Predecessors: 471f378eab4c
>    |      semi-colon: 471f378eab4c
>    |      json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
> +  |      map: 471f378eab4c5e25f6c77f785b27c936efb22874
>    | x  f137d23bb3e1
>    | |
>    | x  471f378eab4c
> @@ -202,10 +209,12 @@ Predecessors template should show curren
>    |    Predecessors: 471597cad322
>    |    semi-colon: 471597cad322
>    |    json: ["471597cad322d1f659bb169751be9133dad92ef3"]
> +  |    map: 471597cad322d1f659bb169751be9133dad92ef3
>    o  337fec4d2edc
>    |    Predecessors: 471597cad322
>    |    semi-colon: 471597cad322
>    |    json: ["471597cad322d1f659bb169751be9133dad92ef3"]
> +  |    map: 471597cad322d1f659bb169751be9133dad92ef3
>    | @  471597cad322
>    |/
>    o  ea207398892e
> @@ -229,10 +238,12 @@ with --hidden
>    |    Predecessors: 471597cad322
>    |    semi-colon: 471597cad322
>    |    json: ["471597cad322d1f659bb169751be9133dad92ef3"]
> +  |    map: 471597cad322d1f659bb169751be9133dad92ef3
>    o  337fec4d2edc
>    |    Predecessors: 471597cad322
>    |    semi-colon: 471597cad322
>    |    json: ["471597cad322d1f659bb169751be9133dad92ef3"]
> +  |    map: 471597cad322d1f659bb169751be9133dad92ef3
>    | x  471597cad322
>    |/
>    o  ea207398892e
> @@ -312,6 +323,7 @@ Predecessors template should show curren
>    |    Predecessors: 471f378eab4c
>    |    semi-colon: 471f378eab4c
>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>    | @  471f378eab4c
>    |/
>    o  ea207398892e
> @@ -326,6 +338,7 @@ displayed
>    |    Predecessors: 0dec01379d3b 471f378eab4c
>    |    semi-colon: 0dec01379d3b; 471f378eab4c
>    |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5", "471f378eab4c5e25f6c77f785b27c936efb22874"]
> +  |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5 471f378eab4c5e25f6c77f785b27c936efb22874
>    | @  0dec01379d3b
>    | |
>    | x  471f378eab4c
> @@ -349,6 +362,7 @@ with --hidden
>    |    Predecessors: 0dec01379d3b 471f378eab4c
>    |    semi-colon: 0dec01379d3b; 471f378eab4c
>    |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5", "471f378eab4c5e25f6c77f785b27c936efb22874"]
> +  |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5 471f378eab4c5e25f6c77f785b27c936efb22874
>    | x  0dec01379d3b
>    | |
>    | x  471f378eab4c
> @@ -460,10 +474,12 @@ Predecessors template should show curren
>    |    Predecessors: 471f378eab4c
>    |    semi-colon: 471f378eab4c
>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>    | o  fdf9bde5129a
>    |/     Predecessors: 471f378eab4c
>    |      semi-colon: 471f378eab4c
>    |      json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
> +  |      map: 471f378eab4c5e25f6c77f785b27c936efb22874
>    | @  471f378eab4c
>    |/
>    o  ea207398892e
> @@ -487,14 +503,17 @@ Predecessors template should the predece
>    |    Predecessors: 65b757b745b9
>    |    semi-colon: 65b757b745b9
>    |    json: ["65b757b745b935093c87a2bccd877521cccffcbd"]
> +  |    map: 65b757b745b935093c87a2bccd877521cccffcbd
>    | x  65b757b745b9
>    |/     Predecessors: 471f378eab4c
>    |      semi-colon: 471f378eab4c
>    |      json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
> +  |      map: 471f378eab4c5e25f6c77f785b27c936efb22874
>    | @  fdf9bde5129a
>    |/     Predecessors: 471f378eab4c
>    |      semi-colon: 471f378eab4c
>    |      json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
> +  |      map: 471f378eab4c5e25f6c77f785b27c936efb22874
>    | x  471f378eab4c
>    |/
>    o  ea207398892e
> @@ -588,6 +607,7 @@ Predecessors template should show curren
>    |    Predecessors: 471f378eab4c
>    |    semi-colon: 471f378eab4c
>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>    | @  471f378eab4c
>    |/
>    o  ea207398892e
> @@ -601,6 +621,7 @@ Predecessors template should both predec
>    |    Predecessors: 0dec01379d3b 471f378eab4c
>    |    semi-colon: 0dec01379d3b; 471f378eab4c
>    |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5", "471f378eab4c5e25f6c77f785b27c936efb22874"]
> +  |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5 471f378eab4c5e25f6c77f785b27c936efb22874
>    | @  0dec01379d3b
>    | |
>    | x  471f378eab4c
> @@ -616,6 +637,7 @@ Predecessors template should both predec
>    |    Predecessors: 471f378eab4c b7ea6d14e664
>    |    semi-colon: 471f378eab4c; b7ea6d14e664
>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874", "b7ea6d14e664bdc8922221f7992631b50da3fb07"]
> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874 b7ea6d14e664bdc8922221f7992631b50da3fb07
>    | @  b7ea6d14e664
>    | |
>    | x  471f378eab4c
> @@ -638,10 +660,12 @@ with --hidden
>    |    Predecessors: 471f378eab4c b7ea6d14e664
>    |    semi-colon: 471f378eab4c; b7ea6d14e664
>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874", "b7ea6d14e664bdc8922221f7992631b50da3fb07"]
> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874 b7ea6d14e664bdc8922221f7992631b50da3fb07
>    | x  b7ea6d14e664
>    | |    Predecessors: 0dec01379d3b
>    | |    semi-colon: 0dec01379d3b
>    | |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]
> +  | |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5
>    | | x  0dec01379d3b
>    | |/
>    | x  471f378eab4c
> @@ -744,6 +768,7 @@ Predecessors template should show curren
>    |    Predecessors: 471f378eab4c
>    |    semi-colon: 471f378eab4c
>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>    | @  471f378eab4c
>    |/
>    o  ea207398892e
> @@ -764,6 +789,7 @@ with --hidden
>    |    Predecessors: 471f378eab4c
>    |    semi-colon: 471f378eab4c
>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>    | x  471f378eab4c
>    |/
>    o  ea207398892e
> @@ -807,14 +833,17 @@ Check templates
>    |    Predecessors: 0dec01379d3b
>    |    semi-colon: 0dec01379d3b
>    |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]
> +  |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5
>    | @  0dec01379d3b
>    | |    Predecessors: 471f378eab4c
>    | |    semi-colon: 471f378eab4c
>    | |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
> +  | |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>    | x  471f378eab4c
>    |/     Predecessors: 0dec01379d3b
>    |      semi-colon: 0dec01379d3b
>    |      json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]
> +  |      map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5
>    o  ea207398892e
>
>
> @@ -825,6 +854,7 @@ Check templates
>    |    Predecessors: 471f378eab4c
>    |    semi-colon: 471f378eab4c
>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>    | @  471f378eab4c
>    |/
>    o  ea207398892e
> @@ -843,13 +873,16 @@ Check templates
>    |    Predecessors: 0dec01379d3b
>    |    semi-colon: 0dec01379d3b
>    |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]
> +  |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5
>    | x  0dec01379d3b
>    | |    Predecessors: 471f378eab4c
>    | |    semi-colon: 471f378eab4c
>    | |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
> +  | |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>    | x  471f378eab4c
>    |/     Predecessors: 0dec01379d3b
>    |      semi-colon: 0dec01379d3b
>    |      json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]
> +  |      map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5
>    @  ea207398892e
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
Pierre-Yves David - June 19, 2017, 11:37 p.m.
On 06/19/2017 11:24 PM, Martin von Zweigbergk via Mercurial-devel wrote:
> On Fri, Jun 16, 2017 at 10:02 PM, Yuya Nishihara <yuya@tcha.org> wrote:
>> # HG changeset patch
>> # User Yuya Nishihara <yuya@tcha.org>
>> # Date 1497673083 -32400
>> #      Sat Jun 17 13:18:03 2017 +0900
>> # Node ID 89557eb72b36450b6833ee04673a131b063c77d5
>> # Parent  9d472b219fb07e011c7a6255c5be47e6fc66229c
>> templatekw: reference predecessor node id as {node} in map operation
>
> Queued this series, thanks.
>
>>
>> More predecessor-depending values will be populated by the next patch.
>>
>> diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
>> --- a/mercurial/templatekw.py
>> +++ b/mercurial/templatekw.py
>> @@ -568,8 +568,8 @@ def showpredecessors(repo, ctx, **args):
>>      predecessors = sorted(obsutil.closestpredecessors(repo, ctx.node()))
>>      predecessors = map(hex, predecessors)
>>
>> -    return _hybrid(None, predecessors, lambda x: {'predecessor': x},
>> -                   lambda d: d['predecessor'][:12])
>> +    return _hybrid(None, predecessors, lambda x: {'node': x},
>> +                   lambda d: d['node'][:12])
>>
>>  @templatekeyword('p1rev')
>>  def showp1rev(repo, ctx, templ, **args):
>> diff --git a/tests/test-obsmarker-template.t b/tests/test-obsmarker-template.t
>> --- a/tests/test-obsmarker-template.t
>> +++ b/tests/test-obsmarker-template.t
>> @@ -15,7 +15,8 @@ Global setup
>>    > tlog = log -G -T '{node|short}\
>>    >     {if(predecessors, "\n  Predecessors: {predecessors}")}\
>>    >     {if(predecessors, "\n  semi-colon: {join(predecessors, "; ")}")}\
>
> You know the templater much better than I do, but do the above still
> add any value to the test after we have the newly added?

I think so, from what I understand:

The above test the default representation and the default representation 
of the subitem.

The one below test mapping withing the subitem (instead of the default 
output of the subitem)

>> -  >     {if(predecessors, "\n  json: {predecessors|json}")}\n'
>> +  >     {if(predecessors, "\n  json: {predecessors|json}")}\
>> +  >     {if(predecessors, "\n  map: {join(predecessors % "{node}", " ")}")}\n'
>>    > EOF
>>
>>  Test templates on amended commit
>> @@ -72,6 +73,7 @@ Predecessors template should show curren
>>    |    Predecessors: 471f378eab4c
>>    |    semi-colon: 471f378eab4c
>>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
>> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>>    | @  471f378eab4c
>>    |/
>>    o  ea207398892e
>> @@ -85,6 +87,7 @@ Predecessors template should show curren
>>    |    Predecessors: a468dc9b3633
>>    |    semi-colon: a468dc9b3633
>>    |    json: ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"]
>> +  |    map: a468dc9b36338b14fdb7825f55ce3df4e71517ad
>>    | @  a468dc9b3633
>>    |/
>>    o  ea207398892e
>> @@ -96,10 +99,12 @@ with --hidden
>>    |    Predecessors: a468dc9b3633
>>    |    semi-colon: a468dc9b3633
>>    |    json: ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"]
>> +  |    map: a468dc9b36338b14fdb7825f55ce3df4e71517ad
>>    | @  a468dc9b3633
>>    |/     Predecessors: 471f378eab4c
>>    |      semi-colon: 471f378eab4c
>>    |      json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
>> +  |      map: 471f378eab4c5e25f6c77f785b27c936efb22874
>>    | x  f137d23bb3e1
>>    | |
>>    | x  471f378eab4c
>> @@ -121,10 +126,12 @@ visible.
>>    |    Predecessors: a468dc9b3633
>>    |    semi-colon: a468dc9b3633
>>    |    json: ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"]
>> +  |    map: a468dc9b36338b14fdb7825f55ce3df4e71517ad
>>    | x  a468dc9b3633
>>    |/     Predecessors: 471f378eab4c
>>    |      semi-colon: 471f378eab4c
>>    |      json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
>> +  |      map: 471f378eab4c5e25f6c77f785b27c936efb22874
>>    | x  f137d23bb3e1
>>    | |
>>    | x  471f378eab4c
>> @@ -202,10 +209,12 @@ Predecessors template should show curren
>>    |    Predecessors: 471597cad322
>>    |    semi-colon: 471597cad322
>>    |    json: ["471597cad322d1f659bb169751be9133dad92ef3"]
>> +  |    map: 471597cad322d1f659bb169751be9133dad92ef3
>>    o  337fec4d2edc
>>    |    Predecessors: 471597cad322
>>    |    semi-colon: 471597cad322
>>    |    json: ["471597cad322d1f659bb169751be9133dad92ef3"]
>> +  |    map: 471597cad322d1f659bb169751be9133dad92ef3
>>    | @  471597cad322
>>    |/
>>    o  ea207398892e
>> @@ -229,10 +238,12 @@ with --hidden
>>    |    Predecessors: 471597cad322
>>    |    semi-colon: 471597cad322
>>    |    json: ["471597cad322d1f659bb169751be9133dad92ef3"]
>> +  |    map: 471597cad322d1f659bb169751be9133dad92ef3
>>    o  337fec4d2edc
>>    |    Predecessors: 471597cad322
>>    |    semi-colon: 471597cad322
>>    |    json: ["471597cad322d1f659bb169751be9133dad92ef3"]
>> +  |    map: 471597cad322d1f659bb169751be9133dad92ef3
>>    | x  471597cad322
>>    |/
>>    o  ea207398892e
>> @@ -312,6 +323,7 @@ Predecessors template should show curren
>>    |    Predecessors: 471f378eab4c
>>    |    semi-colon: 471f378eab4c
>>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
>> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>>    | @  471f378eab4c
>>    |/
>>    o  ea207398892e
>> @@ -326,6 +338,7 @@ displayed
>>    |    Predecessors: 0dec01379d3b 471f378eab4c
>>    |    semi-colon: 0dec01379d3b; 471f378eab4c
>>    |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5", "471f378eab4c5e25f6c77f785b27c936efb22874"]
>> +  |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5 471f378eab4c5e25f6c77f785b27c936efb22874
>>    | @  0dec01379d3b
>>    | |
>>    | x  471f378eab4c
>> @@ -349,6 +362,7 @@ with --hidden
>>    |    Predecessors: 0dec01379d3b 471f378eab4c
>>    |    semi-colon: 0dec01379d3b; 471f378eab4c
>>    |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5", "471f378eab4c5e25f6c77f785b27c936efb22874"]
>> +  |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5 471f378eab4c5e25f6c77f785b27c936efb22874
>>    | x  0dec01379d3b
>>    | |
>>    | x  471f378eab4c
>> @@ -460,10 +474,12 @@ Predecessors template should show curren
>>    |    Predecessors: 471f378eab4c
>>    |    semi-colon: 471f378eab4c
>>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
>> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>>    | o  fdf9bde5129a
>>    |/     Predecessors: 471f378eab4c
>>    |      semi-colon: 471f378eab4c
>>    |      json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
>> +  |      map: 471f378eab4c5e25f6c77f785b27c936efb22874
>>    | @  471f378eab4c
>>    |/
>>    o  ea207398892e
>> @@ -487,14 +503,17 @@ Predecessors template should the predece
>>    |    Predecessors: 65b757b745b9
>>    |    semi-colon: 65b757b745b9
>>    |    json: ["65b757b745b935093c87a2bccd877521cccffcbd"]
>> +  |    map: 65b757b745b935093c87a2bccd877521cccffcbd
>>    | x  65b757b745b9
>>    |/     Predecessors: 471f378eab4c
>>    |      semi-colon: 471f378eab4c
>>    |      json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
>> +  |      map: 471f378eab4c5e25f6c77f785b27c936efb22874
>>    | @  fdf9bde5129a
>>    |/     Predecessors: 471f378eab4c
>>    |      semi-colon: 471f378eab4c
>>    |      json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
>> +  |      map: 471f378eab4c5e25f6c77f785b27c936efb22874
>>    | x  471f378eab4c
>>    |/
>>    o  ea207398892e
>> @@ -588,6 +607,7 @@ Predecessors template should show curren
>>    |    Predecessors: 471f378eab4c
>>    |    semi-colon: 471f378eab4c
>>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
>> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>>    | @  471f378eab4c
>>    |/
>>    o  ea207398892e
>> @@ -601,6 +621,7 @@ Predecessors template should both predec
>>    |    Predecessors: 0dec01379d3b 471f378eab4c
>>    |    semi-colon: 0dec01379d3b; 471f378eab4c
>>    |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5", "471f378eab4c5e25f6c77f785b27c936efb22874"]
>> +  |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5 471f378eab4c5e25f6c77f785b27c936efb22874
>>    | @  0dec01379d3b
>>    | |
>>    | x  471f378eab4c
>> @@ -616,6 +637,7 @@ Predecessors template should both predec
>>    |    Predecessors: 471f378eab4c b7ea6d14e664
>>    |    semi-colon: 471f378eab4c; b7ea6d14e664
>>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874", "b7ea6d14e664bdc8922221f7992631b50da3fb07"]
>> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874 b7ea6d14e664bdc8922221f7992631b50da3fb07
>>    | @  b7ea6d14e664
>>    | |
>>    | x  471f378eab4c
>> @@ -638,10 +660,12 @@ with --hidden
>>    |    Predecessors: 471f378eab4c b7ea6d14e664
>>    |    semi-colon: 471f378eab4c; b7ea6d14e664
>>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874", "b7ea6d14e664bdc8922221f7992631b50da3fb07"]
>> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874 b7ea6d14e664bdc8922221f7992631b50da3fb07
>>    | x  b7ea6d14e664
>>    | |    Predecessors: 0dec01379d3b
>>    | |    semi-colon: 0dec01379d3b
>>    | |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]
>> +  | |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5
>>    | | x  0dec01379d3b
>>    | |/
>>    | x  471f378eab4c
>> @@ -744,6 +768,7 @@ Predecessors template should show curren
>>    |    Predecessors: 471f378eab4c
>>    |    semi-colon: 471f378eab4c
>>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
>> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>>    | @  471f378eab4c
>>    |/
>>    o  ea207398892e
>> @@ -764,6 +789,7 @@ with --hidden
>>    |    Predecessors: 471f378eab4c
>>    |    semi-colon: 471f378eab4c
>>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
>> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>>    | x  471f378eab4c
>>    |/
>>    o  ea207398892e
>> @@ -807,14 +833,17 @@ Check templates
>>    |    Predecessors: 0dec01379d3b
>>    |    semi-colon: 0dec01379d3b
>>    |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]
>> +  |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5
>>    | @  0dec01379d3b
>>    | |    Predecessors: 471f378eab4c
>>    | |    semi-colon: 471f378eab4c
>>    | |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
>> +  | |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>>    | x  471f378eab4c
>>    |/     Predecessors: 0dec01379d3b
>>    |      semi-colon: 0dec01379d3b
>>    |      json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]
>> +  |      map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5
>>    o  ea207398892e
>>
>>
>> @@ -825,6 +854,7 @@ Check templates
>>    |    Predecessors: 471f378eab4c
>>    |    semi-colon: 471f378eab4c
>>    |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
>> +  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>>    | @  471f378eab4c
>>    |/
>>    o  ea207398892e
>> @@ -843,13 +873,16 @@ Check templates
>>    |    Predecessors: 0dec01379d3b
>>    |    semi-colon: 0dec01379d3b
>>    |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]
>> +  |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5
>>    | x  0dec01379d3b
>>    | |    Predecessors: 471f378eab4c
>>    | |    semi-colon: 471f378eab4c
>>    | |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
>> +  | |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
>>    | x  471f378eab4c
>>    |/     Predecessors: 0dec01379d3b
>>    |      semi-colon: 0dec01379d3b
>>    |      json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]
>> +  |      map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5
>>    @  ea207398892e
>>
>> _______________________________________________
>> Mercurial-devel mailing list
>> Mercurial-devel@mercurial-scm.org
>> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
>
Yuya Nishihara - June 20, 2017, 12:13 p.m.
On Tue, 20 Jun 2017 01:37:26 +0200, Pierre-Yves David wrote:
> On 06/19/2017 11:24 PM, Martin von Zweigbergk via Mercurial-devel wrote:
> > On Fri, Jun 16, 2017 at 10:02 PM, Yuya Nishihara <yuya@tcha.org> wrote:
> >> # HG changeset patch
> >> # User Yuya Nishihara <yuya@tcha.org>
> >> # Date 1497673083 -32400
> >> #      Sat Jun 17 13:18:03 2017 +0900
> >> # Node ID 89557eb72b36450b6833ee04673a131b063c77d5
> >> # Parent  9d472b219fb07e011c7a6255c5be47e6fc66229c
> >> templatekw: reference predecessor node id as {node} in map operation
> >
> > Queued this series, thanks.
> >
> >>
> >> More predecessor-depending values will be populated by the next patch.
> >>
> >> diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
> >> --- a/mercurial/templatekw.py
> >> +++ b/mercurial/templatekw.py
> >> @@ -568,8 +568,8 @@ def showpredecessors(repo, ctx, **args):
> >>      predecessors = sorted(obsutil.closestpredecessors(repo, ctx.node()))
> >>      predecessors = map(hex, predecessors)
> >>
> >> -    return _hybrid(None, predecessors, lambda x: {'predecessor': x},
> >> -                   lambda d: d['predecessor'][:12])
> >> +    return _hybrid(None, predecessors, lambda x: {'node': x},
> >> +                   lambda d: d['node'][:12])
> >>
> >>  @templatekeyword('p1rev')
> >>  def showp1rev(repo, ctx, templ, **args):
> >> diff --git a/tests/test-obsmarker-template.t b/tests/test-obsmarker-template.t
> >> --- a/tests/test-obsmarker-template.t
> >> +++ b/tests/test-obsmarker-template.t
> >> @@ -15,7 +15,8 @@ Global setup
> >>    > tlog = log -G -T '{node|short}\
> >>    >     {if(predecessors, "\n  Predecessors: {predecessors}")}\
> >>    >     {if(predecessors, "\n  semi-colon: {join(predecessors, "; ")}")}\
> >
> > You know the templater much better than I do, but do the above still
> > add any value to the test after we have the newly added?
> 
> I think so, from what I understand:
> 
> The above test the default representation and the default representation 
> of the subitem.
> 
> The one below test mapping withing the subitem (instead of the default 
> output of the subitem)

They all go different paths, so yes. But do we need to test all of them for
all of predecessors conditions? Maybe no. I just followed the existing tests.

Patch

diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
--- a/mercurial/templatekw.py
+++ b/mercurial/templatekw.py
@@ -568,8 +568,8 @@  def showpredecessors(repo, ctx, **args):
     predecessors = sorted(obsutil.closestpredecessors(repo, ctx.node()))
     predecessors = map(hex, predecessors)
 
-    return _hybrid(None, predecessors, lambda x: {'predecessor': x},
-                   lambda d: d['predecessor'][:12])
+    return _hybrid(None, predecessors, lambda x: {'node': x},
+                   lambda d: d['node'][:12])
 
 @templatekeyword('p1rev')
 def showp1rev(repo, ctx, templ, **args):
diff --git a/tests/test-obsmarker-template.t b/tests/test-obsmarker-template.t
--- a/tests/test-obsmarker-template.t
+++ b/tests/test-obsmarker-template.t
@@ -15,7 +15,8 @@  Global setup
   > tlog = log -G -T '{node|short}\
   >     {if(predecessors, "\n  Predecessors: {predecessors}")}\
   >     {if(predecessors, "\n  semi-colon: {join(predecessors, "; ")}")}\
-  >     {if(predecessors, "\n  json: {predecessors|json}")}\n'
+  >     {if(predecessors, "\n  json: {predecessors|json}")}\
+  >     {if(predecessors, "\n  map: {join(predecessors % "{node}", " ")}")}\n'
   > EOF
 
 Test templates on amended commit
@@ -72,6 +73,7 @@  Predecessors template should show curren
   |    Predecessors: 471f378eab4c
   |    semi-colon: 471f378eab4c
   |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
+  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
   | @  471f378eab4c
   |/
   o  ea207398892e
@@ -85,6 +87,7 @@  Predecessors template should show curren
   |    Predecessors: a468dc9b3633
   |    semi-colon: a468dc9b3633
   |    json: ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"]
+  |    map: a468dc9b36338b14fdb7825f55ce3df4e71517ad
   | @  a468dc9b3633
   |/
   o  ea207398892e
@@ -96,10 +99,12 @@  with --hidden
   |    Predecessors: a468dc9b3633
   |    semi-colon: a468dc9b3633
   |    json: ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"]
+  |    map: a468dc9b36338b14fdb7825f55ce3df4e71517ad
   | @  a468dc9b3633
   |/     Predecessors: 471f378eab4c
   |      semi-colon: 471f378eab4c
   |      json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
+  |      map: 471f378eab4c5e25f6c77f785b27c936efb22874
   | x  f137d23bb3e1
   | |
   | x  471f378eab4c
@@ -121,10 +126,12 @@  visible.
   |    Predecessors: a468dc9b3633
   |    semi-colon: a468dc9b3633
   |    json: ["a468dc9b36338b14fdb7825f55ce3df4e71517ad"]
+  |    map: a468dc9b36338b14fdb7825f55ce3df4e71517ad
   | x  a468dc9b3633
   |/     Predecessors: 471f378eab4c
   |      semi-colon: 471f378eab4c
   |      json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
+  |      map: 471f378eab4c5e25f6c77f785b27c936efb22874
   | x  f137d23bb3e1
   | |
   | x  471f378eab4c
@@ -202,10 +209,12 @@  Predecessors template should show curren
   |    Predecessors: 471597cad322
   |    semi-colon: 471597cad322
   |    json: ["471597cad322d1f659bb169751be9133dad92ef3"]
+  |    map: 471597cad322d1f659bb169751be9133dad92ef3
   o  337fec4d2edc
   |    Predecessors: 471597cad322
   |    semi-colon: 471597cad322
   |    json: ["471597cad322d1f659bb169751be9133dad92ef3"]
+  |    map: 471597cad322d1f659bb169751be9133dad92ef3
   | @  471597cad322
   |/
   o  ea207398892e
@@ -229,10 +238,12 @@  with --hidden
   |    Predecessors: 471597cad322
   |    semi-colon: 471597cad322
   |    json: ["471597cad322d1f659bb169751be9133dad92ef3"]
+  |    map: 471597cad322d1f659bb169751be9133dad92ef3
   o  337fec4d2edc
   |    Predecessors: 471597cad322
   |    semi-colon: 471597cad322
   |    json: ["471597cad322d1f659bb169751be9133dad92ef3"]
+  |    map: 471597cad322d1f659bb169751be9133dad92ef3
   | x  471597cad322
   |/
   o  ea207398892e
@@ -312,6 +323,7 @@  Predecessors template should show curren
   |    Predecessors: 471f378eab4c
   |    semi-colon: 471f378eab4c
   |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
+  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
   | @  471f378eab4c
   |/
   o  ea207398892e
@@ -326,6 +338,7 @@  displayed
   |    Predecessors: 0dec01379d3b 471f378eab4c
   |    semi-colon: 0dec01379d3b; 471f378eab4c
   |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5", "471f378eab4c5e25f6c77f785b27c936efb22874"]
+  |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5 471f378eab4c5e25f6c77f785b27c936efb22874
   | @  0dec01379d3b
   | |
   | x  471f378eab4c
@@ -349,6 +362,7 @@  with --hidden
   |    Predecessors: 0dec01379d3b 471f378eab4c
   |    semi-colon: 0dec01379d3b; 471f378eab4c
   |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5", "471f378eab4c5e25f6c77f785b27c936efb22874"]
+  |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5 471f378eab4c5e25f6c77f785b27c936efb22874
   | x  0dec01379d3b
   | |
   | x  471f378eab4c
@@ -460,10 +474,12 @@  Predecessors template should show curren
   |    Predecessors: 471f378eab4c
   |    semi-colon: 471f378eab4c
   |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
+  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
   | o  fdf9bde5129a
   |/     Predecessors: 471f378eab4c
   |      semi-colon: 471f378eab4c
   |      json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
+  |      map: 471f378eab4c5e25f6c77f785b27c936efb22874
   | @  471f378eab4c
   |/
   o  ea207398892e
@@ -487,14 +503,17 @@  Predecessors template should the predece
   |    Predecessors: 65b757b745b9
   |    semi-colon: 65b757b745b9
   |    json: ["65b757b745b935093c87a2bccd877521cccffcbd"]
+  |    map: 65b757b745b935093c87a2bccd877521cccffcbd
   | x  65b757b745b9
   |/     Predecessors: 471f378eab4c
   |      semi-colon: 471f378eab4c
   |      json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
+  |      map: 471f378eab4c5e25f6c77f785b27c936efb22874
   | @  fdf9bde5129a
   |/     Predecessors: 471f378eab4c
   |      semi-colon: 471f378eab4c
   |      json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
+  |      map: 471f378eab4c5e25f6c77f785b27c936efb22874
   | x  471f378eab4c
   |/
   o  ea207398892e
@@ -588,6 +607,7 @@  Predecessors template should show curren
   |    Predecessors: 471f378eab4c
   |    semi-colon: 471f378eab4c
   |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
+  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
   | @  471f378eab4c
   |/
   o  ea207398892e
@@ -601,6 +621,7 @@  Predecessors template should both predec
   |    Predecessors: 0dec01379d3b 471f378eab4c
   |    semi-colon: 0dec01379d3b; 471f378eab4c
   |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5", "471f378eab4c5e25f6c77f785b27c936efb22874"]
+  |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5 471f378eab4c5e25f6c77f785b27c936efb22874
   | @  0dec01379d3b
   | |
   | x  471f378eab4c
@@ -616,6 +637,7 @@  Predecessors template should both predec
   |    Predecessors: 471f378eab4c b7ea6d14e664
   |    semi-colon: 471f378eab4c; b7ea6d14e664
   |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874", "b7ea6d14e664bdc8922221f7992631b50da3fb07"]
+  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874 b7ea6d14e664bdc8922221f7992631b50da3fb07
   | @  b7ea6d14e664
   | |
   | x  471f378eab4c
@@ -638,10 +660,12 @@  with --hidden
   |    Predecessors: 471f378eab4c b7ea6d14e664
   |    semi-colon: 471f378eab4c; b7ea6d14e664
   |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874", "b7ea6d14e664bdc8922221f7992631b50da3fb07"]
+  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874 b7ea6d14e664bdc8922221f7992631b50da3fb07
   | x  b7ea6d14e664
   | |    Predecessors: 0dec01379d3b
   | |    semi-colon: 0dec01379d3b
   | |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]
+  | |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5
   | | x  0dec01379d3b
   | |/
   | x  471f378eab4c
@@ -744,6 +768,7 @@  Predecessors template should show curren
   |    Predecessors: 471f378eab4c
   |    semi-colon: 471f378eab4c
   |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
+  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
   | @  471f378eab4c
   |/
   o  ea207398892e
@@ -764,6 +789,7 @@  with --hidden
   |    Predecessors: 471f378eab4c
   |    semi-colon: 471f378eab4c
   |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
+  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
   | x  471f378eab4c
   |/
   o  ea207398892e
@@ -807,14 +833,17 @@  Check templates
   |    Predecessors: 0dec01379d3b
   |    semi-colon: 0dec01379d3b
   |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]
+  |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5
   | @  0dec01379d3b
   | |    Predecessors: 471f378eab4c
   | |    semi-colon: 471f378eab4c
   | |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
+  | |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
   | x  471f378eab4c
   |/     Predecessors: 0dec01379d3b
   |      semi-colon: 0dec01379d3b
   |      json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]
+  |      map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5
   o  ea207398892e
   
 
@@ -825,6 +854,7 @@  Check templates
   |    Predecessors: 471f378eab4c
   |    semi-colon: 471f378eab4c
   |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
+  |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
   | @  471f378eab4c
   |/
   o  ea207398892e
@@ -843,13 +873,16 @@  Check templates
   |    Predecessors: 0dec01379d3b
   |    semi-colon: 0dec01379d3b
   |    json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]
+  |    map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5
   | x  0dec01379d3b
   | |    Predecessors: 471f378eab4c
   | |    semi-colon: 471f378eab4c
   | |    json: ["471f378eab4c5e25f6c77f785b27c936efb22874"]
+  | |    map: 471f378eab4c5e25f6c77f785b27c936efb22874
   | x  471f378eab4c
   |/     Predecessors: 0dec01379d3b
   |      semi-colon: 0dec01379d3b
   |      json: ["0dec01379d3be6318c470ead31b1fe7ae7cb53d5"]
+  |      map: 0dec01379d3be6318c470ead31b1fe7ae7cb53d5
   @  ea207398892e