import ast
import subprocess
import sys
from pathlib import Path


def test_config_base_import_does_not_load_config_schema():
    code = """
import sys
from nanobot.config_base import Base
print("nanobot.config.schema" in sys.modules)
"""
    result = subprocess.run(
        [sys.executable, "-c", code],
        check=True,
        capture_output=True,
        text=True,
    )

    assert result.stdout.strip() == "False"


def test_builtin_tool_configs_do_not_depend_on_config_schema_base():
    repo = Path(__file__).resolve().parents[2]
    tool_paths = sorted((repo / "nanobot/agent/tools").glob("*.py"))

    violations = []
    for path in tool_paths:
        tree = ast.parse(path.read_text(encoding="utf-8"))
        for node in ast.walk(tree):
            if not isinstance(node, ast.ImportFrom):
                continue
            if node.module != "nanobot.config.schema":
                continue
            if any(alias.name == "Base" for alias in node.names):
                violations.append(str(path.relative_to(repo)))

    assert violations == []
