2026-04-23 07:39:52 -05:00
|
|
|
from __future__ import annotations
|
2026-04-24 15:33:30 +02:00
|
|
|
|
2026-04-23 07:39:52 -05:00
|
|
|
from headroom.exceptions import (
|
|
|
|
|
CacheError,
|
|
|
|
|
CompressionError,
|
|
|
|
|
ConfigurationError,
|
|
|
|
|
HeadroomError,
|
|
|
|
|
ProviderError,
|
|
|
|
|
StorageError,
|
|
|
|
|
TokenizationError,
|
|
|
|
|
TransformError,
|
|
|
|
|
ValidationError,
|
|
|
|
|
)
|
2026-04-24 15:33:30 +02:00
|
|
|
|
|
|
|
|
|
2026-04-23 07:39:52 -05:00
|
|
|
def test_headroom_error_formats_details() -> None:
|
|
|
|
|
err = HeadroomError("bad config", details={"mode": "foo", "valid": "bar"})
|
|
|
|
|
assert err.message == "bad config"
|
|
|
|
|
assert err.details == {"mode": "foo", "valid": "bar"}
|
|
|
|
|
assert str(err) == "bad config (mode=foo, valid=bar)"
|
2026-04-24 15:33:30 +02:00
|
|
|
|
2026-04-23 07:39:52 -05:00
|
|
|
plain = HeadroomError("just bad")
|
|
|
|
|
assert plain.details == {}
|
|
|
|
|
assert str(plain) == "just bad"
|
2026-04-24 15:33:30 +02:00
|
|
|
|
|
|
|
|
|
2026-04-23 07:39:52 -05:00
|
|
|
def test_specialized_exceptions_inherit_headroom_error() -> None:
|
|
|
|
|
for exc_type in (
|
|
|
|
|
ConfigurationError,
|
|
|
|
|
ProviderError,
|
|
|
|
|
StorageError,
|
|
|
|
|
CompressionError,
|
|
|
|
|
TokenizationError,
|
|
|
|
|
CacheError,
|
|
|
|
|
ValidationError,
|
|
|
|
|
TransformError,
|
|
|
|
|
):
|
|
|
|
|
err = exc_type("problem", details={"kind": exc_type.__name__})
|
|
|
|
|
assert isinstance(err, HeadroomError)
|
|
|
|
|
assert str(err) == f"problem (kind={exc_type.__name__})"
|