| from __future__ import absolute_import, division, print_function |
| 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 |
| def test_gen2(): |
| for k in range(10): |
| yield func1, 1, 1 |
| """ |
| ) |
| result = testdir.runpytest("-ra") |
| result.stdout.fnmatch_lines( |
| [ |
| "*yield tests are deprecated, and scheduled to be removed in pytest 4.0*", |
| "*2 passed*", |
| ] |
| ) |
| assert result.stdout.str().count("yield tests are deprecated") == 2 |
| |
| |
| 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( |
| [ |
| ( |
| "*pytest_funcarg__value: " |
| '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*", |
| ] |
| ) |
| |
| |
| 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*"] |
| ) |
| |
| |
| 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*"] |
| ) |
| |
| |
| 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 = [] |
| |
| class Collect(object): |
| |
| 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") |
| |
| |
| 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")) |
| 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*", |
| ] |
| ) |
| |
| |
| @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*"] |
| ) |
| |
| |
| 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 |
| |
| |
| @pytest.mark.parametrize("plugin", ["catchlog", "capturelog"]) |
| def test_pytest_catchlog_deprecated(testdir, plugin): |
| testdir.makepyfile( |
| """ |
| def test_func(pytestconfig): |
| pytestconfig.pluginmanager.register(None, 'pytest_{}') |
| """.format( |
| plugin |
| ) |
| ) |
| res = testdir.runpytest() |
| assert res.ret == 0 |
| res.stdout.fnmatch_lines( |
| ["*pytest-*log plugin has been merged into the core*", "*1 passed, 1 warnings*"] |
| ) |
| |
| |
| 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() |