Files
cleveractors-core/robot/exceptions.robot
CoreRasurae e8bd348c77
CI / lint (pull_request) Successful in 41s
CI / typecheck (pull_request) Successful in 56s
CI / security (pull_request) Successful in 51s
CI / quality (pull_request) Successful in 53s
CI / integration_tests (pull_request) Successful in 1m10s
CI / build (pull_request) Successful in 43s
CI / unit_tests (pull_request) Successful in 3m30s
CI / coverage (pull_request) Successful in 3m22s
CI / status-check (pull_request) Successful in 4s
CI / quality (push) Successful in 45s
CI / security (push) Successful in 48s
CI / lint (push) Successful in 49s
CI / typecheck (push) Successful in 50s
CI / build (push) Successful in 49s
CI / integration_tests (push) Successful in 1m9s
CI / unit_tests (push) Successful in 3m13s
CI / coverage (push) Successful in 3m7s
CI / status-check (push) Successful in 3s
feat(registry): implement RegistryError hierarchy with typed exceptions
Add RegistryError base with message, details, and original_reference fields.
Implement all 9 typed exception types per Package Registry Standard §13.2:
PackageNotFoundError, InvalidPackageIdError, InvalidPackageReferenceError,
VersionNotFoundError, ValidationError, AuthenticationRequiredError,
AccessDeniedError, ConflictError, and RegistryNetworkError.

RegistryNetworkError carries status_code and url for transport failures.
__str__ includes original_reference when available.
exception_for_status() maps HTTP codes to typed exceptions.
_ERROR_TYPE_MAP enables error-type parsing from JSON error bodies.

23 Behave BDD scenarios in features/registry_exceptions.feature.
12 Robot Framework integration tests in robot/exceptions.robot.
Existing registry_http_client tests updated for InternalServerError removal.

ISSUES CLOSED: #29
2026-06-11 20:44:54 +01:00

140 lines
6.4 KiB
Plaintext

*** Settings ***
Documentation Integration tests for exception hierarchy and error handling
Library OperatingSystem
Library CleverActorsLib.py
*** Test Cases ***
ConfigurationError Is Subclass Of CleverAgentsException
[Documentation] Verify exception hierarchy
Exception Is Subclass Of ConfigurationError CleverAgentsException
AgentCreationError Is Subclass Of CleverAgentsException
[Documentation] Verify agent creation error inheritance
Exception Is Subclass Of AgentCreationError CleverAgentsException
ConfigurationError Is Instance Of CleverAgentsException
[Documentation] Verify isinstance check works through hierarchy
Exception Is Instance Cleveragents Exception ConfigurationError
AgentCreationError Is Instance Of CleverAgentsException
[Documentation] Verify isinstance check for agent error
Exception Is Instance Cleveragents Exception AgentCreationError
# ── Registry exception hierarchy (§13.2) ─────────────────────────────────
RegistryError Is Subclass Of CleverAgentsException
[Documentation] RegistryError extends CleverAgentsException
Exception Is Subclass Of RegistryError CleverAgentsException
PackageNotFoundError Is Subclass Of RegistryError
[Documentation] Typed 404 extends RegistryError
Exception Is Subclass Of PackageNotFoundError RegistryError
InvalidPackageIdError Is Subclass Of RegistryError
[Documentation] Typed 400 extends RegistryError
Exception Is Subclass Of InvalidPackageIdError RegistryError
InvalidPackageReferenceError Is Subclass Of RegistryError
[Documentation] Custom 400 extends RegistryError
Exception Is Subclass Of InvalidPackageReferenceError RegistryError
VersionNotFoundError Is Subclass Of RegistryError
[Documentation] Typed 404 extends RegistryError
Exception Is Subclass Of VersionNotFoundError RegistryError
ValidationError Is Subclass Of RegistryError
[Documentation] Typed 400 extends RegistryError
Exception Is Subclass Of ValidationError RegistryError
AuthenticationRequiredError Is Subclass Of RegistryError
[Documentation] Typed 401 extends RegistryError
Exception Is Subclass Of AuthenticationRequiredError RegistryError
AccessDeniedError Is Subclass Of RegistryError
[Documentation] Typed 403 extends RegistryError
Exception Is Subclass Of AccessDeniedError RegistryError
ConflictError Is Subclass Of RegistryError
[Documentation] Typed 409 extends RegistryError
Exception Is Subclass Of ConflictError RegistryError
RegistryNetworkError Is Subclass Of RegistryError
[Documentation] 5xx and transport extends RegistryError
Exception Is Subclass Of RegistryNetworkError RegistryError
# ── RegistryError isinstance checks ──────────────────────────────────────
RegistryError Is Instance Of CleverAgentsException
[Documentation] RegistryError is a CleverAgentsException
Exception Is Instance Cleveragents Exception RegistryError
PackageNotFoundError Is Instance Of CleverAgentsException
[Documentation] Typed errors inherit base class
Exception Is Instance Cleveragents Exception PackageNotFoundError
RegistryNetworkError Is Instance Of CleverAgentsException
[Documentation] NetworkError inherits base class
Exception Is Instance Cleveragents Exception RegistryNetworkError
InvalidPackageIdError Is Instance Of CleverAgentsException
[Documentation] Typed errors inherit base class
Exception Is Instance Cleveragents Exception InvalidPackageIdError
InvalidPackageReferenceError Is Instance Of CleverAgentsException
[Documentation] Custom reference error inherits base class
Exception Is Instance Cleveragents Exception InvalidPackageReferenceError
VersionNotFoundError Is Instance Of CleverAgentsException
[Documentation] Typed 404 inherits base class
Exception Is Instance Cleveragents Exception VersionNotFoundError
ValidationError Is Instance Of CleverAgentsException
[Documentation] Typed 400 inherits base class
Exception Is Instance Cleveragents Exception ValidationError
AuthenticationRequiredError Is Instance Of CleverAgentsException
[Documentation] Typed 401 inherits base class
Exception Is Instance Cleveragents Exception AuthenticationRequiredError
AccessDeniedError Is Instance Of CleverAgentsException
[Documentation] Typed 403 inherits base class
Exception Is Instance Cleveragents Exception AccessDeniedError
ConflictError Is Instance Of CleverAgentsException
[Documentation] Typed 409 inherits base class
Exception Is Instance Cleveragents Exception ConflictError
# ── exception_for_status routing (§13.2) ─────────────────────────────────
Exception For Status 400 Returns InvalidPackageIdError
[Documentation] 400 status code maps to InvalidPackageIdError
Exception For Status Returns 400 InvalidPackageIdError
Exception For Status 401 Returns AuthenticationRequiredError
[Documentation] 401 status code maps to AuthenticationRequiredError
Exception For Status Returns 401 AuthenticationRequiredError
Exception For Status 403 Returns AccessDeniedError
[Documentation] 403 status code maps to AccessDeniedError
Exception For Status Returns 403 AccessDeniedError
Exception For Status 404 Returns PackageNotFoundError
[Documentation] 404 status code maps to PackageNotFoundError
Exception For Status Returns 404 PackageNotFoundError
Exception For Status 409 Returns ConflictError
[Documentation] 409 status code maps to ConflictError
Exception For Status Returns 409 ConflictError
Exception For Status 500 Returns RegistryNetworkError
[Documentation] 500 status code maps to RegistryNetworkError
Exception For Status Returns 500 RegistryNetworkError
Exception For Status 503 Returns RegistryNetworkError
[Documentation] 503 status code maps to RegistryNetworkError
Exception For Status Returns 503 RegistryNetworkError
Exception For Status 418 Returns RegistryError
[Documentation] Unknown 4xx status code falls back to RegistryError
Exception For Status Returns 418 RegistryError