CICD / tests /test_judge.py
printf-sourav's picture
Fix Phase 2 requirements: Add / endpoint for HF health checks and tasks grader definitions
c25fb83
Raw
History Blame Contribute Delete
1.85 kB
import unittest
from env.graders.llm_judge import LLMJudge
class FakeModel:
def __init__(self, payload, raise_error: bool = False):
self.payload = payload
self.raise_error = raise_error
def __call__(self, prompt, **kwargs):
if self.raise_error:
raise RuntimeError("model failure")
return [{"generated_text": self.payload}]
class LLMJudgeTests(unittest.TestCase):
def test_good_json_scores_are_parsed(self):
judge = LLMJudge(FakeModel('{"correctness": 1.0, "minimalism": 0.8, "quality": 0.9}'))
result = judge.evaluate_fix("npm tset", "npm test", "command not found")
self.assertGreaterEqual(result["correctness"], 0.9)
self.assertGreaterEqual(result["minimalism"], 0.7)
self.assertGreaterEqual(result["quality"], 0.8)
def test_regex_fallback_for_noisy_output(self):
noisy = "Correctness: 0.7\nMinimalism: 0.6\nQuality: 0.75"
judge = LLMJudge(FakeModel(noisy))
result = judge.evaluate_fix("a", "b", "err")
self.assertAlmostEqual(result["correctness"], 0.7)
self.assertAlmostEqual(result["minimalism"], 0.6)
self.assertAlmostEqual(result["quality"], 0.75)
def test_partial_fields_default_to_zero(self):
judge = LLMJudge(FakeModel('{"correctness": 0.8}'))
result = judge.evaluate_fix("a", "b", "err")
self.assertAlmostEqual(result["correctness"], 0.8)
self.assertAlmostEqual(result["minimalism"], 0.001)
self.assertAlmostEqual(result["quality"], 0.001)
def test_model_failure_returns_zeroes(self):
judge = LLMJudge(FakeModel("", raise_error=True))
result = judge.evaluate_fix("a", "b", "err")
self.assertEqual(result, {"correctness": 0.0, "minimalism": 0.0, "quality": 0.0})
if __name__ == "__main__":
unittest.main()