Repository navigation
Conversation
Passing None to PluginManager.register() is silently ignored since pytest-dev#752. Emit a DeprecationWarning (pointing at the caller) so users can migrate before it becomes an error in a future version. Fixes pytest-dev#790
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #790.
Problem
Since #752,
PluginManager.register(None)is silently ignored (it used to misbehave, #731, and raising broke devpi's tests, #749). In #749 the follow-up agreed was to add a deprecation warning so callers can migrate beforeNonebecomes an error.Change
register(None)still returnsNoneand registers nothing, but now emits aDeprecationWarningwithstacklevel=2, so the warning points at the caller'sregister()line:The
registerdocstring mentions the deprecation.test_register_ignores_noneasserts the warning (message, a single record, and that it is attributed to the calling file) in addition to the existing "ignored" assertions.Towncrier fragment
changelog/790.removal.rst("Deprecations and Removals").I used a plain
DeprecationWarning, as the hookspec-without-selfdeprecation does. Happy to switch to aPluggyWarningsubclass if you prefer a pluggy-specific category.Verification
uv run pytest: 219 passed._manager.pychange reverted, the updated test fails:Failed: DID NOT WARN. No warnings of type (<class 'DeprecationWarning'>,) were emitted.uv run pre-commit runon the changed files: ruff check/format, autoflake, pyupgrade, blacken-docs and mypy all pass.