Add plugin enhancements: PluginStatus, PluginError, subscribe_plugin, config validation
- New: fmfuncs/plugin_status.py (9 states) - New: fmfuncs/plugin_error.py (6 exception classes) - Enhanced: bridges/plugin_bridge.py (subscribe_plugin) - Enhanced: bridges/plugin_network_bridge.py (setup_data_transfer, send_data) - Enhanced: services/plugin_service.py (config validation + status tracking) - Tests: 15/15 passing (10 original + 5 new)
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
"""Plugin system enhancement tests"""
|
||||
import pytest, asyncio, os, sys
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(__file__)))
|
||||
|
||||
from fmfuncs.plugin_status import PluginStatus
|
||||
from fmfuncs.plugin_error import (
|
||||
PluginError, PluginLoadError, PluginConfigError,
|
||||
PluginPermissionError, PluginCommandError
|
||||
)
|
||||
|
||||
class TestPluginStatus:
|
||||
def test_all_statuses(self):
|
||||
assert PluginStatus.UNLOADED == "unloaded"
|
||||
assert PluginStatus.RUNNING == "running"
|
||||
assert PluginStatus.ERROR == "error"
|
||||
assert len(list(PluginStatus)) >= 8
|
||||
|
||||
class TestPluginError:
|
||||
def test_base_error(self):
|
||||
e = PluginError("test message", "test_plugin")
|
||||
assert "test_plugin" in str(e)
|
||||
assert "test message" in str(e)
|
||||
|
||||
def test_error_without_plugin_name(self):
|
||||
e = PluginError("generic error")
|
||||
assert "unknown" in str(e)
|
||||
|
||||
def test_subclass_errors(self):
|
||||
for cls in [PluginLoadError, PluginConfigError, PluginPermissionError, PluginCommandError]:
|
||||
e = cls("msg", "p")
|
||||
assert isinstance(e, PluginError)
|
||||
|
||||
class TestPluginBridgeEnhancements:
|
||||
def test_subscribe_plugin_registers_handler(self):
|
||||
from bridges.plugin_bridge import PluginBridge
|
||||
from bridges.core_bridge import CoreBridge
|
||||
cb = CoreBridge()
|
||||
pb = PluginBridge(cb)
|
||||
pb.subscribe_plugin("test.topic", lambda msg: None, "test_plugin")
|
||||
assert "test.topic" in pb.plugin_subscribers
|
||||
Reference in New Issue
Block a user