"""Installed-wheel clean-break contracts for retired architecture surfaces."""

from __future__ import annotations

from pathlib import Path

import pytest

from .conftest import InstalledWheel


@pytest.mark.e2e
def test_installed_wheel_exposes_only_current_architecture_paths(
    installed_wheel: InstalledWheel,
    tmp_path: Path,
) -> None:
    """The built wheel contains current roles and no legacy packages or groups."""
    result = installed_wheel.run(
        str(installed_wheel.python),
        "-c",
        "\n".join(
            (
                "import importlib",
                "import importlib.metadata",
                "current = ('rfgen.graph', 'rfgen.nodes.source', 'rfgen.nodes.transform', "
                "'rfgen.storage', 'rfgen.storage.sds', 'rfgen.annotation', 'rfgen.inspection', "
                "'rfgen.generation', 'rfgen.cli')",
                "retired = ('rfgen.emitters', 'rfgen.channels', 'rfgen.scene', "
                "'rfgen.dataset', 'rfgen.labels', 'rfgen.planning', 'rfgen.population', "
                "'rfgen.calibration', 'rfgen.quality', 'rfgen.foundation.core.types')",
                "for name in current:",
                "    importlib.import_module(name)",
                "for name in retired:",
                "    try:",
                "        importlib.import_module(name)",
                "    except ModuleNotFoundError as exc:",
                "        assert name == exc.name or name.startswith(exc.name + '.'), (name, exc.name)",
                "    else:",
                "        raise AssertionError(f'retired import resolved: {name}')",
                "points = importlib.metadata.entry_points()",
                "for group in ('rfgen.emitters', 'rfgen.channels', 'rfgen.stores', 'rfgen.labelers'):",
                "    assert not tuple(points.select(group=group)), group",
            )
        ),
        cwd=tmp_path,
    )
    assert result.returncode == 0
