Mercurial > hg-stable
diff hgext/commitextras.py @ 33547:a6af8560494e
commitextras: check the format of the arguments and no internal key is used
This patch adds check to make the arguments are passed as KEY=VALUE and no key
which is used internally is passed.
This patch also adds test for the extension.
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Wed, 12 Jul 2017 16:10:10 +0530 |
parents | 77c0c36654c8 |
children | 3cfabb6cfd51 |
line wrap: on
line diff
--- a/hgext/commitextras.py Wed Jul 12 00:23:45 2017 +0530 +++ b/hgext/commitextras.py Wed Jul 12 16:10:10 2017 +0530 @@ -12,6 +12,7 @@ from mercurial.i18n import _ from mercurial import ( commands, + error, extensions, registrar, ) @@ -20,6 +21,19 @@ command = registrar.command(cmdtable) testedwith = 'ships-with-hg-core' +usedinternally = { + 'amend_source', + 'branch', + 'close', + 'histedit_source', + 'topic', + 'rebase_source', + 'intermediate-source', + '__touch-noise__', + 'source', + 'transplant_source', +} + def extsetup(ui): entry = extensions.wrapcommand(commands.table, 'commit', _commit) options = entry[1] @@ -33,7 +47,15 @@ extras = opts.get('extra') if extras: for raw in extras: + if '=' not in raw: + msg = _("unable to parse '%s', should follow " + "KEY=VALUE format") + raise error.Abort(msg % raw) k, v = raw.split('=', 1) + if k in usedinternally: + msg = _("key '%s' is used internally, can't be set " + "manually") + raise error.Abort(msg % k) inneropts['extra'][k] = v return origcommit(*innerpats, **inneropts)