File size: 2,079 Bytes
06671aa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
from __future__ import annotations

import os
import sys
import unittest
from pathlib import Path

SERVICE_ROOT = Path(__file__).resolve().parents[1]
BACKEND_ROOT = SERVICE_ROOT.parent
if str(SERVICE_ROOT) not in sys.path:
    sys.path.insert(0, str(SERVICE_ROOT))

from inference.config import reset_inference_manifest_cache  # noqa: E402
from tabular_agent import model_name  # noqa: E402


CANONICAL_MANIFEST = BACKEND_ROOT / "config" / "inference.manifest.json"


class ModelSelectionTests(unittest.TestCase):
    def setUp(self) -> None:
        reset_inference_manifest_cache()
        self._old_manifest_path = os.environ.pop("INFERENCE_MANIFEST_PATH", None)
        self._old_model = os.environ.pop("TABULAR_AGENT_MODEL", None)
        os.environ["INFERENCE_MANIFEST_PATH"] = str(CANONICAL_MANIFEST)

    def tearDown(self) -> None:
        reset_inference_manifest_cache()
        if self._old_manifest_path is not None:
            os.environ["INFERENCE_MANIFEST_PATH"] = self._old_manifest_path
        else:
            os.environ.pop("INFERENCE_MANIFEST_PATH", None)
        if self._old_model is not None:
            os.environ["TABULAR_AGENT_MODEL"] = self._old_model
        else:
            os.environ.pop("TABULAR_AGENT_MODEL", None)

    def test_model_name_honors_request_model_id(self) -> None:
        self.assertEqual(
            model_name("gemini-3.5-flash", feature_id="python-review"),
            "gemini-3.5-flash",
        )

    def test_model_name_uses_manifest_feature_for_review(self) -> None:
        self.assertEqual(model_name(None, feature_id="python-review"), "gemini-3.5-flash")

    def test_model_name_uses_python_chat_fallback(self) -> None:
        self.assertEqual(model_name(None, feature_id="python-chat"), "gemini-3.5-flash")

    def test_model_name_respects_env_override(self) -> None:
        os.environ["TABULAR_AGENT_MODEL"] = "gemini-3-flash"
        reset_inference_manifest_cache()
        self.assertEqual(model_name(None, feature_id="python-review"), "gemini-3-flash")


if __name__ == "__main__":
    unittest.main()