Harden Windows deferred update wait
ci / test (push) Canceled after 0s
ci / fuzz-smoke (push) Canceled after 0s
ci / macos-client (macos-aarch64, macos-14) (push) Canceled after 0s
ci / macos-client (macos-x86_64, macos-13) (push) Canceled after 0s
ci / windows-client (push) Canceled after 0s
ci / package-release (linux-x86_64, ubuntu-latest, , , ) (push) Canceled after 0s
ci / package-release (macos-aarch64, macos-14, , , ) (push) Canceled after 0s
ci / package-release (macos-x86_64, macos-13, , , ) (push) Canceled after 0s
ci / package-release (windows-aarch64, windows-latest, aarch64, windows, aarch64-pc-windows-msvc) (push) Canceled after 0s
ci / package-release (windows-x86_64, windows-latest, , , ) (push) Canceled after 0s
ci / remote-bench (push) Canceled after 0s
ci / publish-gitea-release (push) Canceled after 0s
ci / test (push) Canceled after 0s
ci / fuzz-smoke (push) Canceled after 0s
ci / macos-client (macos-aarch64, macos-14) (push) Canceled after 0s
ci / macos-client (macos-x86_64, macos-13) (push) Canceled after 0s
ci / windows-client (push) Canceled after 0s
ci / package-release (linux-x86_64, ubuntu-latest, , , ) (push) Canceled after 0s
ci / package-release (macos-aarch64, macos-14, , , ) (push) Canceled after 0s
ci / package-release (macos-x86_64, macos-13, , , ) (push) Canceled after 0s
ci / package-release (windows-aarch64, windows-latest, aarch64, windows, aarch64-pc-windows-msvc) (push) Canceled after 0s
ci / package-release (windows-x86_64, windows-latest, , , ) (push) Canceled after 0s
ci / remote-bench (push) Canceled after 0s
ci / publish-gitea-release (push) Canceled after 0s
This commit is contained in:
+16
-2
@@ -4809,7 +4809,12 @@ fn windows_deferred_update_script(parent_pid: u32, installer_script: &str) -> St
|
|||||||
format!(
|
format!(
|
||||||
"$ErrorActionPreference='Stop';\
|
"$ErrorActionPreference='Stop';\
|
||||||
$ProgressPreference='SilentlyContinue';\
|
$ProgressPreference='SilentlyContinue';\
|
||||||
while (Get-Process -Id {parent_pid} -ErrorAction SilentlyContinue) {{ \
|
$parent=Get-Process -Id {parent_pid} -ErrorAction SilentlyContinue;\
|
||||||
|
$parentStart=if ($parent) {{ $parent.StartTime }} else {{ $null }};\
|
||||||
|
while ($true) {{ \
|
||||||
|
$current=Get-Process -Id {parent_pid} -ErrorAction SilentlyContinue;\
|
||||||
|
if (-not $current) {{ break }};\
|
||||||
|
if ($parentStart -and $current.StartTime -ne $parentStart) {{ break }};\
|
||||||
Start-Sleep -Milliseconds 100 \
|
Start-Sleep -Milliseconds 100 \
|
||||||
}};\
|
}};\
|
||||||
{installer_script}"
|
{installer_script}"
|
||||||
@@ -13172,6 +13177,15 @@ mod tests {
|
|||||||
);
|
);
|
||||||
let deferred = windows_deferred_update_script(4242, &installer);
|
let deferred = windows_deferred_update_script(4242, &installer);
|
||||||
assert!(deferred.contains("Get-Process -Id 4242 -ErrorAction SilentlyContinue"));
|
assert!(deferred.contains("Get-Process -Id 4242 -ErrorAction SilentlyContinue"));
|
||||||
|
assert!(
|
||||||
|
deferred.contains("$parentStart=if ($parent) { $parent.StartTime } else { $null }")
|
||||||
|
);
|
||||||
|
assert!(deferred.contains("$current=Get-Process -Id 4242 -ErrorAction SilentlyContinue"));
|
||||||
|
assert!(deferred.contains("if (-not $current) { break }"));
|
||||||
|
assert!(
|
||||||
|
deferred
|
||||||
|
.contains("if ($parentStart -and $current.StartTime -ne $parentStart) { break }")
|
||||||
|
);
|
||||||
assert!(deferred.contains("Start-Sleep -Milliseconds 100"));
|
assert!(deferred.contains("Start-Sleep -Milliseconds 100"));
|
||||||
assert!(
|
assert!(
|
||||||
deferred.contains(
|
deferred.contains(
|
||||||
@@ -13179,7 +13193,7 @@ mod tests {
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
assert!(
|
assert!(
|
||||||
deferred.find("Get-Process -Id 4242").unwrap()
|
deferred.find("$parentStart").unwrap()
|
||||||
< deferred.find("irm 'https://git.palav.dev").unwrap()
|
< deferred.find("irm 'https://git.palav.dev").unwrap()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user