2017-03-17 09:21:30 +08:00
|
|
|
from __future__ import absolute_import, division, print_function
|
2016-07-23 22:56:04 +08:00
|
|
|
import pytest
|
|
|
|
|
|
|
|
|
|
|
|
def test_yield_tests_deprecation(testdir):
|
|
|
|
testdir.makepyfile("""
|
|
|
|
def func1(arg, arg2):
|
|
|
|
assert arg == arg2
|
|
|
|
def test_gen():
|
|
|
|
yield "m1", func1, 15, 3*5
|
|
|
|
yield "m2", func1, 42, 6*7
|
2017-07-11 03:07:55 +08:00
|
|
|
def test_gen2():
|
|
|
|
for k in range(10):
|
|
|
|
yield func1, 1, 1
|
2016-07-23 22:56:04 +08:00
|
|
|
""")
|
|
|
|
result = testdir.runpytest('-ra')
|
|
|
|
result.stdout.fnmatch_lines([
|
|
|
|
'*yield tests are deprecated, and scheduled to be removed in pytest 4.0*',
|
|
|
|
'*2 passed*',
|
|
|
|
])
|
2017-07-11 03:07:55 +08:00
|
|
|
assert result.stdout.str().count('yield tests are deprecated') == 2
|
2016-07-23 22:56:04 +08:00
|
|
|
|
|
|
|
|
|
|
|
def test_funcarg_prefix_deprecation(testdir):
|
|
|
|
testdir.makepyfile("""
|
|
|
|
def pytest_funcarg__value():
|
|
|
|
return 10
|
|
|
|
|
|
|
|
def test_funcarg_prefix(value):
|
|
|
|
assert value == 10
|
|
|
|
""")
|
|
|
|
result = testdir.runpytest('-ra')
|
|
|
|
result.stdout.fnmatch_lines([
|
2017-03-17 08:55:03 +08:00
|
|
|
('*pytest_funcarg__value: '
|
2016-07-23 22:56:04 +08:00
|
|
|
'declaring fixtures using "pytest_funcarg__" prefix is deprecated '
|
|
|
|
'and scheduled to be removed in pytest 4.0. '
|
|
|
|
'Please remove the prefix and use the @pytest.fixture decorator instead.'),
|
|
|
|
'*1 passed*',
|
|
|
|
])
|
|
|
|
|
|
|
|
|
2016-08-17 08:30:07 +08:00
|
|
|
def test_pytest_setup_cfg_deprecated(testdir):
|
|
|
|
testdir.makefile('.cfg', setup='''
|
|
|
|
[pytest]
|
|
|
|
addopts = --verbose
|
|
|
|
''')
|
|
|
|
result = testdir.runpytest()
|
|
|
|
result.stdout.fnmatch_lines(['*pytest*section in setup.cfg files is deprecated*use*tool:pytest*instead*'])
|
|
|
|
|
|
|
|
|
2018-03-02 15:52:38 +08:00
|
|
|
def test_pytest_custom_cfg_deprecated(testdir):
|
|
|
|
testdir.makefile('.cfg', custom='''
|
|
|
|
[pytest]
|
|
|
|
addopts = --verbose
|
|
|
|
''')
|
|
|
|
result = testdir.runpytest("-c", "custom.cfg")
|
|
|
|
result.stdout.fnmatch_lines(['*pytest*section in custom.cfg files is deprecated*use*tool:pytest*instead*'])
|
|
|
|
|
|
|
|
|
2016-07-23 22:56:04 +08:00
|
|
|
def test_str_args_deprecated(tmpdir, testdir):
|
|
|
|
"""Deprecate passing strings to pytest.main(). Scheduled for removal in pytest-4.0."""
|
|
|
|
from _pytest.main import EXIT_NOTESTSCOLLECTED
|
|
|
|
warnings = []
|
|
|
|
|
2017-02-17 02:41:51 +08:00
|
|
|
class Collect(object):
|
2016-07-23 22:56:04 +08:00
|
|
|
def pytest_logwarning(self, message):
|
|
|
|
warnings.append(message)
|
|
|
|
|
|
|
|
ret = pytest.main("%s -x" % tmpdir, plugins=[Collect()])
|
|
|
|
msg = ('passing a string to pytest.main() is deprecated, '
|
|
|
|
'pass a list of arguments instead.')
|
|
|
|
assert msg in warnings
|
|
|
|
assert ret == EXIT_NOTESTSCOLLECTED
|
|
|
|
|
|
|
|
|
|
|
|
def test_getfuncargvalue_is_deprecated(request):
|
|
|
|
pytest.deprecated_call(request.getfuncargvalue, 'tmpdir')
|
2016-08-17 07:22:15 +08:00
|
|
|
|
|
|
|
|
|
|
|
def test_resultlog_is_deprecated(testdir):
|
|
|
|
result = testdir.runpytest('--help')
|
|
|
|
result.stdout.fnmatch_lines(['*DEPRECATED path for machine-readable result log*'])
|
|
|
|
|
|
|
|
testdir.makepyfile('''
|
|
|
|
def test():
|
|
|
|
pass
|
|
|
|
''')
|
|
|
|
result = testdir.runpytest('--result-log=%s' % testdir.tmpdir.join('result.log'))
|
2017-09-01 06:11:20 +08:00
|
|
|
result.stdout.fnmatch_lines([
|
|
|
|
'*--result-log is deprecated and scheduled for removal in pytest 4.0*',
|
|
|
|
'*See https://docs.pytest.org/*/usage.html#creating-resultlog-format-files for more information*',
|
|
|
|
])
|
2017-11-15 23:48:08 +08:00
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.filterwarnings('always:Metafunc.addcall is deprecated')
|
|
|
|
def test_metafunc_addcall_deprecated(testdir):
|
|
|
|
testdir.makepyfile("""
|
|
|
|
def pytest_generate_tests(metafunc):
|
|
|
|
metafunc.addcall({'i': 1})
|
|
|
|
metafunc.addcall({'i': 2})
|
|
|
|
def test_func(i):
|
|
|
|
pass
|
|
|
|
""")
|
|
|
|
res = testdir.runpytest('-s')
|
|
|
|
assert res.ret == 0
|
|
|
|
res.stdout.fnmatch_lines([
|
|
|
|
"*Metafunc.addcall is deprecated*",
|
|
|
|
"*2 passed, 2 warnings*",
|
|
|
|
])
|
2017-11-24 05:34:52 +08:00
|
|
|
|
|
|
|
|
2017-12-01 04:34:53 +08:00
|
|
|
def test_terminal_reporter_writer_attr(pytestconfig):
|
|
|
|
"""Check that TerminalReporter._tw is also available as 'writer' (#2984)
|
|
|
|
This attribute is planned to be deprecated in 3.4.
|
|
|
|
"""
|
|
|
|
try:
|
|
|
|
import xdist # noqa
|
|
|
|
pytest.skip('xdist workers disable the terminal reporter plugin')
|
|
|
|
except ImportError:
|
|
|
|
pass
|
|
|
|
terminal_reporter = pytestconfig.pluginmanager.get_plugin('terminalreporter')
|
|
|
|
assert terminal_reporter.writer is terminal_reporter._tw
|
|
|
|
|
|
|
|
|
2017-12-06 03:02:56 +08:00
|
|
|
@pytest.mark.parametrize('plugin', ['catchlog', 'capturelog'])
|
|
|
|
def test_pytest_catchlog_deprecated(testdir, plugin):
|
2017-11-24 05:34:52 +08:00
|
|
|
testdir.makepyfile("""
|
|
|
|
def test_func(pytestconfig):
|
2017-12-06 03:02:56 +08:00
|
|
|
pytestconfig.pluginmanager.register(None, 'pytest_{0}')
|
|
|
|
""".format(plugin))
|
2017-11-24 05:34:52 +08:00
|
|
|
res = testdir.runpytest()
|
|
|
|
assert res.ret == 0
|
|
|
|
res.stdout.fnmatch_lines([
|
2017-12-06 03:02:56 +08:00
|
|
|
"*pytest-*log plugin has been merged into the core*",
|
2017-11-24 05:34:52 +08:00
|
|
|
"*1 passed, 1 warnings*",
|
|
|
|
])
|
2018-02-21 07:27:24 +08:00
|
|
|
|
|
|
|
|
|
|
|
def test_pytest_plugins_in_non_top_level_conftest_deprecated(testdir):
|
|
|
|
from _pytest.deprecated import PYTEST_PLUGINS_FROM_NON_TOP_LEVEL_CONFTEST
|
|
|
|
subdirectory = testdir.tmpdir.join("subdirectory")
|
|
|
|
subdirectory.mkdir()
|
|
|
|
# create the inner conftest with makeconftest and then move it to the subdirectory
|
|
|
|
testdir.makeconftest("""
|
|
|
|
pytest_plugins=['capture']
|
|
|
|
""")
|
|
|
|
testdir.tmpdir.join("conftest.py").move(subdirectory.join("conftest.py"))
|
|
|
|
# make the top level conftest
|
|
|
|
testdir.makeconftest("""
|
|
|
|
import warnings
|
|
|
|
warnings.filterwarnings('always', category=DeprecationWarning)
|
|
|
|
""")
|
|
|
|
testdir.makepyfile("""
|
|
|
|
def test_func():
|
|
|
|
pass
|
|
|
|
""")
|
|
|
|
res = testdir.runpytest_subprocess()
|
|
|
|
assert res.ret == 0
|
|
|
|
res.stderr.fnmatch_lines('*' + str(PYTEST_PLUGINS_FROM_NON_TOP_LEVEL_CONFTEST).splitlines()[0])
|
|
|
|
|
|
|
|
|
|
|
|
def test_pytest_plugins_in_non_top_level_conftest_deprecated_no_top_level_conftest(testdir):
|
|
|
|
from _pytest.deprecated import PYTEST_PLUGINS_FROM_NON_TOP_LEVEL_CONFTEST
|
|
|
|
subdirectory = testdir.tmpdir.join('subdirectory')
|
|
|
|
subdirectory.mkdir()
|
|
|
|
testdir.makeconftest("""
|
|
|
|
import warnings
|
|
|
|
warnings.filterwarnings('always', category=DeprecationWarning)
|
|
|
|
pytest_plugins=['capture']
|
|
|
|
""")
|
|
|
|
testdir.tmpdir.join("conftest.py").move(subdirectory.join("conftest.py"))
|
|
|
|
|
|
|
|
testdir.makepyfile("""
|
|
|
|
def test_func():
|
|
|
|
pass
|
|
|
|
""")
|
|
|
|
|
|
|
|
res = testdir.runpytest_subprocess()
|
|
|
|
assert res.ret == 0
|
|
|
|
res.stderr.fnmatch_lines('*' + str(PYTEST_PLUGINS_FROM_NON_TOP_LEVEL_CONFTEST).splitlines()[0])
|
|
|
|
|
|
|
|
|
|
|
|
def test_pytest_plugins_in_non_top_level_conftest_deprecated_no_false_positives(testdir):
|
|
|
|
from _pytest.deprecated import PYTEST_PLUGINS_FROM_NON_TOP_LEVEL_CONFTEST
|
|
|
|
subdirectory = testdir.tmpdir.join('subdirectory')
|
|
|
|
subdirectory.mkdir()
|
|
|
|
testdir.makeconftest("""
|
|
|
|
pass
|
|
|
|
""")
|
|
|
|
testdir.tmpdir.join("conftest.py").move(subdirectory.join("conftest.py"))
|
|
|
|
|
|
|
|
testdir.makeconftest("""
|
|
|
|
import warnings
|
|
|
|
warnings.filterwarnings('always', category=DeprecationWarning)
|
|
|
|
pytest_plugins=['capture']
|
|
|
|
""")
|
|
|
|
testdir.makepyfile("""
|
|
|
|
def test_func():
|
|
|
|
pass
|
|
|
|
""")
|
|
|
|
res = testdir.runpytest_subprocess()
|
|
|
|
assert res.ret == 0
|
|
|
|
assert str(PYTEST_PLUGINS_FROM_NON_TOP_LEVEL_CONFTEST).splitlines()[0] not in res.stderr.str()
|