Orchestrata Ultimate › Tests › Reference › plugin

Tests reference — tests/plugin

tests/plugin — 23 test modules, 315 test functions. Source tree: tests/plugin at commit 8a2cb42ad. Generated from the tests AST snapshot by scripts/gen-data-pages.py.

Prose pending.

Modules

Module Tests Covers
_example_volk_plugin.py 0 1
test_config.py 4 1
test_context_pure.py 19 4
test_discovery.py 4 3
test_discovery_extended.py 17 7
test_exceptions.py 12 1
test_governance.py 15 4
test_install_plugin_git.py 4 3
test_interfaces.py 54 2
test_loader.py 9 2
test_loader_extended.py 24 3
test_manager.py 7 5
test_manager_extended.py 19 6
test_manifest.py 12 2
test_plugin_config.py 6 1
test_plugin_registration_wiring.py 6 3
test_registration.py 18 2
test_registration_extended.py 39 2
test_registry.py 22 5
test_sdk.py 17 6
test_sdk_volk_registry_wiring.py 3 3
test_tool_registry_adapter.py 4 3

Module details

tests/plugin/_example_volk_plugin.py

source · 0 tests · 46 lines

A real reference plugin used by the SPEC-015 registration-wiring test.

Covers: plugin.manifest

tests/plugin/test_config.py

source · 4 tests · 85 lines

Tests for plugin.config.

Covers: plugin.config

Kind Name Line Description
class TestPluginResourceLimits 30
method TestPluginResourceLimits.test_defaults 31
class TestPluginConfig 38
method TestPluginConfig.test_defaults 39
method TestPluginConfig.test_from_dict 52
method TestPluginConfig.test_from_dict_defaults 81

tests/plugin/test_context_pure.py

source · 19 tests · 422 lines

Test Standards Compliance (see AGENTS.md § Test Standards):

Covers: plugin.context, plugin.exceptions, plugin.manifest, plugin.registries

Kind Name Line Description
class TestPluginContextGetConfig 56
method TestPluginContextGetConfig.test_get_existing_key 57
method TestPluginContextGetConfig.test_get_missing_key_with_default 68
method TestPluginContextGetConfig.test_get_missing_key_no_default 79
class TestPluginContextResolve 90
method TestPluginContextResolve.test_resolve_with_capability 91
method TestPluginContextResolve.test_resolve_without_capability_raises 102
class TestPluginContextCleanup 116
method TestPluginContextCleanup.test_cleanup_clears_registrations 117
method TestPluginContextCleanup.test_cleanup_unregisters_from_wired_volk_registry 142
class TestPluginContextAttributes 170
method TestPluginContextAttributes.test_attributes_set_from_constructor 171
method TestPluginContextAttributes.test_plugin_dir_defaults_to_cwd 183
class TestPluginContextRegisterVolk 194
method TestPluginContextRegisterVolk.test_register_no_registry 196
method TestPluginContextRegisterVolk.test_register_with_registry 214
class TestPluginContextRegisterTool 241
method TestPluginContextRegisterTool.test_register_no_registry 243
method TestPluginContextRegisterTool.test_register_with_registry 261
class TestPluginContextRegisterChannel 287
method TestPluginContextRegisterChannel.test_register_no_registry 289
method TestPluginContextRegisterChannel.test_register_with_registry 310
class TestPluginContextSubscribeEvent 339
method TestPluginContextSubscribeEvent.test_subscribe_no_bus 341
method TestPluginContextSubscribeEvent.test_subscribe_with_bus 359
class TestPluginContextEmitEvent 388
method TestPluginContextEmitEvent.test_emit_no_bus 390
method TestPluginContextEmitEvent.test_emit_with_bus 403

tests/plugin/test_discovery.py

source · 4 tests · 79 lines

Tests for plugin.discovery.

Covers: plugin.discovery, plugin.exceptions, plugin.registry

Kind Name Line Description
function test_discover_plugins_calls_loader 43
class TestInstallPlugin 52
method TestInstallPlugin.test_install_from_local_dir 53
method TestInstallPlugin.test_install_from_nonexistent_raises 66
method TestInstallPlugin.test_install_from_file_raises 74

tests/plugin/test_discovery_extended.py

source · 17 tests · 246 lines

Extended tests for plugin.discovery — async lifecycle functions.

Covers: plugin.context, plugin.discovery, plugin.exceptions, plugin.interfaces, plugin.loader, plugin.manifest, plugin.registry

Kind Name Line Description
class TestDiscoverPlugins 74
method TestDiscoverPlugins.test_discover_plugins_empty 75
method TestDiscoverPlugins.test_discover_plugins_with_local 80
class TestInstallPlugin 96
method TestInstallPlugin.test_install_from_local_dir 97
method TestInstallPlugin.test_install_nonexistent_raises 107
method TestInstallPlugin.test_install_file_raises 113
class TestUninstallPlugin 120
method TestUninstallPlugin.test_uninstall_existing 122
method TestUninstallPlugin.test_uninstall_with_plugin_calls_stop 128
method TestUninstallPlugin.test_uninstall_not_found_raises 141
class TestEnablePlugin 146
method TestEnablePlugin.test_enable_disabled_plugin 148
method TestEnablePlugin.test_enable_already_active_noop 169
method TestEnablePlugin.test_enable_not_found_raises 176
class TestDisablePlugin 181
method TestDisablePlugin.test_disable_active_plugin 183
method TestDisablePlugin.test_disable_not_found_raises 197
class TestUnloadPlugin 202
method TestUnloadPlugin.test_unload_loaded_plugin 204
method TestUnloadPlugin.test_unload_not_loaded_raises 217
class TestReloadPlugin 222
method TestReloadPlugin.test_reload_existing 224
method TestReloadPlugin.test_reload_not_found_raises 244

tests/plugin/test_exceptions.py

source · 12 tests · 99 lines

Tests for plugin exceptions.

Covers: plugin.exceptions

Kind Name Line Description
class TestPluginExceptions 39 Tests for plugin exception hierarchy.
method TestPluginExceptions.test_plugin_error_default 42
method TestPluginExceptions.test_plugin_error_with_context 47
method TestPluginExceptions.test_plugin_error_is_base_exception 52
method TestPluginExceptions.test_plugin_manifest_error 56
method TestPluginExceptions.test_plugin_load_error 61
method TestPluginExceptions.test_plugin_lifecycle_error 66
method TestPluginExceptions.test_plugin_dependency_error 71
method TestPluginExceptions.test_plugin_circular_dependency_error 76
method TestPluginExceptions.test_capability_denied_error 81
method TestPluginExceptions.test_plugin_config_error 86
method TestPluginExceptions.test_plugin_not_found_error 91
method TestPluginExceptions.test_plugin_registration_error 96

tests/plugin/test_governance.py

source · 15 tests · 136 lines

Tests for plugin.governance module.

Covers: plugin.config, plugin.governance, plugin.interfaces, plugin.manifest

Kind Name Line Description
function test_is_plugin_allowed_open_mode 49
function test_is_plugin_allowed_blocklisted 53
function test_is_plugin_allowed_explicit_allowed 57
function test_is_plugin_allowed_explicit_denied 61
function test_is_capability_granted_when_declared 70
function test_is_capability_granted_when_not_declared 74
function test_is_capability_granted_empty_list 78
function test_can_register_volk_unreserved 87
function test_can_register_volk_reserved 91
function test_can_register_tool_unreserved 101
function test_can_register_tool_reserved 105
function test_get_resource_limit_memory 116
function test_get_resource_limit_api_calls 122
function test_get_resource_limit_events 128
function test_get_resource_limit_invalid_type 134

tests/plugin/test_install_plugin_git.py

source · 4 tests · 107 lines

SPEC-015 plugin install from git: install_plugin clones a real git

Covers: plugin.discovery, plugin.exceptions, plugin.registry

Kind Name Line Description
function test_install_plugin_from_git 59
function test_install_plugin_from_git_is_idempotent 78
function test_install_plugin_rejects_unsupported_source 90
function test_install_plugin_git_clone_failure_is_reported 98

tests/plugin/test_interfaces.py

source · 54 tests · 754 lines

Tests for orchestrata_ultimate.plugin.interfaces.

Covers: plugin.interfaces, core.interfaces/ (package)

Kind Name Line Description
function test_plugin_capability_values 54
function test_plugin_capability_membership_and_count 66
function test_plugin_capability_lookup_by_value 81
function test_plugin_capability_invalid_value_raises 86
function test_plugin_status_values 96
function test_plugin_status_membership_and_count 104
function test_plugin_status_lookup_by_value 115
function test_plugin_status_invalid_value_raises 119
function test_resource_type_values 129
function test_resource_type_is_a_real_str_subclass 135 StrEnum members compare equal to plain strings directly (no .value
function test_resource_type_lookup_by_value 144
function test_resource_type_invalid_value_raises 148
function test_resource_type_membership_and_count 153
function test_plugin_resource_usage_defaults 167
function test_plugin_resource_usage_custom_values 175
function test_plugin_resource_usage_equality_by_value 188
function test_plugin_info_requires_name_and_version 202
function test_plugin_info_defaults 211
function test_plugin_info_default_factories_are_independent_per_instance 227 Regression guard for the classic dataclass mutable-default trap:
function test_plugin_info_full_construction_and_field_readback 250
function test_plugin_info_error_status_with_message 283
function test_protocol_cannot_be_instantiated 327
function test_protocol_is_not_runtime_checkable 333 None of these protocols carry (or inherit) @runtime_checkable, so
function test_ipluginmanager_inherits_runtime_checkable_from_icomponent 341 IPluginManager itself is declared with no @runtime_checkable, but
function test_ipluginmanager_isinstance_never_matches_a_real_implementation 412 Structural isinstance() checks against IPluginManager fold in every
function test_ipluginmanager_isinstance_matches_once_traces_attr_is_present 431 Proves why the previous test is False: adding the otherwise
function test_ivolk_registry_has_register_volk 460
function test_ivolk_registry_register_volk_body_is_a_noop 475
function test_itool_registry_has_register_tool 489
function test_itool_registry_register_tool_body_is_a_noop 499
function test_iprovider_registry_has_register_provider 515
function test_iprovider_registry_register_provider_body_is_a_noop 534
function test_ichannel_registry_has_register_channel 545
function test_ichannel_registry_register_channel_body_is_a_noop 555
function test_ievent_bus_has_subscribe_and_emit 572
function test_ievent_bus_subscribe_body_returns_none_despite_str_annotation 584 subscribe() is annotated -> str (a subscription id) but the
function test_ievent_bus_emit_body_is_a_noop 598
function test_iplugin_has_lifecycle_methods 609
function test_iplugin_initialize_body_is_a_noop 625
function test_iplugin_start_body_is_a_noop 631
function test_iplugin_stop_body_is_a_noop 637
function test_iplugin_get_manifest_is_sync_and_body_is_a_noop 643 Unlike the rest of IPlugin, get_manifest() is a plain (non-async)
function test_ipluginmanager_has_full_lifecycle_and_registry_surface 657
function test_ipluginmanager_inherits_icomponent 675
function test_ipluginmanager_discover_plugins_body_is_a_noop 697
function test_ipluginmanager_load_plugin_body_is_a_noop 703
function test_ipluginmanager_unload_plugin_body_is_a_noop 709
function test_ipluginmanager_reload_plugin_body_is_a_noop 715
function test_ipluginmanager_get_plugin_is_sync_and_body_is_a_noop 721
function test_ipluginmanager_list_plugins_is_sync_and_body_is_a_noop 727
function test_ipluginmanager_enable_plugin_body_is_a_noop 733
function test_ipluginmanager_disable_plugin_body_is_a_noop 739
function test_ipluginmanager_install_plugin_body_is_a_noop 745
function test_ipluginmanager_uninstall_plugin_body_is_a_noop 751

tests/plugin/test_loader.py

source · 9 tests · 85 lines

Test Standards Compliance (see AGENTS.md § Test Standards):

Covers: plugin.loader, plugin.manifest

Kind Name Line Description
class TestPluginLoaderConstruction 29
method TestPluginLoaderConstruction.test_default_dirs 30
method TestPluginLoaderConstruction.test_custom_dirs 34
method TestPluginLoaderConstruction.test_default_prefixes 38
class TestValidateModulePath 43
method TestValidateModulePath.test_allowed_prefix 44
method TestValidateModulePath.test_blocked_segment_raises 48
method TestValidateModulePath.test_no_allowed_prefix_raises 53
class TestPluginLoaderTopologicalSort 59
method TestPluginLoaderTopologicalSort.test_empty_list 60
method TestPluginLoaderTopologicalSort.test_single_plugin 65
method TestPluginLoaderTopologicalSort.test_linear_dependencies 73

tests/plugin/test_loader_extended.py

source · 24 tests · 417 lines

Extended tests for plugin.loader — discover_local, discover_installed,

Covers: plugin.exceptions, plugin.loader, plugin.manifest

Kind Name Line Description
class TestDiscoverLocal 69
method TestDiscoverLocal.test_empty_dirs 70
method TestDiscoverLocal.test_skips_non_directories 75
method TestDiscoverLocal.test_skips_dirs_without_manifest 83
method TestDiscoverLocal.test_discovers_valid_plugin 91
method TestDiscoverLocal.test_skips_invalid_manifest 105
method TestDiscoverLocal.test_multiple_plugins_sorted 115
class TestDiscoverInstalled 129 Real pip-entry-point discovery, exercised via genuine dist-info metadata.
method TestDiscoverInstalled.test_no_entry_points_returns_empty 132
method TestDiscoverInstalled.test_discovers_valid_entry_point 137
method TestDiscoverInstalled.test_entry_point_without_get_manifest_is_skipped 170
method TestDiscoverInstalled.test_entry_point_load_failure_is_skipped 191
method TestDiscoverInstalled.test_entry_points_query_failure_returns_empty 213
class TestDiscoverAll 237
method TestDiscoverAll.test_local_only 238
method TestDiscoverAll.test_deduplicates_local_over_installed 251
method TestDiscoverAll.test_installed_included_when_no_local_conflict 264
class TestLoadPluginClass 295
method TestLoadPluginClass.test_invalid_format_raises 296
method TestLoadPluginClass.test_import_error_raises 306
method TestLoadPluginClass.test_class_not_found_raises 316
method TestLoadPluginClass.test_loads_existing_class 341
class TestTopologicalSort 367
method TestTopologicalSort.test_empty_list 368
method TestTopologicalSort.test_single_plugin 371
method TestTopologicalSort.test_linear_dependencies 375
method TestTopologicalSort.test_circular_dependency_raises 386
method TestTopologicalSort.test_missing_dependency_raises 398
method TestTopologicalSort.test_already_visited_skipped 407

tests/plugin/test_manager.py

source · 7 tests · 117 lines

Test Standards Compliance (see AGENTS.md § Test Standards):

Covers: plugin.context, plugin.exceptions, plugin.manager, plugin.manifest, core.interfaces/ (package)

Kind Name Line Description
class TestPluginManagerConstruction 32
method TestPluginManagerConstruction.test_default_init 33
method TestPluginManagerConstruction.test_get_metadata 38
method TestPluginManagerConstruction.test_get_health_not_started 44
class TestPluginManagerUnload 67
method TestPluginManagerUnload.test_unload_loaded_plugin 69
method TestPluginManagerUnload.test_unload_not_found_raises 85
class TestPluginManagerReload 93
method TestPluginManagerReload.test_reload_stops_old_plugin 95
method TestPluginManagerReload.test_reload_not_found_raises 112

tests/plugin/test_manager_extended.py

source · 19 tests · 246 lines

Extended tests for plugin.manager — full lifecycle and delegation.

Covers: plugin.context, plugin.exceptions, plugin.interfaces, plugin.manager, plugin.manifest, core.interfaces/ (package)

Kind Name Line Description
class TestPluginManagerLifecycle 52
method TestPluginManagerLifecycle.test_initialize_empty_config 54
method TestPluginManagerLifecycle.test_initialize_with_config 59
method TestPluginManagerLifecycle.test_start_stop_no_plugins 64
method TestPluginManagerLifecycle.test_start_with_active_plugin 72
method TestPluginManagerLifecycle.test_start_error_sets_error_status 90
class TestPluginManagerHealth 115
method TestPluginManagerHealth.test_health_uninitialized 117
method TestPluginManagerHealth.test_health_healthy 121
method TestPluginManagerHealth.test_health_degraded 127
class TestPluginManagerMetadata 143
method TestPluginManagerMetadata.test_metadata 144
class TestPluginManagerDiscovery 150
method TestPluginManagerDiscovery.test_discover_plugins_empty 152
method TestPluginManagerDiscovery.test_discover_plugins_with_dir 157
class TestPluginManagerLoad 171
method TestPluginManagerLoad.test_load_not_discovered_raises 173
method TestPluginManagerLoad.test_list_plugins_empty 179
method TestPluginManagerLoad.test_get_plugin_none 183
class TestPluginManagerInstallUninstall 187
method TestPluginManagerInstallUninstall.test_install_and_uninstall 189
method TestPluginManagerInstallUninstall.test_uninstall_not_found_raises 202
class TestPluginManagerEnableDisable 207
method TestPluginManagerEnableDisable.test_disable_plugin 209
method TestPluginManagerEnableDisable.test_enable_plugin 230
method TestPluginManagerEnableDisable.test_disable_not_found_raises 244

tests/plugin/test_manifest.py

source · 12 tests · 145 lines

Tests for plugin/manifest.py — real implementation.

Covers: plugin.exceptions, plugin.manifest

Kind Name Line Description
class TestKGSchemaExtension 31
method TestKGSchemaExtension.test_defaults 32
class TestPluginManifestFromDict 41
method TestPluginManifestFromDict.test_minimal_valid 42
method TestPluginManifestFromDict.test_full_valid 53
method TestPluginManifestFromDict.test_missing_required_fields 79
method TestPluginManifestFromDict.test_missing_name 83
method TestPluginManifestFromDict.test_invalid_name 87
method TestPluginManifestFromDict.test_invalid_version 97
method TestPluginManifestFromDict.test_invalid_capability 107
class TestPluginManifestFromYaml 119
method TestPluginManifestFromYaml.test_valid_yaml 120
method TestPluginManifestFromYaml.test_missing_file 131
method TestPluginManifestFromYaml.test_malformed_yaml 135
method TestPluginManifestFromYaml.test_non_dict_yaml 141

tests/plugin/test_plugin_config.py

source · 6 tests · 80 lines

Tests for plugin.config dataclasses.

Covers: plugin.config

Kind Name Line Description
function test_plugin_resource_limits_defaults 29
function test_plugin_config_defaults 36
function test_plugin_config_from_dict_minimal 49
function test_plugin_config_from_dict_with_limits 57
function test_plugin_config_from_dict_with_prefixes 71
function test_plugin_config_from_dict_preserves_none_prefixes 77

tests/plugin/test_plugin_registration_wiring.py

source · 6 tests · 140 lines

SPEC-015 runtime: a loaded plugin's register_volk reaches a wired registry.

Covers: plugin.config, plugin.manager, plugin.registries

Kind Name Line Description
function test_loaded_plugin_registers_volk_into_wired_registry 34
function test_unload_plugin_unregisters_its_volk_from_the_registry 51
function test_register_volk_is_noop_without_registry 71
function test_volk_registry_is_queryable 82
function test_volk_registry_unregister_removes_the_alias 120
function test_volk_registry_unregister_unknown_alias_is_not_an_error 136

tests/plugin/test_registration.py

source · 18 tests · 297 lines

Tests for plugin.registration helpers.

Covers: plugin.exceptions, plugin.registration

Kind Name Line Description
class TestRegisterVolk 40
method TestRegisterVolk.test_register_no_registry 41
method TestRegisterVolk.test_duplicate_raises 50
class TestRegisterTool 58
method TestRegisterTool.test_register_no_registry 59
method TestRegisterTool.test_duplicate_raises 74
class TestRegisterProvider 89
method TestRegisterProvider.test_register_no_registry 90
method TestRegisterProvider.test_duplicate_raises 98
class TestRegisterChannel 106
method TestRegisterChannel.test_register_no_registry 107
method TestRegisterChannel.test_duplicate_raises 121
class TestRegisterRules 135
method TestRegisterRules.test_register_rules 136
class TestSubscribeEvent 144
method TestSubscribeEvent.test_subscribe_no_bus 145
class TestEmitEvent 155
method TestEmitEvent.test_emit_no_bus 156
method TestEmitEvent.test_emit_with_bus 161
class TestRegisterKGSchema 177
method TestRegisterKGSchema.test_register_kg_schema 178
class TestSubscribeEventWithBus 184
method TestSubscribeEventWithBus.test_subscribe_with_bus 185
class TestRegisterVolkWithRegistry 205
method TestRegisterVolkWithRegistry.test_register_with_registry 206
class TestRegisterToolWithRegistry 229
method TestRegisterToolWithRegistry.test_register_with_registry 230
class TestRegisterProviderWithRegistry 255
method TestRegisterProviderWithRegistry.test_register_with_registry 256
class TestRegisterChannelWithRegistry 277
method TestRegisterChannelWithRegistry.test_register_with_registry 278

tests/plugin/test_registration_extended.py

source · 39 tests · 514 lines

Extended tests for plugin.registration — edge cases, state, errors, logs.

Covers: plugin.exceptions, plugin.registration

Kind Name Line Description
class TestRegisterVolkExtended 97
method TestRegisterVolkExtended.test_register_multiple_volks 98
method TestRegisterVolkExtended.test_register_no_registry_logs_warning 128
method TestRegisterVolkExtended.test_duplicate_error_context 136
method TestRegisterVolkExtended.test_handler_passed_to_registry 149
method TestRegisterVolkExtended.test_info_log_on_success 161
class TestRegisterToolExtended 178
method TestRegisterToolExtended.test_qualified_name_format 179
method TestRegisterToolExtended.test_register_multiple_tools 189
method TestRegisterToolExtended.test_duplicate_qualified_name 204
method TestRegisterToolExtended.test_no_registry_logs_warning 215
method TestRegisterToolExtended.test_schema_and_handler_passed_to_registry 225
class TestRegisterProviderExtended 240
method TestRegisterProviderExtended.test_register_multiple_providers 241
method TestRegisterProviderExtended.test_duplicate_error_context 249
method TestRegisterProviderExtended.test_no_registry_logs_warning 258
method TestRegisterProviderExtended.test_provider_instance_passed_to_registry 266
method TestRegisterProviderExtended.test_info_log_on_success 274
class TestRegisterChannelExtended 283
method TestRegisterChannelExtended.test_register_multiple_channels 284
method TestRegisterChannelExtended.test_duplicate_error_context 296
method TestRegisterChannelExtended.test_no_registry_logs_warning 307
method TestRegisterChannelExtended.test_handlers_passed_to_registry 317
method TestRegisterChannelExtended.test_info_log_on_success 333
class TestRegisterRulesExtended 344
method TestRegisterRulesExtended.test_register_multiple_rules 345
method TestRegisterRulesExtended.test_register_empty_rules 353
method TestRegisterRulesExtended.test_rules_appended_to_existing 361
class TestRegisterKGSchemaExtended 368
method TestRegisterKGSchemaExtended.test_register_empty_schema 369
method TestRegisterKGSchemaExtended.test_register_multiple_types 376
class TestSubscribeEventExtended 384
method TestSubscribeEventExtended.test_subscribe_no_bus_generates_uuid 385
method TestSubscribeEventExtended.test_subscribe_no_bus_logs_warning 394
method TestSubscribeEventExtended.test_subscribe_with_bus_returns_bus_id 402
method TestSubscribeEventExtended.test_subscribe_logs_info 411
method TestSubscribeEventExtended.test_multiple_subscriptions 419
class TestEmitEventExtended 430
method TestEmitEventExtended.test_emit_namespaces_event 431
method TestEmitEventExtended.test_emit_no_bus_logs_warning 437
method TestEmitEventExtended.test_emit_logs_info 444
method TestEmitEventExtended.test_emit_empty_payload 451
method TestEmitEventExtended.test_emit_with_different_plugins 457
class TestRegistrationStateManagement 468
method TestRegistrationStateManagement.test_lists_are_mutated_in_place 469
method TestRegistrationStateManagement.test_separate_plugins_isolated_state 486
method TestRegistrationStateManagement.test_registered_items_not_removed_on_subsequent_call 495
method TestRegistrationStateManagement.test_tool_qualification_prevents_same_name_twice 502

tests/plugin/test_registry.py

source · 22 tests · 191 lines

Tests for plugin.registry.

Covers: plugin.context, plugin.exceptions, plugin.interfaces, plugin.manifest, plugin.registry

Kind Name Line Description
class TestPluginRegistryRegister 68
method TestPluginRegistryRegister.test_register_plugin 69
method TestPluginRegistryRegister.test_register_duplicate_raises 75
method TestPluginRegistryRegister.test_register_discovered 81
method TestPluginRegistryRegister.test_register_discovered_does_not_overwrite 87
class TestPluginRegistryUnregister 95
method TestPluginRegistryUnregister.test_unregister_plugin 96
method TestPluginRegistryUnregister.test_unregister_not_found_raises 103
class TestPluginRegistryGetters 108
method TestPluginRegistryGetters.test_get_plugin 109
method TestPluginRegistryGetters.test_get_plugin_none 114
method TestPluginRegistryGetters.test_get_info 117
method TestPluginRegistryGetters.test_get_info_none 125
method TestPluginRegistryGetters.test_get_manifest 128
method TestPluginRegistryGetters.test_get_manifest_none 133
method TestPluginRegistryGetters.test_get_context 136
method TestPluginRegistryGetters.test_get_context_none 141
class TestPluginRegistryList 145
method TestPluginRegistryList.test_list_plugins_empty 146
method TestPluginRegistryList.test_list_plugins 149
class TestPluginRegistrySetStatus 159
method TestPluginRegistrySetStatus.test_set_status 160
method TestPluginRegistrySetStatus.test_set_status_not_found 168
class TestPluginRegistryContains 173
method TestPluginRegistryContains.test_contains_true 174
method TestPluginRegistryContains.test_contains_false 179
class TestPluginRegistryCount 183
method TestPluginRegistryCount.test_count_empty 184
method TestPluginRegistryCount.test_count_multiple 187

tests/plugin/test_sdk.py

source · 17 tests · 218 lines

Tests for PluginSDK facade.

Covers: plugin.config, plugin.context, plugin.exceptions, plugin.interfaces, plugin.manifest, plugin.sdk

Kind Name Line Description
class TestPluginSDK 34 Tests for PluginSDK.
method TestPluginSDK.test_init_default 37
method TestPluginSDK.test_init_with_config 41
method TestPluginSDK.test_info_not_found 46
method TestPluginSDK.test_list_all_empty 50
method TestPluginSDK.test_active_plugins_empty 54
method TestPluginSDK.test_active_plugins_filters 58
method TestPluginSDK.test_active_plugins_ignores_inactive 74
method TestPluginSDK.test_discover_empty 88
method TestPluginSDK.test_start_all 94
method TestPluginSDK.test_stop_all 100
class TestPluginSDKLoad 124
method TestPluginSDKLoad.test_load_not_found_raises 126
class TestPluginSDKUnload 132
method TestPluginSDKUnload.test_unload 134
class TestPluginSDKReload 149
method TestPluginSDKReload.test_reload_stops_old_plugin 151
class TestPluginSDKEnable 166
method TestPluginSDKEnable.test_enable_noop_when_not_disabled 168
class TestPluginSDKDisable 178
method TestPluginSDKDisable.test_disable 180
class TestPluginSDKInstall 197
method TestPluginSDKInstall.test_install 199
class TestPluginSDKUninstall 211
method TestPluginSDKUninstall.test_uninstall 213

tests/plugin/test_sdk_volk_registry_wiring.py

source · 3 tests · 56 lines

Wiring tests for A3: PluginSDK constructs a real VolkRegistry.

Covers: plugin.config, plugin.registries, plugin.sdk

Kind Name Line Description
function test_plugin_sdk_constructs_real_volk_registry 29 PluginSDK() always builds a real, queryable VolkRegistry by default.
function test_plugin_sdk_threads_its_volk_registry_into_the_manager 36 The same VolkRegistry instance backs both the SDK and its PluginManager.
function test_plugin_sdk_loaded_plugin_registers_volk_into_sdk_registry 42 A plugin loaded through the SDK facade lands its Volk in sdk.volk_registry.

tests/plugin/test_tool_registry_adapter.py

source · 4 tests · 78 lines

Wiring tests for ToolRegistryAdapter: SPEC-015 kernel boot wires the

Covers: plugin.registries, tools.base, tools.registry

Kind Name Line Description
function test_register_tool_lands_a_dispatchable_tool_in_the_real_registry 31
function test_registered_tool_normalizes_a_plain_return_value_to_tool_result 52
function test_registered_tool_passes_through_an_explicit_tool_result 62
function test_register_tool_replaces_an_existing_registration 72

Support files

Fixtures, package markers and helpers without test functions.