@@ -183,7 +183,7 @@ def test_module_plan() -> None:
183183 assert payload ["plan" ]["backup" ]["rollback_release_id" ] == "20260621T170342Z" , payload
184184 assert "loopx update --rollback 20260621T170342Z" in payload ["plan" ]["backup" ]["rollback_command" ], payload
185185 assert "ln -sfn" not in payload ["plan" ]["backup" ]["rollback_command" ], payload
186- assert "LOOPX_ARCHIVE_URL= https://example.invalid/loopx.tar.gz" in payload ["plan" ]["install_command" ], payload
186+ assert "--archive-url https://example.invalid/loopx.tar.gz" in payload ["plan" ]["install_command" ], payload
187187 rendered = render_update_plan_markdown (payload )
188188 assert "**No update was applied.**" in rendered , rendered
189189 assert "## Next Action" in rendered , rendered
@@ -199,8 +199,8 @@ def test_default_source_uses_stable_ref() -> None:
199199 assert payload ["source" ]["channel" ] == "github_archive_stable" , payload
200200 assert payload ["source" ]["ref_source" ] == "default_stable" , payload
201201 assert "/tar.gz/stable" in payload ["source" ]["archive_url" ], payload
202- assert "LOOPX_REF=stable" in payload ["plan" ]["install_command" ], payload
203- assert "LOOPX_ARCHIVE_URL= " not in payload ["plan" ]["install_command" ], payload
202+ assert payload ["plan" ]["install_command" ] == "loopx update apply" , payload
203+ assert "--archive-url " not in payload ["plan" ]["install_command" ], payload
204204 default_env = _installer_env_for_source (
205205 payload ["source" ],
206206 base_env = {"LOOPX_ARCHIVE_URL" : "https://stale.invalid/archive.tar.gz" },
@@ -216,47 +216,19 @@ def test_explicit_archive_url_reaches_installer() -> None:
216216 doctor_payload = fake_doctor_payload (),
217217 )
218218 assert payload ["source" ]["channel" ] == "github_archive_url_override" , payload
219- assert "LOOPX_ARCHIVE_URL= https://example.invalid/loopx.tar.gz" in payload ["plan" ]["install_command" ], payload
220- assert "set -o errexit -o pipefail " in payload ["plan" ]["install_command" ], payload
221- assert "export LOOPX_REPO= example/loopx" in payload ["plan" ]["install_command" ], payload
222- assert "export LOOPX_REF= fixture" in payload ["plan" ]["install_command" ], payload
219+ assert "--archive-url https://example.invalid/loopx.tar.gz" in payload ["plan" ]["install_command" ], payload
220+ assert "loopx update apply " in payload ["plan" ]["install_command" ], payload
221+ assert "--repo example/loopx" in payload ["plan" ]["install_command" ], payload
222+ assert "--ref fixture" in payload ["plan" ]["install_command" ], payload
223223 installer_env = _installer_env_for_source (payload ["source" ], base_env = {})
224224 assert installer_env ["LOOPX_ARCHIVE_URL" ] == "https://example.invalid/loopx.tar.gz" , installer_env
225225
226226
227- def test_update_preview_stops_before_doctor_when_download_fails () -> None :
228- payload = build_update_plan (
229- repo = "example/loopx" ,
230- ref = "fixture" ,
231- archive_url = "https://example.invalid/loopx.tar.gz" ,
232- execute = False ,
233- doctor_payload = fake_doctor_payload (),
234- )
235- with TemporaryDirectory () as tmpdir :
236- bin_dir = Path (tmpdir )
237- marker_path = bin_dir / "doctor-ran"
238- curl_bin = bin_dir / "curl"
239- curl_bin .write_text ("#!/usr/bin/env bash\n exit 22\n " , encoding = "utf-8" )
240- curl_bin .chmod (0o755 )
241- loopx_bin = bin_dir / "loopx"
242- loopx_bin .write_text (
243- "#!/usr/bin/env bash\n "
244- f"touch { json .dumps (str (marker_path ))} \n "
245- "exit 0\n " ,
246- encoding = "utf-8" ,
247- )
248- loopx_bin .chmod (0o755 )
249- env = dict (os .environ )
250- env ["PATH" ] = f"{ bin_dir } { os .pathsep } { env .get ('PATH' , '' )} "
251- result = subprocess .run (
252- ["bash" , "-c" , payload ["plan" ]["install_command" ]],
253- text = True ,
254- capture_output = True ,
255- env = env ,
256- )
257-
258- assert result .returncode == 22 , result
259- assert not marker_path .exists (), result
227+ def test_update_preview_uses_managed_download_path () -> None :
228+ payload = build_update_plan (doctor_payload = fake_doctor_payload ())
229+ command = payload ["plan" ]["install_command" ]
230+ assert command .startswith ("loopx update apply" ), command
231+ assert "curl" not in command , command
260232
261233
262234def test_execute_update_propagates_installer_download_failure () -> None :
@@ -290,10 +262,13 @@ def test_execute_update_propagates_installer_download_failure() -> None:
290262
291263 assert result ["ok" ] is False , result
292264 install_command = run .call_args_list [0 ].args [0 ]
293- assert install_command [: 2 ] == [ "bash" , "-lc" ] , install_command
294- assert "set -o pipefail " in install_command [ 2 ] , install_command
265+ assert install_command [0 ] == "curl" , install_command
266+ assert "--output " in install_command , install_command
295267 assert result ["execution" ]["install_returncode" ] == 22 , result
296268 assert result ["execution" ]["doctor_returncode" ] == 0 , result
269+ assert result ["execution" ]["installer_download" ]["stage" ] == "installer_download" , result
270+ assert result ["changes_applied" ] is False , result
271+ assert "Download attempt 1: HTTP `0`, curl `22`" in render_update_plan_markdown (result )
297272
298273
299274def test_active_release_python_reaches_installer () -> None :
@@ -562,7 +537,7 @@ def main() -> int:
562537 test_module_plan ()
563538 test_default_source_uses_stable_ref ()
564539 test_explicit_archive_url_reaches_installer ()
565- test_update_preview_stops_before_doctor_when_download_fails ()
540+ test_update_preview_uses_managed_download_path ()
566541 test_execute_update_propagates_installer_download_failure ()
567542 test_active_release_python_reaches_installer ()
568543 test_active_release_python_marker_fails_closed ()
0 commit comments