summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel MariƱez <marinezbay94@gmail.com>2020-10-06 10:48:34 -0400
committerGitHub <noreply@github.com>2020-10-06 11:48:34 -0300
commit13ddec9a006d53bd5144459b27f367e03f8fb377 (patch)
tree70a7f167ab4d65c0ad49434e3fc6e7490109537e
parentf54ec30a6d7969eba6a2003b4409d33828cd406d (diff)
downloadpytest-13ddec9a006d53bd5144459b27f367e03f8fb377.tar.gz
Add alias clarification to deprecation warning (#7829)
Co-authored-by: Bruno Oliveira <nicoddemus@gmail.com>
-rw-r--r--changelog/7815.doc.rst1
-rw-r--r--src/_pytest/deprecated.py7
-rw-r--r--src/_pytest/fixtures.py17
-rw-r--r--src/pytest/__init__.py2
-rw-r--r--testing/deprecated_test.py19
-rw-r--r--testing/python/fixtures.py2
6 files changed, 40 insertions, 8 deletions
diff --git a/changelog/7815.doc.rst b/changelog/7815.doc.rst
new file mode 100644
index 000000000..d799bb425
--- /dev/null
+++ b/changelog/7815.doc.rst
@@ -0,0 +1 @@
+Improve deprecation warning message for ``pytest._fillfuncargs()``.
diff --git a/src/_pytest/deprecated.py b/src/_pytest/deprecated.py
index ecdb60d37..fd00fe2d6 100644
--- a/src/_pytest/deprecated.py
+++ b/src/_pytest/deprecated.py
@@ -20,9 +20,10 @@ DEPRECATED_EXTERNAL_PLUGINS = {
}
-FILLFUNCARGS = PytestDeprecationWarning(
- "The `_fillfuncargs` function is deprecated, use "
- "function._request._fillfixtures() instead if you cannot avoid reaching into internals."
+FILLFUNCARGS = UnformattedWarning(
+ PytestDeprecationWarning,
+ "{name} is deprecated, use "
+ "function._request._fillfixtures() instead if you cannot avoid reaching into internals.",
)
PYTEST_COLLECT_MODULE = UnformattedWarning(
diff --git a/src/_pytest/fixtures.py b/src/_pytest/fixtures.py
index f00f534d8..a407f626d 100644
--- a/src/_pytest/fixtures.py
+++ b/src/_pytest/fixtures.py
@@ -350,9 +350,22 @@ def reorder_items_atscope(
return items_done
+def _fillfuncargs(function: "Function") -> None:
+ """Fill missing fixtures for a test function, old public API (deprecated)."""
+ warnings.warn(FILLFUNCARGS.format(name="pytest._fillfuncargs()"), stacklevel=2)
+ _fill_fixtures_impl(function)
+
+
def fillfixtures(function: "Function") -> None:
- """Fill missing funcargs for a test function."""
- warnings.warn(FILLFUNCARGS, stacklevel=2)
+ """Fill missing fixtures for a test function (deprecated)."""
+ warnings.warn(
+ FILLFUNCARGS.format(name="_pytest.fixtures.fillfixtures()"), stacklevel=2
+ )
+ _fill_fixtures_impl(function)
+
+
+def _fill_fixtures_impl(function: "Function") -> None:
+ """Internal implementation to fill fixtures on the given function object."""
try:
request = function._request
except AttributeError:
diff --git a/src/pytest/__init__.py b/src/pytest/__init__.py
index c4c281918..a9c1ee028 100644
--- a/src/pytest/__init__.py
+++ b/src/pytest/__init__.py
@@ -11,7 +11,7 @@ from _pytest.config import hookspec
from _pytest.config import main
from _pytest.config import UsageError
from _pytest.debugging import pytestPDB as __pytestPDB
-from _pytest.fixtures import fillfixtures as _fillfuncargs
+from _pytest.fixtures import _fillfuncargs
from _pytest.fixtures import fixture
from _pytest.fixtures import FixtureLookupError
from _pytest.fixtures import yield_fixture
diff --git a/testing/deprecated_test.py b/testing/deprecated_test.py
index eb5d527f5..5fe9ad730 100644
--- a/testing/deprecated_test.py
+++ b/testing/deprecated_test.py
@@ -1,3 +1,4 @@
+import re
import warnings
from unittest import mock
@@ -26,11 +27,27 @@ def test_external_plugins_integrated(testdir, plugin):
def test_fillfuncargs_is_deprecated() -> None:
with pytest.warns(
pytest.PytestDeprecationWarning,
- match="The `_fillfuncargs` function is deprecated",
+ match=re.escape(
+ "pytest._fillfuncargs() is deprecated, use "
+ "function._request._fillfixtures() instead if you cannot avoid reaching into internals."
+ ),
):
pytest._fillfuncargs(mock.Mock())
+def test_fillfixtures_is_deprecated() -> None:
+ import _pytest.fixtures
+
+ with pytest.warns(
+ pytest.PytestDeprecationWarning,
+ match=re.escape(
+ "_pytest.fixtures.fillfixtures() is deprecated, use "
+ "function._request._fillfixtures() instead if you cannot avoid reaching into internals."
+ ),
+ ):
+ _pytest.fixtures.fillfixtures(mock.Mock())
+
+
def test_minus_k_dash_is_deprecated(testdir) -> None:
threepass = testdir.makepyfile(
test_threepass="""
diff --git a/testing/python/fixtures.py b/testing/python/fixtures.py
index c8b200fcc..bd82125e7 100644
--- a/testing/python/fixtures.py
+++ b/testing/python/fixtures.py
@@ -87,7 +87,7 @@ def test_getfuncargnames_staticmethod_partial():
class TestFillFixtures:
def test_fillfuncargs_exposed(self):
# used by oejskit, kept for compatibility
- assert pytest._fillfuncargs == fixtures.fillfixtures
+ assert pytest._fillfuncargs == fixtures._fillfuncargs
def test_funcarg_lookupfails(self, testdir):
testdir.copy_example()