@@ -902,14 +902,8 @@ def run_deploy_cli(
902902 mocks .verify_managed_runtime = stack .enter_context (
903903 mock .patch ("timecapsulesmb.cli.flows.verify_managed_runtime" , return_value = verify_runtime )
904904 )
905- mocks .remote_request_shutdown_reboot = stack .enter_context (
906- mock .patch ("timecapsulesmb.cli.flows.remote_request_shutdown_reboot" , side_effect = reboot_side_effect )
907- )
908905 mocks .remote_request_reboot = stack .enter_context (
909- mock .patch (
910- "timecapsulesmb.cli.flows.remote_request_reboot" ,
911- side_effect = AssertionError ("deploy should not request legacy SSH reboot directly" ),
912- )
906+ mock .patch ("timecapsulesmb.cli.flows.remote_request_reboot" , side_effect = reboot_side_effect )
913907 )
914908 mocks .acp_reboot = stack .enter_context (
915909 mock .patch (
@@ -4529,7 +4523,6 @@ def test_deploy_no_reboot_stops_after_upload_phase(self) -> None:
45294523 )
45304524
45314525 self .assertEqual (result .rc , 0 )
4532- result .mocks .remote_request_shutdown_reboot .assert_not_called ()
45334526 result .mocks .remote_request_reboot .assert_not_called ()
45344527 self .assertEqual (result .mocks .verify_payload_home_conn .call_count , 2 )
45354528 result .mocks .flush_remote_filesystem_writes .assert_called_once ()
@@ -4546,7 +4539,6 @@ def test_deploy_payload_verification_failure_aborts_before_reboot(self) -> None:
45464539 )
45474540
45484541 self .assertEqual (str (result .exception ), "managed payload verification failed at /Volumes/dk2/.samba4: missing smbd" )
4549- result .mocks .remote_request_shutdown_reboot .assert_not_called ()
45504542 result .mocks .remote_request_reboot .assert_not_called ()
45514543 result .mocks .verify_payload_home_conn .assert_called_once ()
45524544 result .mocks .flush_remote_filesystem_writes .assert_not_called ()
@@ -4572,7 +4564,6 @@ def test_deploy_post_sync_payload_verification_failure_aborts_before_reboot(self
45724564 "managed payload verification failed at /Volumes/dk2/.samba4: missing payload directory" ,
45734565 )
45744566 result .mocks .flush_remote_filesystem_writes .assert_called_once ()
4575- result .mocks .remote_request_shutdown_reboot .assert_not_called ()
45764567 result .mocks .remote_request_reboot .assert_not_called ()
45774568 self .assertEqual (result .mocks .verify_payload_home_conn .call_count , 2 )
45784569 telemetry_error = self .telemetry_payload ("deploy_finished" )["error" ]
@@ -4591,7 +4582,6 @@ def test_deploy_declined_reboot_returns_without_rebooting(self) -> None:
45914582
45924583 self .assertEqual (result .rc , 0 )
45934584 self .assertIn ("Deployment complete without reboot." , result .text )
4594- result .mocks .remote_request_shutdown_reboot .assert_not_called ()
45954585 result .mocks .remote_request_reboot .assert_not_called ()
45964586 self .assertEqual (result .mocks .verify_payload_home_conn .call_count , 2 )
45974587 result .mocks .flush_remote_filesystem_writes .assert_called_once ()
@@ -4610,8 +4600,7 @@ def test_deploy_reboot_timeout_returns_failure(self) -> None:
46104600 self .assertEqual (result .rc , 1 )
46114601 self .assertIn ("SSH reboot request timed out; checking whether the device is rebooting..." , result .text )
46124602 self .assertIn (deploy .REBOOT_NO_DOWN_MESSAGE , result .text )
4613- result .mocks .remote_request_shutdown_reboot .assert_called_once ()
4614- result .mocks .remote_request_reboot .assert_not_called ()
4603+ result .mocks .remote_request_reboot .assert_called_once ()
46154604 result .mocks .acp_reboot .assert_not_called ()
46164605 result .mocks .verify_managed_runtime .assert_not_called ()
46174606
@@ -4673,7 +4662,6 @@ def test_deploy_netbsd4_yes_runs_activation_and_skips_reboot(self) -> None:
46734662 self .assertEqual (result .mocks .run_remote_actions .call_count , 3 )
46744663 self .assertEqual (result .mocks .verify_payload_home_conn .call_count , 2 )
46754664 result .mocks .flush_remote_filesystem_writes .assert_called_once ()
4676- result .mocks .remote_request_shutdown_reboot .assert_not_called ()
46774665 result .mocks .remote_request_reboot .assert_not_called ()
46784666 self .assertIn ("Activating NetBSD4 payload without reboot." , result .text )
46794667 self .assertIn ("NetBSD4 activation complete." , result .text )
@@ -7324,7 +7312,11 @@ def test_fsck_yes_reboots_and_waits_by_default(self) -> None:
73247312 self .assertIn ("^wcifsfs$" , remote_cmd )
73257313 self .assertIn ("umount -f /Volumes/dk2" , remote_cmd )
73267314 self .assertIn ("fsck_hfs -fy /dev/dk2" , remote_cmd )
7315+ self .assertIn ("exec </dev/null >/dev/null 2>&1" , remote_cmd )
7316+ self .assertIn ("/bin/sync; /bin/sleep 1;" , remote_cmd )
7317+ self .assertIn ("/sbin/shutdown -r now" , remote_cmd )
73277318 self .assertIn ("/sbin/reboot" , remote_cmd )
7319+ self .assertIn (") & exit 0" , remote_cmd )
73287320 self .assertEqual (wait_mock .call_args_list [0 ].kwargs , {"expected_up" : False , "timeout_seconds" : 90 })
73297321 self .assertEqual (wait_mock .call_args_list [1 ].kwargs , {"expected_up" : True , "timeout_seconds" : 420 })
73307322 text = output .getvalue ()
0 commit comments