tests/gateway/test_platform_registry.py::TestPlatformEnumDynamic::test_builtin_members_still_work tests/gateway/test_platform_registry.py::TestPlatformEnumDynamic::test_dynamic_member_created tests/gateway/test_platform_registry.py::TestPlatformEnumDynamic::test_dynamic_member_identity_stable tests/gateway/test_platform_registry.py::TestPlatformEnumDynamic::test_dynamic_member_case_normalised tests/gateway/test_platform_registry.py::TestPlatformEnumDynamic::test_dynamic_member_with_hyphens tests/gateway/test_platform_registry.py::TestPlatformEnumDynamic::test_dynamic_member_rejects_unregistered tests/gateway/test_platform_registry.py::TestPlatformEnumDynamic::test_dynamic_member_rejects_non_string tests/gateway/test_platform_registry.py::TestPlatformEnumDynamic::test_dynamic_member_rejects_empty tests/gateway/test_platform_registry.py::TestPlatformEnumDynamic::test_dynamic_member_rejects_whitespace_only tests/gateway/test_platform_registry.py::TestPlatformRegistry::test_register_and_get tests/gateway/test_platform_registry.py::TestPlatformRegistry::test_get_unknown_returns_none tests/gateway/test_platform_registry.py::TestPlatformRegistry::test_unregister tests/gateway/test_platform_registry.py::TestPlatformRegistry::test_create_adapter_success tests/gateway/test_platform_registry.py::TestPlatformRegistry::test_create_adapter_unknown_name tests/gateway/test_platform_registry.py::TestPlatformRegistry::test_create_adapter_check_fails tests/gateway/test_platform_registry.py::TestPlatformRegistry::test_create_adapter_validate_fails tests/gateway/test_platform_registry.py::TestPlatformRegistry::test_create_adapter_factory_exception tests/gateway/test_platform_registry.py::TestPlatformRegistry::test_create_adapter_no_validate tests/gateway/test_platform_registry.py::TestPlatformRegistry::test_all_entries tests/gateway/test_platform_registry.py::TestPlatformRegistry::test_plugin_entries tests/gateway/test_platform_registry.py::TestPlatformRegistry::test_re_register_replaces tests/gateway/test_platform_registry.py::TestGatewayConfigPluginPlatform::test_from_dict_accepts_plugin_platform tests/gateway/test_platform_registry.py::TestGatewayConfigPluginPlatform::test_get_connected_platforms_includes_registered_plugin tests/gateway/test_platform_registry.py::TestGatewayConfigPluginPlatform::test_get_connected_platforms_excludes_unregistered_plugin tests/gateway/test_platform_registry.py::TestGatewayConfigPluginPlatform::test_get_connected_platforms_excludes_invalid_config tests/gateway/test_platform_registry.py::TestPlatformEntryExtendedFields::test_default_field_values tests/gateway/test_platform_registry.py::TestPlatformEntryExtendedFields::test_custom_auth_fields tests/gateway/test_platform_registry.py::TestCronPlatformResolution::test_builtin_platform_resolves tests/gateway/test_platform_registry.py::TestCronPlatformResolution::test_plugin_platform_resolves tests/gateway/test_platform_registry.py::TestCronPlatformResolution::test_invalid_platform_type_rejected tests/gateway/test_platform_registry.py::TestPlatformsMerge::test_get_all_platforms_includes_builtins tests/gateway/test_platform_registry.py::TestPlatformsMerge::test_get_all_platforms_includes_plugin tests/gateway/test_platform_registry.py::TestPlatformsMerge::test_platform_label_plugin_fallback tests/gateway/test_platform_registry.py::TestApplyYamlConfigFnField::test_default_is_none tests/gateway/test_platform_registry.py::TestApplyYamlConfigFnField::test_accepts_callable tests/gateway/test_platform_registry.py::TestApplyYamlConfigFnDispatch::test_hook_can_mutate_environ tests/gateway/test_platform_registry.py::TestApplyYamlConfigFnDispatch::test_hook_returned_dict_merges_into_extra tests/gateway/test_platform_registry.py::TestApplyYamlConfigFnDispatch::test_hook_receives_full_yaml_and_platform_subdict tests/gateway/test_platform_registry.py::TestApplyYamlConfigFnDispatch::test_hook_exception_swallowed tests/gateway/test_platform_registry.py::TestApplyYamlConfigFnDispatch::test_hook_skipped_when_platform_section_missing tests/gateway/test_platform_registry.py::TestApplyYamlConfigFnDispatch::test_hook_skipped_when_platform_section_not_dict tests/gateway/test_platform_registry.py::TestApplyYamlConfigFnDispatch::test_env_var_takes_precedence_when_hook_uses_getenv_guard tests/gateway/test_platform_registry.py::TestPluginPlatformSharedKeyBridge::test_shared_keys_bridged_for_plugin_platform tests/gateway/test_platform_registry.py::TestPluginEnablementGate::test_plugin_with_is_connected_false_is_NOT_enabled tests/gateway/test_platform_registry.py::TestPluginEnablementGate::test_plugin_with_is_connected_true_is_enabled tests/gateway/test_platform_registry.py::TestPluginEnablementGate::test_plugin_without_is_connected_falls_back_to_check_fn tests/gateway/test_platform_registry.py::TestPluginEnablementGate::test_is_connected_raises_does_not_enable tests/gateway/test_platform_registry.py::TestPluginEnablementGate::test_yaml_enabled_true_overrides_is_connected_false tests/gateway/test_platform_registry.py::TestPluginEnablementGate::test_is_connected_sees_env_seeded_extras tests/gateway/test_platform_registry.py::TestPluginEnablementGate::test_is_connected_failed_gate_does_not_leak_extras