diff --git a/_pytest/logging.py b/_pytest/logging.py index d3ac81e65..7234bdeb0 100644 --- a/_pytest/logging.py +++ b/_pytest/logging.py @@ -1,3 +1,4 @@ +""" Access and control log capturing. """ from __future__ import absolute_import, division, print_function import logging diff --git a/_pytest/main.py b/_pytest/main.py index 97c6e276c..359945175 100644 --- a/_pytest/main.py +++ b/_pytest/main.py @@ -177,7 +177,7 @@ def _in_venv(path): """Attempts to detect if ``path`` is the root of a Virtual Environment by checking for the existence of the appropriate activate script""" bindir = path.join('Scripts' if sys.platform.startswith('win') else 'bin') - if not bindir.exists(): + if not bindir.isdir(): return False activates = ('activate', 'activate.csh', 'activate.fish', 'Activate', 'Activate.bat', 'Activate.ps1') diff --git a/_pytest/python_api.py b/_pytest/python_api.py index 541371449..3dce7f6b4 100644 --- a/_pytest/python_api.py +++ b/_pytest/python_api.py @@ -2,7 +2,8 @@ import math import sys import py -from six.moves import zip +from six.moves import zip, filterfalse +from more_itertools.more import always_iterable from _pytest.compat import isclass from _pytest.outcomes import fail @@ -566,14 +567,10 @@ def raises(expected_exception, *args, **kwargs): """ __tracebackhide__ = True - msg = ("exceptions must be old-style classes or" - " derived from BaseException, not %s") - if isinstance(expected_exception, tuple): - for exc in expected_exception: - if not isclass(exc): - raise TypeError(msg % type(exc)) - elif not isclass(expected_exception): - raise TypeError(msg % type(expected_exception)) + for exc in filterfalse(isclass, always_iterable(expected_exception)): + msg = ("exceptions must be old-style classes or" + " derived from BaseException, not %s") + raise TypeError(msg % type(exc)) message = "DID NOT RAISE {0}".format(expected_exception) match_expr = None diff --git a/changelog/3209.doc.rst b/changelog/3209.doc.rst new file mode 100644 index 000000000..84e165805 --- /dev/null +++ b/changelog/3209.doc.rst @@ -0,0 +1 @@ +Add logging plugin to plugins list. \ No newline at end of file diff --git a/changelog/3241.bugfix.rst b/changelog/3241.bugfix.rst new file mode 100644 index 000000000..2b8b07d83 --- /dev/null +++ b/changelog/3241.bugfix.rst @@ -0,0 +1,2 @@ +Refactor check of bindir from ``exists`` to ``isdir`` regarding `#3241 `_. + diff --git a/changelog/3265.trivial.rst b/changelog/3265.trivial.rst new file mode 100644 index 000000000..b4ad22ecf --- /dev/null +++ b/changelog/3265.trivial.rst @@ -0,0 +1 @@ +``pytest`` now depends on the `more_itertools `_ package. diff --git a/doc/en/plugins.rst b/doc/en/plugins.rst index 400418aee..2a9fff81b 100644 --- a/doc/en/plugins.rst +++ b/doc/en/plugins.rst @@ -148,6 +148,7 @@ in the `pytest repository `_. _pytest.resultlog _pytest.runner _pytest.main + _pytest.logging _pytest.skipping _pytest.terminal _pytest.tmpdir diff --git a/setup.py b/setup.py index 78b3ebc5e..1cbabd72e 100644 --- a/setup.py +++ b/setup.py @@ -60,6 +60,7 @@ def main(): 'six>=1.10.0', 'setuptools', 'attrs>=17.4.0', + 'more_itertools>=4.0.0', ] # if _PYTEST_SETUP_SKIP_PLUGGY_DEP is set, skip installing pluggy; # used by tox.ini to test with pluggy master