rebase: use cmdutil.check_at_most_one_arg() for action
authorMartin von Zweigbergk <martinvonz@google.com>
Thu, 12 Dec 2019 15:55:33 -0800
changeset 43899 fff21278554b
parent 43898 023ad45e2fd2
child 43900 3b50de911200
rebase: use cmdutil.check_at_most_one_arg() for action Here we also needed to know what the action was (if any), so I've updated the helper to return any specified option. Differential Revision: https://phab.mercurial-scm.org/D7640
hgext/rebase.py
mercurial/cmdutil.py
tests/test-rebase-obsolete.t
tests/test-rebase-parameters.t
--- a/hgext/rebase.py	Thu Dec 12 22:30:59 2019 -0800
+++ b/hgext/rebase.py	Thu Dec 12 15:55:33 2019 -0800
@@ -1021,12 +1021,7 @@
     inmemory = ui.configbool(b'rebase', b'experimental.inmemory')
     dryrun = opts.get(b'dry_run')
     confirm = opts.get(b'confirm')
-    selactions = [k for k in [b'abort', b'stop', b'continue'] if opts.get(k)]
-    if len(selactions) > 1:
-        raise error.Abort(
-            _(b'cannot use --%s with --%s') % tuple(selactions[:2])
-        )
-    action = selactions[0] if selactions else None
+    action = cmdutil.check_at_most_one_arg(opts, b'abort', b'stop', b'continue')
     if dryrun and action:
         raise error.Abort(_(b'cannot specify both --dry-run and --%s') % action)
     if confirm and action:
--- a/mercurial/cmdutil.py	Thu Dec 12 22:30:59 2019 -0800
+++ b/mercurial/cmdutil.py	Thu Dec 12 15:55:33 2019 -0800
@@ -261,7 +261,10 @@
 
 
 def check_at_most_one_arg(opts, *args):
-    """abort if more than one of the arguments are in opts"""
+    """abort if more than one of the arguments are in opts
+
+    Returns the unique argument or None if none of them were specified.
+    """
     previous = None
     for x in args:
         if opts.get(x):
@@ -270,6 +273,7 @@
                     _(b'cannot specify both --%s and --%s') % (previous, x)
                 )
             previous = x
+    return previous
 
 
 def check_incompatible_arguments(opts, first, *others):
--- a/tests/test-rebase-obsolete.t	Thu Dec 12 22:30:59 2019 -0800
+++ b/tests/test-rebase-obsolete.t	Thu Dec 12 15:55:33 2019 -0800
@@ -2062,7 +2062,7 @@
   (use 'hg rebase --continue' or 'hg rebase --abort')
   [255]
   $ hg rebase --stop --continue
-  abort: cannot use --stop with --continue
+  abort: cannot specify both --stop and --continue
   [255]
 
 Test --stop moves bookmarks of original revisions to new rebased nodes:
--- a/tests/test-rebase-parameters.t	Thu Dec 12 22:30:59 2019 -0800
+++ b/tests/test-rebase-parameters.t	Thu Dec 12 15:55:33 2019 -0800
@@ -61,7 +61,7 @@
   [1]
 
   $ hg rebase --continue --abort
-  abort: cannot use --abort with --continue
+  abort: cannot specify both --abort and --continue
   [255]
 
   $ hg rebase --continue --collapse