"""Test the Profiler config flow.""" import os from homeassistant import setup from homeassistant.components.profiler import CONF_SECONDS, SERVICE_START from homeassistant.components.profiler.const import DOMAIN from tests.async_mock import patch from tests.common import MockConfigEntry async def test_basic_usage(hass, tmpdir): """Test we can setup and the service is registered.""" test_dir = tmpdir.mkdir("profiles") await setup.async_setup_component(hass, "persistent_notification", {}) entry = MockConfigEntry(domain=DOMAIN) entry.add_to_hass(hass) assert await hass.config_entries.async_setup(entry.entry_id) await hass.async_block_till_done() assert hass.services.has_service(DOMAIN, SERVICE_START) last_filename = None def _mock_path(filename): nonlocal last_filename last_filename = f"{test_dir}/{filename}" return last_filename with patch("homeassistant.components.profiler.cProfile.Profile"), patch.object( hass.config, "path", _mock_path ): await hass.services.async_call(DOMAIN, SERVICE_START, {CONF_SECONDS: 0.000001}) await hass.async_block_till_done() assert os.path.exists(last_filename) assert await hass.config_entries.async_unload(entry.entry_id) await hass.async_block_till_done()