#!/usr/bin/env python3 from pathlib import Path import sys import tempfile import unittest sys.path.insert(0, str(Path(__file__).resolve().parents[1])) from codex_package.cargo import build_source_binaries from codex_package.cargo import source_binaries_for_target from codex_package.targets import PACKAGE_VARIANTS from codex_package.targets import TARGET_SPECS class SourceBinariesForTargetTest(unittest.TestCase): def test_macos_package_with_prebuilt_entrypoint_builds_nothing(self) -> None: self.assertEqual( source_binaries_for_target( TARGET_SPECS["aarch64-apple-darwin"], PACKAGE_VARIANTS["codex"], build_entrypoint=False, build_bwrap=False, build_codex_command_runner=False, build_codex_windows_sandbox_setup=False, ), [], ) def test_linux_package_with_prebuilt_entrypoint_and_bwrap_builds_nothing(self) -> None: self.assertEqual( source_binaries_for_target( TARGET_SPECS["x86_64-unknown-linux-musl"], PACKAGE_VARIANTS["codex"], build_entrypoint=False, build_bwrap=False, build_codex_command_runner=False, build_codex_windows_sandbox_setup=False, ), [], ) def test_windows_package_with_prebuilt_entrypoint_and_helpers_builds_nothing(self) -> None: self.assertEqual( source_binaries_for_target( TARGET_SPECS["x86_64-pc-windows-msvc"], PACKAGE_VARIANTS["codex"], build_entrypoint=False, build_bwrap=False, build_codex_command_runner=False, build_codex_windows_sandbox_setup=False, ), [], ) def test_missing_windows_helpers_are_built(self) -> None: self.assertEqual( source_binaries_for_target( TARGET_SPECS["x86_64-pc-windows-msvc"], PACKAGE_VARIANTS["codex"], build_entrypoint=False, build_bwrap=False, build_codex_command_runner=True, build_codex_windows_sandbox_setup=True, ), ["codex-command-runner", "codex-windows-sandbox-setup"], ) def test_build_uses_prebuilt_windows_helpers_without_running_cargo(self) -> None: with tempfile.TemporaryDirectory() as temp_dir: root = Path(temp_dir) entrypoint = touch_file(root / "codex.exe") command_runner = touch_file(root / "codex-command-runner.exe") sandbox_setup = touch_file(root / "codex-windows-sandbox-setup.exe") outputs = build_source_binaries( TARGET_SPECS["x86_64-pc-windows-msvc"], PACKAGE_VARIANTS["codex"], cargo=str(root / "cargo-that-should-not-run"), profile="release", entrypoint_bin=entrypoint, bwrap_bin=None, codex_command_runner_bin=command_runner, codex_windows_sandbox_setup_bin=sandbox_setup, ) self.assertEqual(outputs.entrypoint_bin, entrypoint) self.assertEqual(outputs.codex_command_runner_bin, command_runner) self.assertEqual(outputs.codex_windows_sandbox_setup_bin, sandbox_setup) def touch_file(path: Path) -> Path: path.write_text("", encoding="utf-8") return path.resolve() if __name__ == "__main__": unittest.main()