small-hackathon-trainer / tests /test_parser_runtime.py
Lucas
Improve parser runtime config and check-in state
06feb89
Raw
History Blame Contribute Delete
3.07 kB
import unittest
from unittest.mock import patch
from training_coach.parser_runtime import (
DEFAULT_TRANSFORMERS_MODEL,
PARSER_MODEL,
MODEL_CACHE_ENV_VAR,
ParserRuntimeUnavailableError,
_load_transformers,
generate_parser_response,
load_parser_model,
parse_check_in_with_model,
)
class ParserRuntimeTest(unittest.TestCase):
def tearDown(self):
load_parser_model.cache_clear()
def test_runtime_exports_model_name(self):
self.assertEqual(PARSER_MODEL, "Qwen/Qwen2.5-1.5B-Instruct")
self.assertEqual(DEFAULT_TRANSFORMERS_MODEL, "Qwen/Qwen3-1.7B")
def test_runtime_uses_default_huggingface_cache_by_default(self):
self.assertEqual(MODEL_CACHE_ENV_VAR, "PARSER_MODEL_CACHE_DIR")
def test_load_parser_model_uses_default_hf_cache_without_override(self):
class FakeTokenizer:
@classmethod
def from_pretrained(cls, model_name, cache_dir=None):
return {"model_name": model_name, "cache_dir": cache_dir}
class FakeModel:
@classmethod
def from_pretrained(cls, model_name, **kwargs):
return {"model_name": model_name, **kwargs}
load_parser_model.cache_clear()
with patch.dict("os.environ", {}, clear=True), patch(
"training_coach.parser_runtime._load_transformers",
return_value=(FakeModel, FakeTokenizer),
):
tokenizer, model = load_parser_model("test/model")
self.assertIsNone(tokenizer["cache_dir"])
self.assertIsNone(model["cache_dir"])
def test_load_parser_model_allows_explicit_cache_override(self):
class FakeTokenizer:
@classmethod
def from_pretrained(cls, model_name, cache_dir=None):
return {"model_name": model_name, "cache_dir": cache_dir}
class FakeModel:
@classmethod
def from_pretrained(cls, model_name, **kwargs):
return {"model_name": model_name, **kwargs}
load_parser_model.cache_clear()
with patch.dict(
"os.environ",
{MODEL_CACHE_ENV_VAR: "/tmp/parser-cache"},
clear=True,
), patch(
"training_coach.parser_runtime._load_transformers",
return_value=(FakeModel, FakeTokenizer),
):
tokenizer, model = load_parser_model("test/model")
self.assertEqual(tokenizer["cache_dir"], "/tmp/parser-cache")
self.assertEqual(model["cache_dir"], "/tmp/parser-cache")
def test_runtime_can_import_transformers_or_reports_clear_error(self):
try:
loaded = _load_transformers()
except ParserRuntimeUnavailableError as error:
self.assertIn("Install transformers", str(error))
else:
self.assertEqual(len(loaded), 2)
def test_runtime_functions_are_callable(self):
self.assertTrue(callable(generate_parser_response))
self.assertTrue(callable(parse_check_in_with_model))
if __name__ == "__main__":
unittest.main()