--- a/mercurial/fancyopts.py Wed Oct 03 22:09:18 2012 +0200
+++ b/mercurial/fancyopts.py Mon Oct 08 15:35:16 2012 +0200
@@ -5,7 +5,8 @@
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
-import getopt
+import getopt, util
+from i18n import _
def gnugetopt(args, options, longoptions):
"""Parse options mostly like getopt.gnu_getopt.
@@ -105,7 +106,11 @@
if t is type(fancyopts):
state[name] = defmap[name](val)
elif t is type(1):
- state[name] = int(val)
+ try:
+ state[name] = int(val)
+ except ValueError:
+ raise util.Abort(_('invalid value %r for option %s, '
+ 'expected int') % (val, opt))
elif t is type(''):
state[name] = val
elif t is type([]):
--- a/tests/test-import.t Wed Oct 03 22:09:18 2012 +0200
+++ b/tests/test-import.t Mon Oct 08 15:35:16 2012 +0200
@@ -602,6 +602,9 @@
$ echo a > a
$ hg ci -Am t
adding a
+ $ hg import -p foo
+ abort: invalid value 'foo' for option -p, expected int
+ [255]
$ hg import -p0 - << EOF
> foobar
> --- a Sat Apr 12 22:43:58 2008 -0400