Viewing files at commit a9e8fa39d0a0Commit detailsView latest

Browse files
tests/test_environment.py 57 lines · 2.1 KB · python
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()