"""Test to check for circular imports in core components."""

import asyncio
import sys

import pytest

from homeassistant.bootstrap import (
    CORE_INTEGRATIONS,
    DEBUGGER_INTEGRATIONS,
    DEFAULT_INTEGRATIONS,
    FRONTEND_INTEGRATIONS,
    LOGGING_AND_HTTP_DEPS_INTEGRATIONS,
    RECORDER_INTEGRATIONS,
    STAGE_1_INTEGRATIONS,
)


@pytest.mark.timeout(30)  # cloud can take > 9s
@pytest.mark.parametrize(
    "component",
    sorted(
        {
            *DEBUGGER_INTEGRATIONS,
            *CORE_INTEGRATIONS,
            *LOGGING_AND_HTTP_DEPS_INTEGRATIONS,
            *FRONTEND_INTEGRATIONS,
            *RECORDER_INTEGRATIONS,
            *STAGE_1_INTEGRATIONS,
            *DEFAULT_INTEGRATIONS,
        }
    ),
)
async def test_circular_imports(component: str) -> None:
    """Check that components can be imported without circular imports."""
    process = await asyncio.create_subprocess_exec(
        sys.executable, "-c", f"import homeassistant.components.{component}"
    )
    await process.communicate()
    assert process.returncode == 0