Merge pull request #4531 from nicoddemus/remove-custom-collection-types

Remove PyCollector.makeitem
This commit is contained in:
Bruno Oliveira 2018-12-12 18:27:50 -02:00 committed by GitHub
commit 110fe2473f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 14 additions and 38 deletions

View File

@ -0,0 +1 @@
Removed deprecated ``PyCollector.makeitem`` method. This method was made public by mistake a long time ago.

View File

@ -58,17 +58,7 @@ Becomes:
exec("assert(1, 2)") # exec is used to avoid a top-level warning exec("assert(1, 2)") # exec is used to avoid a top-level warning
Using ``Class`` in custom Collectors
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.. deprecated:: 3.9
Using objects named ``"Class"`` as a way to customize the type of nodes that are collected in ``Collector``
subclasses has been deprecated. Users instead should use ``pytest_pycollect_makeitem`` to customize node types during
collection.
This issue should affect only advanced plugins who create new collection types, so if you see this warning
message please contact the authors so they can change the code.
``Config.warn`` and ``Node.warn`` ``Config.warn`` and ``Node.warn``
@ -280,6 +270,18 @@ Removed Features
As stated in our :ref:`backwards-compatibility` policy, deprecated features are removed only in major releases after As stated in our :ref:`backwards-compatibility` policy, deprecated features are removed only in major releases after
an appropriate period of deprecation has passed. an appropriate period of deprecation has passed.
Using ``Class`` in custom Collectors
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*Removed in version 4.0.*
Using objects named ``"Class"`` as a way to customize the type of nodes that are collected in ``Collector``
subclasses has been deprecated. Users instead should use ``pytest_pycollect_makeitem`` to customize node types during
collection.
This issue should affect only advanced plugins who create new collection types, so if you see this warning
message please contact the authors so they can change the code.
Metafunc.addcall Metafunc.addcall
~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~

View File

@ -87,9 +87,6 @@ RECORD_XML_PROPERTY = RemovedInPytest4Warning(
'"record_xml_property" is now deprecated.' '"record_xml_property" is now deprecated.'
) )
COLLECTOR_MAKEITEM = RemovedInPytest4Warning(
"pycollector makeitem was removed as it is an accidentially leaked internal api"
)
PYTEST_PLUGINS_FROM_NON_TOP_LEVEL_CONFTEST = RemovedInPytest4Warning( PYTEST_PLUGINS_FROM_NON_TOP_LEVEL_CONFTEST = RemovedInPytest4Warning(
"Defining pytest_plugins in a non-top-level conftest is deprecated, " "Defining pytest_plugins in a non-top-level conftest is deprecated, "

View File

@ -378,10 +378,6 @@ class PyCollector(PyobjMixin, nodes.Collector):
values.sort(key=lambda item: item.reportinfo()[:2]) values.sort(key=lambda item: item.reportinfo()[:2])
return values return values
def makeitem(self, name, obj):
warnings.warn(deprecated.COLLECTOR_MAKEITEM, stacklevel=2)
self._makeitem(name, obj)
def _makeitem(self, name, obj): def _makeitem(self, name, obj):
# assert self.ihook.fspath == self.fspath, self # assert self.ihook.fspath == self.fspath, self
return self.ihook.pytest_pycollect_makeitem(collector=self, name=name, obj=obj) return self.ihook.pytest_pycollect_makeitem(collector=self, name=name, obj=obj)

View File

@ -268,26 +268,6 @@ def test_call_fixture_function_deprecated():
assert fix() == 1 assert fix() == 1
def test_pycollector_makeitem_is_deprecated():
from _pytest.python import PyCollector
from _pytest.warning_types import RemovedInPytest4Warning
class PyCollectorMock(PyCollector):
"""evil hack"""
def __init__(self):
self.called = False
def _makeitem(self, *k):
"""hack to disable the actual behaviour"""
self.called = True
collector = PyCollectorMock()
with pytest.warns(RemovedInPytest4Warning):
collector.makeitem("foo", "bar")
assert collector.called
def test_fixture_named_request(testdir): def test_fixture_named_request(testdir):
testdir.copy_example() testdir.copy_example()
result = testdir.runpytest() result = testdir.runpytest()

View File

@ -808,7 +808,7 @@ class TestConftestCustomization(object):
modcol = testdir.getmodulecol("def _hello(): pass") modcol = testdir.getmodulecol("def _hello(): pass")
values = [] values = []
monkeypatch.setattr( monkeypatch.setattr(
pytest.Module, "makeitem", lambda self, name, obj: values.append(name) pytest.Module, "_makeitem", lambda self, name, obj: values.append(name)
) )
values = modcol.collect() values = modcol.collect()
assert "_hello" not in values assert "_hello" not in values