""" OpenCode module tests """ import json import unittest from http.server import HTTPServer, BaseHTTPRequestHandler from threading import Thread from txtai.pipeline import LLM class RequestHandler(BaseHTTPRequestHandler): """ Test HTTP handler. """ def do_POST(self): """ POST request handler. """ # Mock response content = "application/json" response = json.dumps({"id": "0", "parts": [{"type": "text", "text": "blue"}]}) # Encode response as bytes response = response.encode("utf-8") self.send_response(200) self.send_header("content-type", content) self.send_header("content-length", len(response)) self.end_headers() self.wfile.write(response) self.wfile.flush() class TestOpenCode(unittest.TestCase): """ OpenCode tests. """ @classmethod def setUpClass(cls): """ Create mock http server. """ cls.httpd = HTTPServer(("127.0.0.1", 8005), RequestHandler) server = Thread(target=cls.httpd.serve_forever, daemon=True) server.start() @classmethod def tearDownClass(cls): """ Shutdown mock http server. """ cls.httpd.shutdown() def testGeneration(self): """ Test generation with OpenCode """ # Test model generation with LiteLLM model = LLM("opencode/big-pickle", url="http://127.0.0.1:8005") self.assertEqual(model("The sky is"), "blue")