Spaces:
Running on Zero
Running on Zero
| """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() | |