# tests/test_pack_max_files.py
from __future__ import annotations

from pathlib import Path

import oceansguard.cli as cli
from tests.conftest import _write, read_text, write_aiguard_yml


def test_pack_respects_max_files(tmp_path: Path, ux, patch_subprocess_for_pack):
    repo = tmp_path / "repo"
    repo.mkdir()

    _write(repo / "contracts" / "openapi.json", '{"openapi":"3.0.0","info":{"title":"t","version":"1"}}\n')
    _write(repo / "README.md", "# r\n")

    # たくさん作る
    for i in range(30):
        _write(repo / "backend" / "app" / f"f{i}.py", f"# {i}\n")

    # max_files を極小にする（large 収集が早期打ち切りされることが目的）
    write_aiguard_yml(repo, include_frontend_in_roots=False, max_files=5, max_kb_each=64)

    cli.cmd_pack(ux, repo, strict=False)

    txt = read_text(repo / "ai_context_pack.md")
    # large section の file list から backend/app/fX.py の出現数を概算で確認
    # （changed/small もあるので strict に数を固定しない。max_files=5 で収集され過ぎないことだけ確認）
    assert txt.count("backend/app/f") <= 12  # 上限で暴走していないことの安全弁
