Files
2026-07-13 13:39:38 +08:00

98 lines
3.1 KiB
Python

import pytest
from livekit.agents.types import NOT_GIVEN
from livekit.agents.utils.env import resolve_env_var
pytestmark = pytest.mark.unit
class TestResolveEnvVar:
"""Tests for the resolve_env_var helper contract."""
def test_returns_empty_string_when_no_env_or_default(
self, monkeypatch: pytest.MonkeyPatch
) -> None:
monkeypatch.delenv("LIVEKIT_INFERENCE_URL", raising=False)
assert resolve_env_var(NOT_GIVEN, "LIVEKIT_INFERENCE_URL") == ""
def test_returns_default_when_no_matching_env_exists(
self, monkeypatch: pytest.MonkeyPatch
) -> None:
monkeypatch.delenv("LIVEKIT_INFERENCE_URL", raising=False)
assert (
resolve_env_var(
NOT_GIVEN,
"LIVEKIT_INFERENCE_URL",
default="https://default.example.com",
)
== "https://default.example.com"
)
def test_returns_first_matching_env_value(self, monkeypatch: pytest.MonkeyPatch) -> None:
monkeypatch.setenv("LIVEKIT_INFERENCE_URL", "https://inference.example.com")
monkeypatch.setenv("LIVEKIT_URL", "https://livekit.example.com")
assert (
resolve_env_var(
NOT_GIVEN,
"LIVEKIT_INFERENCE_URL",
"LIVEKIT_URL",
default="https://default.example.com",
)
== "https://inference.example.com"
)
def test_falls_back_to_later_env_when_earlier_env_missing(
self, monkeypatch: pytest.MonkeyPatch
) -> None:
monkeypatch.delenv("LIVEKIT_INFERENCE_URL", raising=False)
monkeypatch.setenv("LIVEKIT_URL", "https://livekit.example.com")
assert (
resolve_env_var(
NOT_GIVEN,
"LIVEKIT_INFERENCE_URL",
"LIVEKIT_URL",
default="https://default.example.com",
)
== "https://livekit.example.com"
)
def test_prefers_explicit_value_over_environment(self, monkeypatch: pytest.MonkeyPatch) -> None:
monkeypatch.setenv("LIVEKIT_INFERENCE_URL", "https://env.example.com")
assert (
resolve_env_var(
"https://explicit.example.com",
"LIVEKIT_INFERENCE_URL",
default="https://default.example.com",
)
== "https://explicit.example.com"
)
def test_treats_empty_env_value_as_missing(self, monkeypatch: pytest.MonkeyPatch) -> None:
monkeypatch.setenv("LIVEKIT_INFERENCE_URL", "")
assert (
resolve_env_var(
NOT_GIVEN,
"LIVEKIT_INFERENCE_URL",
default="https://default.example.com",
)
== "https://default.example.com"
)
def test_treats_whitespace_env_value_as_set(self, monkeypatch: pytest.MonkeyPatch) -> None:
monkeypatch.setenv("LIVEKIT_INFERENCE_URL", " ")
assert (
resolve_env_var(
NOT_GIVEN,
"LIVEKIT_INFERENCE_URL",
default="https://default.example.com",
)
== " "
)