fix(install): resolve uv shims before salvage and validate the copy in place
Install-Uv accepted any file at $HermesHome\bin\uv.exe, and copied whatever `Get-Command uv` returned into that location. Chocolatey's bin\uv.exe is a ShimGen launcher that locates ..\lib\uv\tools\uv.exe RELATIVE to itself, so the copy is dead on arrival; `& exe --version` does not throw on a nonzero exit, so the launcher passed the try/catch and the Python stage then failed with "Python 3.11 not available" (#110350). The re-run path trusted the same broken copy again. Building on KoNit-K's Test-ManagedUvBinary and its three call sites: - Test-ManagedUvBinary merges stderr, relaxes the error preference, and returns the `uv <version>` line only on exit 0 -- a launcher's error text can no longer surface as "Managed uv found (Cannot find file ...)". - Resolve-UvShimTarget maps a candidate to the standalone binary before the copy: `<name>.shim` sidecar (Scoop), the Chocolatey bin\ -> lib\<pkg>\tools\ layout, symlinks (winget Links\); other reparse points (WindowsApps app-execution aliases) have no copyable file and skip the salvage. - The salvage rung validates the candidate where it lives, copies, then validates the COPY at its new location and removes it on failure, so the stage fails honestly instead of reporting success over a dead launcher. - scripts/tests/test-install-ps1-uv-shim-validation.ps1 drives the real Install-Uv with compiled fake uv binaries (a working uv and a location-relative launcher) under stubbed installer rungs; wired into installer-tests.yml for pwsh 7 and Windows PowerShell 5.1. Co-authored-by: joaomarcos <joaomarcosdias444@gmail.com>
This commit is contained in:
8
.github/workflows/installer-tests.yml
vendored
8
.github/workflows/installer-tests.yml
vendored
@@ -44,3 +44,11 @@ jobs:
|
||||
- name: System Node and npm compatibility (Windows PowerShell 5.1)
|
||||
shell: powershell
|
||||
run: powershell -NoProfile -ExecutionPolicy Bypass -File scripts/tests/test-install-ps1-node-compatibility.ps1
|
||||
|
||||
- name: Managed uv acceptance rejects relocated shims (pwsh 7)
|
||||
shell: pwsh
|
||||
run: pwsh -NoProfile -ExecutionPolicy Bypass -File scripts/tests/test-install-ps1-uv-shim-validation.ps1
|
||||
|
||||
- name: Managed uv acceptance rejects relocated shims (Windows PowerShell 5.1)
|
||||
shell: powershell
|
||||
run: powershell -NoProfile -ExecutionPolicy Bypass -File scripts/tests/test-install-ps1-uv-shim-validation.ps1
|
||||
|
||||
Reference in New Issue
Block a user