Skip to content

Commit

Permalink
Fix cmdline help message for custom options with two or more metavars
Browse files Browse the repository at this point in the history
  • Loading branch information
nicoddemus committed Oct 20, 2016
1 parent 5cbfefb commit 83f996d
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 2 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,21 @@
* Import errors when collecting test modules now display the full traceback (`#1976`_).
Thanks `@cwitty`_ for the report and `@nicoddemus`_ for the PR.

* Fix confusing command-line help message for custom options with two or more `metavar` properties (`#2004`_).
Thanks `@okulynyak`_ and `@davehunt`_ for the report and `@nicoddemus`_ for the PR.

* When loading plugins, import errors which contain non-ascii messages are now properly handled in Python 2 (`#1998`_).
Thanks `@nicoddemus`_ for the PR.

*


.. _@cwitty: https://github.com/cwitty
.. _@okulynyak: https://github.com/okulynyak

.. _#1976: https://github.com/pytest-dev/pytest/issues/1976
.. _#1998: https://github.com/pytest-dev/pytest/issues/1998
.. _#2004: https://github.com/pytest-dev/pytest/issues/2004



Expand Down
4 changes: 3 additions & 1 deletion _pytest/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -793,7 +793,7 @@ def _format_action_invocation(self, action):
if len(option) == 2 or option[2] == ' ':
return_list.append(option)
if option[2:] == short_long.get(option.replace('-', '')):
return_list.append(option.replace(' ', '='))
return_list.append(option.replace(' ', '=', 1))
action._formatted_action_invocation = ', '.join(return_list)
return action._formatted_action_invocation

Expand Down Expand Up @@ -1072,6 +1072,8 @@ def _getini(self, name):
except KeyError:
raise ValueError("unknown configuration value: %r" %(name,))
value = self._get_override_ini_value(name)
if value is not None:
print('OVERRIDE', name, value)
if value is None:
try:
value = self.inicfg[name]
Expand Down
14 changes: 13 additions & 1 deletion testing/test_parseopt.py
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,19 @@ def test_drop_short_help1(self, parser, capsys):
help="show help message and configuration info")
parser.parse(['-h'])
help = parser.optparser.format_help()
assert '-doit, --func-args foo' in help
assert '-doit, --func-args foo' in help

def test_multiple_metavar_help(self, parser):
"""
Help text for options with a metavar tuple should display help
in the form "--preferences=value1 value2 value3" (#2004).
"""
group = parser.getgroup("general")
group.addoption('--preferences', metavar=('value1', 'value2', 'value3'), nargs=3)
group._addoption("-h", "--help", action="store_true", dest="help")
parser.parse(['-h'])
help = parser.optparser.format_help()
assert '--preferences=value1 value2 value3' in help


def test_argcomplete(testdir, monkeypatch):
Expand Down

0 comments on commit 83f996d

Please sign in to comment.