@@ -284,6 +284,43 @@ def test_setup_hook_uses_resolve_hook_with_post_install(self):
284284 )
285285
286286
287+ # --- Install "up -d" must not use --no-deps (regression) ---
288+ #
289+ # _handle_install previously passed --no-deps to `docker compose up -d`, which
290+ # prevented an extension's private sidecar services (declared in its own
291+ # compose fragment) from starting — including cross-extension depends_on
292+ # relationships like perplexica -> searxng. The fix removes --no-deps from
293+ # the install path only; docker_compose_recreate (used for core-service
294+ # force-recreate after a model swap) intentionally keeps --no-deps.
295+
296+
297+ class TestInstallStartCommandNoDeps :
298+
299+ def _install_source (self ):
300+ import inspect
301+ return inspect .getsource (_mod .AgentHandler ._handle_install )
302+
303+ def _recreate_source (self ):
304+ import inspect
305+ return inspect .getsource (_mod .docker_compose_recreate )
306+
307+ def test_install_up_command_does_not_pass_no_deps (self ):
308+ src = self ._install_source ()
309+ assert '"--no-deps"' not in src and "'--no-deps'" not in src , (
310+ "_handle_install must not pass --no-deps to `docker compose up -d`; "
311+ "extensions with private sidecars or cross-extension depends_on "
312+ "need compose to bring dependencies up."
313+ )
314+
315+ def test_docker_compose_recreate_still_uses_no_deps (self ):
316+ src = self ._recreate_source ()
317+ assert '"--no-deps"' in src or "'--no-deps'" in src , (
318+ "docker_compose_recreate must keep --no-deps; "
319+ "core-service recreation (e.g. after a model swap) is intentionally "
320+ "scoped to the named services only."
321+ )
322+
323+
287324# --- _handle_env_update ---
288325
289326
0 commit comments