From 0b1ba88f49421e0b0ddbda752727ef11e17d7500 Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Mon, 19 Feb 2024 15:58:59 -0300 Subject: [PATCH] PluginManager.get_plugins no longer returns None for blocked plugins --- changelog/481.bugfix.rst | 1 + src/pluggy/_manager.py | 2 +- testing/test_pluginmanager.py | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 changelog/481.bugfix.rst diff --git a/changelog/481.bugfix.rst b/changelog/481.bugfix.rst new file mode 100644 index 00000000..4890c352 --- /dev/null +++ b/changelog/481.bugfix.rst @@ -0,0 +1 @@ +``PluginManager.get_plugins()`` no longer returns ``None`` for blocked plugins. diff --git a/src/pluggy/_manager.py b/src/pluggy/_manager.py index ce1e107a..a9eb4a48 100644 --- a/src/pluggy/_manager.py +++ b/src/pluggy/_manager.py @@ -291,7 +291,7 @@ def parse_hookspec_opts( def get_plugins(self) -> set[Any]: """Return a set of all registered plugin objects.""" - return set(self._name2plugin.values()) + return {x for x in self._name2plugin.values() if x is not None} def is_registered(self, plugin: _Plugin) -> bool: """Return whether the plugin is already registered.""" diff --git a/testing/test_pluginmanager.py b/testing/test_pluginmanager.py index d3bcac4e..9b570f84 100644 --- a/testing/test_pluginmanager.py +++ b/testing/test_pluginmanager.py @@ -100,15 +100,19 @@ class A: assert name is not None assert pm.is_registered(a1) assert not pm.is_blocked(name) + assert pm.get_plugins() == {a1} + pm.set_blocked(name) assert pm.is_blocked(name) assert not pm.is_registered(a1) + assert pm.get_plugins() == set() pm.set_blocked("somename") assert pm.is_blocked("somename") assert not pm.register(A(), "somename") pm.unregister(name="somename") assert pm.is_blocked("somename") + assert pm.get_plugins() == set() # Unblock. assert not pm.unblock("someothername")