| 1 | from __future__ import annotations
|
| 2 |
|
| 3 | import os
|
| 4 | import sys
|
| 5 | import tempfile
|
| 6 | import unittest
|
| 7 | from pathlib import Path
|
| 8 |
|
| 9 | sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "scripts"))
|
| 10 |
|
| 11 | from oakbench.environment import ENV_ISOLATION_VERSION, base_env # noqa: E402
|
| 12 |
|
| 13 |
|
| 14 | class EnvironmentPolicyTest(unittest.TestCase):
|
| 15 | def test_base_env_isolates_host_home_git_config_and_locale(self) -> None:
|
| 16 | env = base_env()
|
| 17 | bench_home = Path(env["HOME"])
|
| 18 |
|
| 19 | self.assertNotEqual(bench_home, Path.home())
|
| 20 | self.assertTrue(bench_home.is_dir())
|
| 21 | self.assertEqual(env["XDG_CONFIG_HOME"], str(bench_home / ".config"))
|
| 22 | self.assertEqual(env["XDG_CACHE_HOME"], str(bench_home / ".cache"))
|
| 23 | self.assertEqual(env["ZDOTDIR"], str(bench_home))
|
| 24 | self.assertEqual(env["BASH_ENV"], os.devnull)
|
| 25 | self.assertEqual(env["ENV"], os.devnull)
|
| 26 | self.assertEqual(env["GIT_CONFIG_GLOBAL"], os.devnull)
|
| 27 | self.assertEqual(env["GIT_CONFIG_NOSYSTEM"], "1")
|
| 28 | self.assertEqual(env["LC_ALL"], "C")
|
| 29 | self.assertEqual(env["LANG"], "C")
|
| 30 | self.assertEqual(env["TZ"], "UTC")
|
| 31 | self.assertEqual(env["OAK_BENCH_ENV_ISOLATION_VERSION"], ENV_ISOLATION_VERSION)
|
| 32 |
|
| 33 | def test_base_env_accepts_explicit_stable_home(self) -> None:
|
| 34 | with tempfile.TemporaryDirectory() as tmp:
|
| 35 | home = Path(tmp) / "bench-home"
|
| 36 | first = base_env(home=home)
|
| 37 | second = base_env(home=home)
|
| 38 | self.assertEqual(first["HOME"], second["HOME"])
|
| 39 | self.assertEqual(first["XDG_CONFIG_HOME"], str(home / ".config"))
|
| 40 |
|
| 41 | def test_base_env_preserves_existing_path_and_explicit_tokens(self) -> None:
|
| 42 | old_token = os.environ.get("OAK_API_KEY")
|
| 43 | try:
|
| 44 | os.environ["OAK_API_KEY"] = "test-token"
|
| 45 | env = base_env()
|
| 46 | finally:
|
| 47 | if old_token is None:
|
| 48 | os.environ.pop("OAK_API_KEY", None)
|
| 49 | else:
|
| 50 | os.environ["OAK_API_KEY"] = old_token
|
| 51 |
|
| 52 | self.assertEqual(env.get("PATH"), os.environ.get("PATH"))
|
| 53 | self.assertEqual(env["OAK_API_KEY"], "test-token")
|
| 54 |
|
| 55 |
|
| 56 | if __name__ == "__main__":
|
| 57 | unittest.main()
|