diff --git a/supervisor/addons/addon.py b/supervisor/addons/addon.py index 89dba8fbc..57cbcdaa9 100644 --- a/supervisor/addons/addon.py +++ b/supervisor/addons/addon.py @@ -716,7 +716,7 @@ class Addon(AddonModel): """ if await self.instance.is_running(): _LOGGER.warning("%s is already running!", self.slug) - return + return self._wait_for_startup() # Access Token self.persist[ATTR_ACCESS_TOKEN] = secrets.token_hex(56) diff --git a/tests/addons/test_addon.py b/tests/addons/test_addon.py index 72c8a4dac..edfde3b7e 100644 --- a/tests/addons/test_addon.py +++ b/tests/addons/test_addon.py @@ -471,3 +471,22 @@ async def test_restore( start_task = await coresys.addons.restore(TEST_ADDON_SLUG, tarfile) assert bool(start_task) is (status == "running") + + +async def test_start_when_running( + coresys: CoreSys, + install_addon_ssh: Addon, + container: MagicMock, + caplog: pytest.LogCaptureFixture, +) -> None: + """Test starting an addon without healthcheck.""" + container.status = "running" + await install_addon_ssh.load() + assert install_addon_ssh.state == AddonState.STARTED + + caplog.clear() + start_task = await install_addon_ssh.start() + assert start_task + await start_task + + assert "local_ssh is already running" in caplog.text