# HG changeset patch # User Denis Laxalde # Date 1492248582 -7200 # Node ID 83527d9f1f1381ffd7325b7c4297ffbdfed78236 # Parent 11f501f0a2136126aa4280c29929a246825d5424 revset: properly parse "descend" argument of followlines() We parse "descend" symbol as a Boolean using getboolean (prior extraction by getargsdict already checked that it is a symbol). In tests, check for error cases and vary Boolean values here and there. diff -r 11f501f0a213 -r 83527d9f1f13 mercurial/revset.py --- a/mercurial/revset.py Sat Apr 15 11:26:09 2017 +0200 +++ b/mercurial/revset.py Sat Apr 15 11:29:42 2017 +0200 @@ -32,6 +32,7 @@ getsymbol = revsetlang.getsymbol getstring = revsetlang.getstring getinteger = revsetlang.getinteger +getboolean = revsetlang.getboolean getlist = revsetlang.getlist getrange = revsetlang.getrange getargs = revsetlang.getargs @@ -944,7 +945,11 @@ fromline, toline = util.processlinerange(fromline, toline) fctx = repo[rev].filectx(fname) - if args.get('descend', False): + descend = False + if 'descend' in args: + descend = getboolean(args['descend'], + _("'descend' argument must be a boolean")) + if descend: rs = generatorset( (c.rev() for c, _linerange in context.blockdescendants(fctx, fromline, toline)), diff -r 11f501f0a213 -r 83527d9f1f13 tests/test-annotate.t --- a/tests/test-annotate.t Sat Apr 15 11:26:09 2017 +0200 +++ b/tests/test-annotate.t Sat Apr 15 11:29:42 2017 +0200 @@ -509,7 +509,7 @@ 16: baz:0 19: baz:3 20: baz:4 - $ hg log -T '{rev}: {desc}\n' -r 'followlines(baz, 3:5, descend=True, startrev=19)' + $ hg log -T '{rev}: {desc}\n' -r 'followlines(baz, 3:5, descend=true, startrev=19)' 19: baz:3 20: baz:4 $ echo 6 >> baz @@ -518,13 +518,13 @@ 16: baz:0 19: baz:3 20: baz:4 - $ hg log -T '{rev}: {desc}\n' -r 'followlines(baz, 3:5, startrev=19, descend=True)' + $ hg log -T '{rev}: {desc}\n' -r 'followlines(baz, 3:5, startrev=19, descend=1)' 19: baz:3 20: baz:4 $ sed 's/3/3+/' baz > baz.new $ mv baz.new baz $ hg ci -m 'baz:3->3+' - $ hg log -T '{rev}: {desc}\n' -r 'followlines(baz, 5:7)' + $ hg log -T '{rev}: {desc}\n' -r 'followlines(baz, 5:7, descend=0)' 16: baz:0 19: baz:3 20: baz:4 @@ -533,7 +533,7 @@ 19: baz:3 20: baz:4 23: baz:3->3+ - $ hg log -T '{rev}: {desc}\n' -r 'followlines(baz, 1:2)' + $ hg log -T '{rev}: {desc}\n' -r 'followlines(baz, 1:2, descend=false)' 21: added two lines with 0 file patterns are okay @@ -662,6 +662,12 @@ $ hg log -r 'followlines(baz, 2:40)' abort: line range exceeds file size [255] + $ hg log -r 'followlines(baz, 2:4, startrev=20, descend=[1])' + hg: parse error at 43: syntax error in revset 'followlines(baz, 2:4, startrev=20, descend=[1])' + [255] + $ hg log -r 'followlines(baz, 2:4, startrev=20, descend=a)' + hg: parse error: 'descend' argument must be a boolean + [255] Test annotate with whitespace options