import asyncio
import os
import sys
import unittest

from copilot import CopilotClient, RuntimeConnection

CLI_PATH = os.path.abspath(sys.argv.pop(1))


class SdkRuntimeTest(unittest.IsolatedAsyncioTestCase):
    async def test_bazel_pinned_cli_starts_without_runtime_download(self) -> None:
        self.assertTrue(os.path.isfile(CLI_PATH))
        self.assertTrue(os.access(CLI_PATH, os.X_OK))

        base_directory = os.path.join(
            os.environ["TEST_TMPDIR"],
            "copilot-home",
        )
        os.makedirs(base_directory)
        client = CopilotClient(
            connection=RuntimeConnection.for_stdio(path=CLI_PATH),
            base_directory=base_directory,
            use_logged_in_user=False,
            log_level="error",
            mode="empty",
        )
        try:
            await asyncio.wait_for(client.start(), timeout=15)
        finally:
            await client.stop()


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