"""Bionic assembly consumes prepared bytes without running foreign binaries."""
import json
from pathlib import Path
import shutil

from scripts.build.inputs import RESOURCE_ENV, dependency_site
from scripts.termux.payload_facts import write_facts


def test_bionic_facts_and_agent_keep_fixed_prefix_and_tui_only(tmp_path):
    from pm.lock import Lockfile, Facts
    from pm.registry import get_package

    payload = tmp_path / "payload"
    repo = payload / "app"
    (repo / "pm").mkdir(parents=True)
    lock = repo / "pm/lock.json"
    shutil.copy2(Path(__file__).resolve().parents[2] / "pm/lock.json", lock)
    (repo / "pyproject.toml").write_text('[project]\nname="fixture"\nversion="1"\n[project.scripts]\nprobe="entry:main"\n', encoding="utf-8")
    (repo / "install-stamp.json").write_text('{"distribution":"apt-termux","payload":"bundled"}', encoding="utf-8")
    for name in RESOURCE_ENV:
        (repo / name).mkdir()
    target = "linux-arm64-bionic"
    tools = ("python", "node", "uv", "npm", "ffmpeg", "ripgrep")
    for name in tools:
        executable = get_package(name).binary(payload / "tools" / name, target)
        executable.parent.mkdir(parents=True, exist_ok=True)
        executable.write_bytes(b"foreign binary must not be executed")
        executable.chmod(0o755)
    python = get_package("python").binary(payload / "tools/python", target)
    site = dependency_site(payload / "venv", Lockfile(lock).version("python"), target)
    site.mkdir(parents=True)
    pm = payload / "pm-runtime"
    (pm / "deps").mkdir(parents=True)
    (pm / "pm-runtime.json").write_text(json.dumps({"python": "../" + python.relative_to(payload).as_posix(), "sitePackages": "deps"}), encoding="utf-8")
    tui = tmp_path / "tui-product"
    (tui / "dist").mkdir(parents=True)
    (tui / "dist/entry.js").write_text("built", encoding="utf-8")
    (tui / "package.json").write_text('{"type":"module"}', encoding="utf-8")
    build_set = tmp_path / "build-set.txt"
    build_set.write_bytes(b"\xef\xbb\xbfnative-fixture\n")
    write_facts(payload, lock, build_set, tui)
    manifest = json.loads((payload / "manifest.json").read_text())
    assert manifest["runtime"]["commands"] == {"probe": "bin/probe"}
    assert manifest["runtime"]["sitePackages"] == site.relative_to(payload).as_posix()
    assert (repo / "hermes_cli/tui_dist/entry.js").read_text() == "built"
    assert not (repo / "hermes_cli/web_dist").exists()
    assert json.loads((payload / "native-wheels.json").read_text()) == ["native-fixture"]
    facts = Facts(payload / "tools/facts.json", strict=True)
    assert all(facts.get(name)["target"] == target for name in tools)
