Merge branch 'master' into trial-envs
This commit is contained in:
commit
3766060893
1
AUTHORS
1
AUTHORS
|
@ -141,3 +141,4 @@ Tyler Goodlet
|
||||||
Vasily Kuznetsov
|
Vasily Kuznetsov
|
||||||
Wouter van Ackooy
|
Wouter van Ackooy
|
||||||
Xuecong Liao
|
Xuecong Liao
|
||||||
|
Eli Boyarski
|
||||||
|
|
|
@ -17,17 +17,26 @@
|
||||||
* Fix ``pytester`` internal plugin to work correctly with latest versions of
|
* Fix ``pytester`` internal plugin to work correctly with latest versions of
|
||||||
``zope.interface`` (`#1989`_). Thanks `@nicoddemus`_ for the PR.
|
``zope.interface`` (`#1989`_). Thanks `@nicoddemus`_ for the PR.
|
||||||
|
|
||||||
|
* Assert statements of the ``pytester`` plugin again benefit from assertion rewriting (`#1920`_).
|
||||||
|
Thanks `@RonnyPfannschmidt`_ for the report and `@nicoddemus`_ for the PR.
|
||||||
|
|
||||||
* Specifying tests with colons like ``test_foo.py::test_bar`` for tests in
|
* Specifying tests with colons like ``test_foo.py::test_bar`` for tests in
|
||||||
subdirectories with ini configuration files now uses the correct ini file
|
subdirectories with ini configuration files now uses the correct ini file
|
||||||
(`#2148`_). Thanks `@pelme`_.
|
(`#2148`_). Thanks `@pelme`_.
|
||||||
|
|
||||||
|
* Fail ``testdir.runpytest().assert_outcomes()`` explicitly if the pytest
|
||||||
|
terminal output it relies on is missing. Thanks to `@eli-b`_ for the PR.
|
||||||
|
|
||||||
*
|
*
|
||||||
|
|
||||||
.. _@lesteve: https://github.com/lesteve
|
.. _@lesteve: https://github.com/lesteve
|
||||||
.. _@malinoff: https://github.com/malinoff
|
.. _@malinoff: https://github.com/malinoff
|
||||||
.. _@pelme: https://github.com/pelme
|
.. _@pelme: https://github.com/pelme
|
||||||
|
.. _@eli-b: https://github.com/eli-b
|
||||||
|
|
||||||
|
|
||||||
.. _#1989: https://github.com/pytest-dev/pytest/issues/1989
|
.. _#1989: https://github.com/pytest-dev/pytest/issues/1989
|
||||||
|
.. _#1920: https://github.com/pytest-dev/pytest/issues/1920
|
||||||
.. _#2129: https://github.com/pytest-dev/pytest/issues/2129
|
.. _#2129: https://github.com/pytest-dev/pytest/issues/2129
|
||||||
.. _#2148: https://github.com/pytest-dev/pytest/issues/2148
|
.. _#2148: https://github.com/pytest-dev/pytest/issues/2148
|
||||||
.. _#2150: https://github.com/pytest-dev/pytest/issues/2150
|
.. _#2150: https://github.com/pytest-dev/pytest/issues/2150
|
||||||
|
|
|
@ -421,7 +421,7 @@ class PytestPluginManager(PluginManager):
|
||||||
importspec = "_pytest." + modname
|
importspec = "_pytest." + modname
|
||||||
else:
|
else:
|
||||||
importspec = modname
|
importspec = modname
|
||||||
self.rewrite_hook.mark_rewrite(modname)
|
self.rewrite_hook.mark_rewrite(importspec)
|
||||||
try:
|
try:
|
||||||
__import__(importspec)
|
__import__(importspec)
|
||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
|
|
|
@ -367,6 +367,7 @@ class RunResult:
|
||||||
for num, cat in outcomes:
|
for num, cat in outcomes:
|
||||||
d[cat] = int(num)
|
d[cat] = int(num)
|
||||||
return d
|
return d
|
||||||
|
raise ValueError("Pytest terminal report not found")
|
||||||
|
|
||||||
def assert_outcomes(self, passed=0, skipped=0, failed=0):
|
def assert_outcomes(self, passed=0, skipped=0, failed=0):
|
||||||
""" assert that the specified outcomes appear with the respective
|
""" assert that the specified outcomes appear with the respective
|
||||||
|
|
|
@ -58,6 +58,23 @@ class TestImportHookInstallation:
|
||||||
assert 0
|
assert 0
|
||||||
result.stdout.fnmatch_lines([expected])
|
result.stdout.fnmatch_lines([expected])
|
||||||
|
|
||||||
|
def test_rewrite_assertions_pytester_plugin(self, testdir):
|
||||||
|
"""
|
||||||
|
Assertions in the pytester plugin must also benefit from assertion
|
||||||
|
rewriting (#1920).
|
||||||
|
"""
|
||||||
|
testdir.makepyfile("""
|
||||||
|
pytest_plugins = ['pytester']
|
||||||
|
def test_dummy_failure(testdir): # how meta!
|
||||||
|
testdir.makepyfile('def test(): assert 0')
|
||||||
|
r = testdir.inline_run()
|
||||||
|
r.assertoutcome(passed=1)
|
||||||
|
""")
|
||||||
|
result = testdir.runpytest_subprocess()
|
||||||
|
result.stdout.fnmatch_lines([
|
||||||
|
'*assert 1 == 0*',
|
||||||
|
])
|
||||||
|
|
||||||
@pytest.mark.parametrize('mode', ['plain', 'rewrite'])
|
@pytest.mark.parametrize('mode', ['plain', 'rewrite'])
|
||||||
def test_pytest_plugins_rewrite(self, testdir, mode):
|
def test_pytest_plugins_rewrite(self, testdir, mode):
|
||||||
contents = {
|
contents = {
|
||||||
|
|
|
@ -124,3 +124,10 @@ def test_inline_run_clean_modules(testdir):
|
||||||
test_mod.write("def test_foo(): assert False")
|
test_mod.write("def test_foo(): assert False")
|
||||||
result2 = testdir.inline_run(str(test_mod))
|
result2 = testdir.inline_run(str(test_mod))
|
||||||
assert result2.ret == EXIT_TESTSFAILED
|
assert result2.ret == EXIT_TESTSFAILED
|
||||||
|
|
||||||
|
def test_assert_outcomes_after_pytest_erro(testdir):
|
||||||
|
testdir.makepyfile("def test_foo(): assert True")
|
||||||
|
|
||||||
|
result = testdir.runpytest('--unexpected-argument')
|
||||||
|
with pytest.raises(ValueError, message="Pytest terminal report not found"):
|
||||||
|
result.assert_outcomes(passed=0)
|
||||||
|
|
Loading…
Reference in New Issue