zeroshotGPU / tests /test_env_loading.py
Arjunvir Singh
Initial commit: zeroshotGPU MVP with full eval surface
db06ffa
"""Tests for .env loading and HF_TOKEN resolution."""
from __future__ import annotations
import os
import tempfile
import unittest
from pathlib import Path
from unittest.mock import patch
from zsgdp.config import hf_token, load_env_file
class LoadEnvFileTests(unittest.TestCase):
def test_loads_simple_key_value(self):
with tempfile.TemporaryDirectory() as tmp:
env = Path(tmp) / ".env"
env.write_text("HF_TOKEN=hf_test_value_123\nOTHER=foo\n", encoding="utf-8")
with patch.dict("os.environ", {}, clear=False):
os.environ.pop("HF_TOKEN", None)
os.environ.pop("OTHER", None)
applied = load_env_file(env)
self.assertEqual(applied["HF_TOKEN"], "hf_test_value_123")
self.assertEqual(applied["OTHER"], "foo")
def test_skips_comments_and_blank_lines(self):
with tempfile.TemporaryDirectory() as tmp:
env = Path(tmp) / ".env"
env.write_text(
"# top comment\n\nFOO=bar\n # indented\n\nBAZ=qux\n",
encoding="utf-8",
)
with patch.dict("os.environ", {}, clear=False):
os.environ.pop("FOO", None)
os.environ.pop("BAZ", None)
applied = load_env_file(env)
self.assertEqual(set(applied), {"FOO", "BAZ"})
def test_quoted_values_unquoted(self):
with tempfile.TemporaryDirectory() as tmp:
env = Path(tmp) / ".env"
env.write_text('A="quoted value"\nB=\'single\'\nC=plain\n', encoding="utf-8")
with patch.dict("os.environ", {}, clear=False):
for key in ("A", "B", "C"):
os.environ.pop(key, None)
applied = load_env_file(env)
self.assertEqual(applied["A"], "quoted value")
self.assertEqual(applied["B"], "single")
self.assertEqual(applied["C"], "plain")
def test_export_prefix_stripped(self):
with tempfile.TemporaryDirectory() as tmp:
env = Path(tmp) / ".env"
env.write_text("export FOO=bar\n", encoding="utf-8")
with patch.dict("os.environ", {}, clear=False):
os.environ.pop("FOO", None)
applied = load_env_file(env)
self.assertEqual(applied["FOO"], "bar")
def test_existing_env_wins_unless_override(self):
with tempfile.TemporaryDirectory() as tmp:
env = Path(tmp) / ".env"
env.write_text("FOO=from_file\n", encoding="utf-8")
with patch.dict("os.environ", {"FOO": "from_env"}, clear=False):
applied = load_env_file(env)
# Default behaviour: don't override.
self.assertNotIn("FOO", applied)
self.assertEqual(os.environ["FOO"], "from_env")
# With override=True, file wins.
applied = load_env_file(env, override=True)
self.assertEqual(applied["FOO"], "from_file")
self.assertEqual(os.environ["FOO"], "from_file")
def test_missing_file_returns_empty_no_error(self):
self.assertEqual(load_env_file(Path("/tmp/zsgdp_does_not_exist.env")), {})
class HFTokenResolverTests(unittest.TestCase):
def test_picks_up_hf_token(self):
with patch.dict(
"os.environ",
{"HF_TOKEN": "primary", "HUGGING_FACE_HUB_TOKEN": "secondary"},
clear=False,
):
self.assertEqual(hf_token(), "primary")
def test_falls_through_alternative_names(self):
with patch.dict("os.environ", {}, clear=True):
os.environ["HUGGINGFACE_TOKEN"] = "fallback"
self.assertEqual(hf_token(), "fallback")
def test_recognises_hf_access_token_alias(self):
with patch.dict("os.environ", {}, clear=True):
os.environ["HF_ACCESS_TOKEN"] = "from_alias"
self.assertEqual(hf_token(), "from_alias")
def test_returns_none_when_unset(self):
with patch.dict("os.environ", {}, clear=True):
self.assertIsNone(hf_token())
if __name__ == "__main__":
unittest.main()