##// END OF EJS Templates
revsetlang: catch invalid value passed to formatspec()...
Yuya Nishihara -
r35612:468d7a1f default
parent child Browse files
Show More
@@ -599,7 +599,10 b' def formatspec(expr, *args):'
599 elif c == 'n':
599 elif c == 'n':
600 return _quote(node.hex(arg))
600 return _quote(node.hex(arg))
601 elif c == 'b':
601 elif c == 'b':
602 return _quote(arg.branch())
602 try:
603 return _quote(arg.branch())
604 except AttributeError:
605 raise TypeError
603 raise error.ParseError(_('unexpected revspec format character %s') % c)
606 raise error.ParseError(_('unexpected revspec format character %s') % c)
604
607
605 def listexp(s, t):
608 def listexp(s, t):
@@ -615,7 +618,10 b' def formatspec(expr, *args):'
615 elif t == 'n':
618 elif t == 'n':
616 return "_hexlist('%s')" % "\0".join(node.hex(a) for a in s)
619 return "_hexlist('%s')" % "\0".join(node.hex(a) for a in s)
617 elif t == 'b':
620 elif t == 'b':
618 return "_list('%s')" % "\0".join(a.branch() for a in s)
621 try:
622 return "_list('%s')" % "\0".join(a.branch() for a in s)
623 except AttributeError:
624 raise TypeError
619
625
620 m = l // 2
626 m = l // 2
621 return '(%s or %s)' % (listexp(s[:m], t), listexp(s[m:], t))
627 return '(%s or %s)' % (listexp(s[:m], t), listexp(s[m:], t))
@@ -651,9 +657,15 b' def formatspec(expr, *args):'
651 d = expr[pos]
657 d = expr[pos]
652 except IndexError:
658 except IndexError:
653 raise error.ParseError(_('incomplete revspec format character'))
659 raise error.ParseError(_('incomplete revspec format character'))
654 ret.append(listexp(list(arg), d))
660 try:
661 ret.append(listexp(list(arg), d))
662 except (TypeError, ValueError):
663 raise error.ParseError(_('invalid argument for revspec'))
655 else:
664 else:
656 ret.append(argtype(d, arg))
665 try:
666 ret.append(argtype(d, arg))
667 except (TypeError, ValueError):
668 raise error.ParseError(_('invalid argument for revspec'))
657 pos += 1
669 pos += 1
658
670
659 try:
671 try:
@@ -4103,6 +4103,24 b' Invalid arguments passed to revset()'
4103 $ hg log -T '{revset("%l", 0)}\n'
4103 $ hg log -T '{revset("%l", 0)}\n'
4104 hg: parse error: incomplete revspec format character
4104 hg: parse error: incomplete revspec format character
4105 [255]
4105 [255]
4106 $ hg log -T '{revset("%d", 'foo')}\n'
4107 hg: parse error: invalid argument for revspec
4108 [255]
4109 $ hg log -T '{revset("%ld", files)}\n'
4110 hg: parse error: invalid argument for revspec
4111 [255]
4112 $ hg log -T '{revset("%ls", 0)}\n'
4113 hg: parse error: invalid argument for revspec
4114 [255]
4115 $ hg log -T '{revset("%b", 'foo')}\n'
4116 hg: parse error: invalid argument for revspec
4117 [255]
4118 $ hg log -T '{revset("%lb", files)}\n'
4119 hg: parse error: invalid argument for revspec
4120 [255]
4121 $ hg log -T '{revset("%r", 0)}\n'
4122 hg: parse error: invalid argument for revspec
4123 [255]
4106
4124
4107 Test files function
4125 Test files function
4108
4126
General Comments 0
You need to be logged in to leave comments. Login now