From a4e6a536cf61ff9114400f449cc6827f73fb0549 Mon Sep 17 00:00:00 2001 From: agatha Date: Sat, 14 Mar 2026 15:42:12 -0400 Subject: [PATCH] test: add discovery tests proving end-to-end plugin loading --- src/proxy_pool/plugins/discovery.py | 2 +- tests/unit/test_plugin_discovery.py | 40 +++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 tests/unit/test_plugin_discovery.py diff --git a/src/proxy_pool/plugins/discovery.py b/src/proxy_pool/plugins/discovery.py index 80795e5..66925b3 100644 --- a/src/proxy_pool/plugins/discovery.py +++ b/src/proxy_pool/plugins/discovery.py @@ -22,7 +22,7 @@ def discover_plugins( logger.warning("Plugin package '%s' not found, skipping", package) return - if hasattr(mod, "__path__"): + if not hasattr(mod, "__path__"): logger.warning( "Plugin package '%s' has no __path__ attribute, skipping", package ) diff --git a/tests/unit/test_plugin_discovery.py b/tests/unit/test_plugin_discovery.py new file mode 100644 index 0000000..f006f2d --- /dev/null +++ b/tests/unit/test_plugin_discovery.py @@ -0,0 +1,40 @@ +from proxy_pool.config import Settings, DatabaseSettings +from proxy_pool.plugins.discovery import discover_plugins +from proxy_pool.plugins.registry import PluginRegistry + + +def test_discovers_builtin_parsers(): + settings = Settings( + secret_key="test", + db=DatabaseSettings(url="postgresql+asyncpg://localhost/test"), + ) + registry = PluginRegistry() + + discover_plugins("proxy_pool.plugins.builtin.parsers", registry, settings) + + assert "plaintext" in registry.parsers + + +def test_discovers_builtin_checkers(): + settings = Settings( + secret_key="test", + db=DatabaseSettings(url="postgresql+asyncpg://localhost/test"), + ) + registry = PluginRegistry() + + discover_plugins("proxy_pool.plugins.builtin.checkers", registry, settings) + + assert len(registry.checkers) > 0 + assert registry.checkers[0].name == "tcp_connect" + + +def test_skips_unconfigured_notifiers(): + settings = Settings( + secret_key="test", + db=DatabaseSettings(url="postgresql+asyncpg://localhost/test"), + ) + registry = PluginRegistry() + + discover_plugins("proxy_pool.plugins.builtin.notifiers", registry, settings) + + assert len(registry.notifiers) == 0 \ No newline at end of file