-
-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Closed
Labels
type: bugproblem that needs to be addressedproblem that needs to be addressed
Description
Creating this after chatting on #pylib. When adding command line options using pytest_addoption(), if any of the arguments are set to be required (e.g. with required=True) it breaks the ability to run --help (unless you also provide the required option). This is in contrast to how a vanilla argparse config works.
Example of this not occurring with argparse:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo', required=True)
args = parser.parse_args()--help still works without the required argument, but executing the file does not (expected behavior):
$ python vanilla.py --help
usage: vanilla.py [-h] --foo FOO
optional arguments:
-h, --help show this help message and exit
--foo FOO
$ python vanilla.py
usage: vanilla.py [-h] --foo FOO
vanilla.py: error: the following arguments are required: --foo
Example of this not working as expected with pytest:
$ cat conftest.py
def pytest_addoption(parser):
parser.addoption("--foo", required=True)--help is broken, unless you also provide the required option:
$ pytest --help
usage: pytest [options] [file_or_dir] [file_or_dir] [...]
pytest: error: the following arguments are required: --foo
$ pytest --help --foo bar
usage: pytest [options] [file_or_dir] [file_or_dir] [...]
positional arguments:
file_or_dir
...
My environment:
$ pip list
pip (8.1.2)
py (1.4.31)
pytest (3.0.3)
setuptools (20.10.1)
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.10.5
BuildVersion: 14F1912
- Include a detailed description of the bug or suggestion
-
pip listof the virtual environment you are using - pytest and operating system versions
- Minimal example if possible
Metadata
Metadata
Assignees
Labels
type: bugproblem that needs to be addressedproblem that needs to be addressed