From 320625527a1372395f1117e635278050532cbbfe Mon Sep 17 00:00:00 2001 From: Gleb Nikonorov Date: Sat, 13 Jun 2020 11:22:18 -0400 Subject: [PATCH] Add more tests and docs --- changelog/7346.feature.rst | 1 + doc/en/reference.rst | 4 +++- src/_pytest/config/__init__.py | 2 +- testing/test_config.py | 18 +++++++++--------- 4 files changed, 14 insertions(+), 11 deletions(-) create mode 100644 changelog/7346.feature.rst diff --git a/changelog/7346.feature.rst b/changelog/7346.feature.rst new file mode 100644 index 000000000..fef0bbb78 --- /dev/null +++ b/changelog/7346.feature.rst @@ -0,0 +1 @@ +Version information as defined by `PEP 440 `_ may now be included when providing plugins to the ``required_plugins`` configuration option. diff --git a/doc/en/reference.rst b/doc/en/reference.rst index bf3d1fbbb..d5580ad65 100644 --- a/doc/en/reference.rst +++ b/doc/en/reference.rst @@ -1562,12 +1562,14 @@ passed multiple times. The expected format is ``name=value``. For example:: .. confval:: required_plugins A space separated list of plugins that must be present for pytest to run. + Plugins can be listed with or without version specifiers directly following + their name. Whitespace between different version specifiers is not allowed. If any one of the plugins is not found, emit an error. .. code-block:: ini [pytest] - required_plugins = pytest-html pytest-xdist + required_plugins = pytest-django>=3.0.0,<4.0.0 pytest-html pytest-xdist>=1.0.0 .. confval:: testpaths diff --git a/src/_pytest/config/__init__.py b/src/_pytest/config/__init__.py index a124b8f5f..116383a73 100644 --- a/src/_pytest/config/__init__.py +++ b/src/_pytest/config/__init__.py @@ -1101,7 +1101,7 @@ class Config: plugin_info = self.pluginmanager.list_plugin_distinfo() plugin_dist_info = {dist.project_name: dist.version for _, dist in plugin_info} - missing_plugins = ["a"] + missing_plugins = [] for required_plugin in required_plugins: spec = None try: diff --git a/testing/test_config.py b/testing/test_config.py index f8c1c879e..d59d641f6 100644 --- a/testing/test_config.py +++ b/testing/test_config.py @@ -265,6 +265,13 @@ class TestParseIni: ( """ [pytest] + required_plugins = pytest-xdist>1.0.0,<2.0.0 + """, + "", + ), + ( + """ + [pytest] required_plugins = pytest-xdist~=1.32.0 pytest-xdist==1.32.0 pytest-xdist!=0.0.1 pytest-xdist<=99.99.0 pytest-xdist>=1.32.0 pytest-xdist<9.9.9 pytest-xdist>1.30.0 pytest-xdist===1.32.0 """, @@ -280,16 +287,9 @@ class TestParseIni: ( """ [pytest] - required_plugins = pytest-xdist==aegsrgrsgs + required_plugins = pytest-xdist==aegsrgrsgs pytest-xdist==-1 pytest-xdist>2.1.1,>3.0.0 """, - "Missing required plugins: pytest-xdist==aegsrgrsgs", - ), - ( - """ - [pytest] - required_plugins = pytest-xdist==-1 - """, - "Missing required plugins: pytest-xdist==-1", + "Missing required plugins: pytest-xdist==-1, pytest-xdist==aegsrgrsgs, pytest-xdist>2.1.1,>3.0.0", ), ( """