Skip to content

Commit

Permalink
Re-enable docstring testing of _pytest modules on CI
Browse files Browse the repository at this point in the history
* Fix doctests
* List one env per line in tox.ini
* "doctesting" tox env now also tests docstrings using doctest
  • Loading branch information
nicoddemus committed Oct 21, 2016
1 parent c0719a5 commit 37dcdfb
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 24 deletions.
22 changes: 13 additions & 9 deletions _pytest/python.py
Original file line number Diff line number Diff line change
Expand Up @@ -1105,7 +1105,9 @@ def raises(expected_exception, *args, **kwargs):
>>> with raises(ZeroDivisionError, message="Expecting ZeroDivisionError"):
... pass
... Failed: Expecting ZeroDivisionError
Traceback (most recent call last):
...
Failed: Expecting ZeroDivisionError
.. note::
Expand All @@ -1116,19 +1118,21 @@ def raises(expected_exception, *args, **kwargs):
Lines of code after that, within the scope of the context manager will
not be executed. For example::
>>> with raises(OSError) as exc_info:
assert 1 == 1 # this will execute as expected
raise OSError(errno.EEXISTS, 'directory exists')
assert exc_info.value.errno == errno.EEXISTS # this will not execute
>>> value = 15
>>> with raises(ValueError) as exc_info:
... if value > 10:
... raise ValueError("value must be <= 10")
... assert str(exc_info.value) == "value must be <= 10" # this will not execute
Instead, the following approach must be taken (note the difference in
scope)::
>>> with raises(OSError) as exc_info:
assert 1 == 1 # this will execute as expected
raise OSError(errno.EEXISTS, 'directory exists')
>>> with raises(ValueError) as exc_info:
... if value > 10:
... raise ValueError("value must be <= 10")
...
>>> assert str(exc_info.value) == "value must be <= 10"
assert exc_info.value.errno == errno.EEXISTS # this will now execute
Or you can specify a callable by passing a to-be-called lambda::
Expand Down
7 changes: 6 additions & 1 deletion _pytest/recwarn.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,13 @@ def deprecated_call(func=None, *args, **kwargs):
This function can be used as a context manager::
>>> import warnings
>>> def api_call_v2():
... warnings.warn('use v3 of this api', DeprecationWarning)
... return 200
>>> with deprecated_call():
... myobject.deprecated_method()
... assert api_call_v2() == 200
Note: we cannot use WarningsRecorder here because it is still subject
to the mechanism that prevents warnings of the same type from being
Expand Down
9 changes: 5 additions & 4 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,11 @@ install:
# install pypy using choco (redirect to a file and write to console in case
# choco install returns non-zero, because choco install python.pypy is too
# noisy)
- choco install python.pypy > pypy-inst.log 2>&1 || (type pypy-inst.log & exit /b 1)
- set PATH=C:\tools\pypy\pypy;%PATH% # so tox can find pypy
- echo PyPy installed
- pypy --version
# pypy is disabled until #1963 gets fixed
#- choco install python.pypy > pypy-inst.log 2>&1 || (type pypy-inst.log & exit /b 1)
#- set PATH=C:\tools\pypy\pypy;%PATH% # so tox can find pypy
#- echo PyPy installed
#- pypy --version

- C:\Python35\python -m pip install tox

Expand Down
28 changes: 18 additions & 10 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,18 @@ minversion=2.0
distshare={homedir}/.tox/distshare
# make sure to update enviroment list on appveyor.yml
envlist=
linting,py26,py27,py33,py34,py35,pypy,
{py27,py35}-{pexpect,xdist,trial},
py27-nobyte,doctesting,freeze,docs
linting
py26
py27
py33
py34
py35
pypy
{py27,py35}-{pexpect,xdist,trial}
py27-nobyte
doctesting
freeze
docs

[testenv]
commands= pytest --lsof -rfsxX {posargs:testing}
Expand Down Expand Up @@ -90,10 +99,6 @@ deps={[testenv:py27-trial]deps}
commands=
pytest -ra {posargs:testing/test_unittest.py}

[testenv:doctest]
commands=pytest --doctest-modules _pytest
deps=

[testenv:docs]
basepython=python
changedir=doc/en
Expand All @@ -106,9 +111,12 @@ commands=

[testenv:doctesting]
basepython = python
changedir=doc/en
usedevelop=True
skipsdist=True
deps=PyYAML
commands= pytest -rfsxX {posargs}
commands=
pytest -rfsxX doc/en
pytest --doctest-modules {toxinidir}/_pytest

[testenv:regen]
changedir=doc/en
Expand Down Expand Up @@ -139,7 +147,7 @@ commands=
[testenv:coveralls]
passenv = TRAVIS TRAVIS_JOB_ID TRAVIS_BRANCH COVERALLS_REPO_TOKEN
usedevelop=True
basepython=python3.4
basepython=python3.5
changedir=.
deps =
{[testenv]deps}
Expand Down

0 comments on commit 37dcdfb

Please sign in to comment.