"""Unit tests for env_bool.""" from __future__ import annotations import pytest from python_repositories.config.env_bool import env_bool @pytest.mark.parametrize( ("value", "expected"), [ ("true", True), ("1", True), ("yes", True), ("on", True), ("false", False), ("0", False), ("no", False), ("off", False), ], ) def test_env_bool_parses_truthy_and_falsy( monkeypatch: pytest.MonkeyPatch, value: str, expected: bool, ) -> None: monkeypatch.setenv("TEST_BOOL", value) assert env_bool("TEST_BOOL", default=not expected) is expected def test_env_bool_returns_default_when_unset(monkeypatch: pytest.MonkeyPatch) -> None: monkeypatch.delenv("TEST_BOOL", raising=False) assert env_bool("TEST_BOOL", default=True) is True assert env_bool("TEST_BOOL", default=False) is False def test_env_bool_raises_for_invalid_value( monkeypatch: pytest.MonkeyPatch, ) -> None: monkeypatch.setenv("TEST_BOOL", "not-a-bool") with pytest.raises(ValueError, match="TEST_BOOL"): env_bool("TEST_BOOL", default=False)