Skip to content

Commit 0c7a539

Browse files
committed
test(ci): add CMD and PowerShell self-update tests on Windows
Validate the junction swap fix from all three shell types on Windows by adding pwsh and cmd test steps alongside the existing bash test.
1 parent 83646af commit 0c7a539

1 file changed

Lines changed: 88 additions & 1 deletion

File tree

.github/workflows/ci.yml

Lines changed: 88 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ jobs:
418418
which vp
419419
vp --version
420420
421-
- name: Test self-update
421+
- name: Test self-update (bash)
422422
shell: bash
423423
run: |
424424
# Helper to read the installed CLI version from package.json
@@ -463,6 +463,93 @@ jobs:
463463
exit 1
464464
fi
465465
466+
- name: Test self-update (powershell)
467+
if: matrix.os == 'windows-latest'
468+
shell: pwsh
469+
run: |
470+
# Helper to read the installed CLI version from package.json
471+
function Get-CliVersion {
472+
node -p "require(require('path').resolve(process.env.USERPROFILE, '.vite-plus', 'current', 'package.json')).version"
473+
}
474+
475+
# Save initial (dev build) version
476+
$initialVersion = Get-CliVersion
477+
Write-Host "Initial version: $initialVersion"
478+
479+
# --check queries npm registry and prints update status
480+
vp self-update --check
481+
# upgrade alias should also work
482+
vp upgrade --check
483+
484+
# full self-update: download, extract, swap
485+
vp self-update --tag test --force
486+
vp --version
487+
vp env doctor
488+
489+
Get-ChildItem "$env:USERPROFILE\.vite-plus\"
490+
491+
# Verify version changed after update
492+
$updatedVersion = Get-CliVersion
493+
Write-Host "Updated version: $updatedVersion"
494+
if ($updatedVersion -eq $initialVersion) {
495+
Write-Error "Error: version should have changed after self-update (still $initialVersion)"
496+
exit 1
497+
}
498+
499+
# rollback to the previous version
500+
vp self-update --rollback
501+
vp --version
502+
vp env doctor
503+
504+
# Verify version restored after rollback
505+
$rollbackVersion = Get-CliVersion
506+
Write-Host "Rollback version: $rollbackVersion"
507+
if ($rollbackVersion -ne $initialVersion) {
508+
Write-Error "Error: version should have been restored after rollback (expected $initialVersion, got $rollbackVersion)"
509+
exit 1
510+
}
511+
512+
- name: Test self-update (cmd)
513+
if: matrix.os == 'windows-latest'
514+
shell: cmd
515+
run: |
516+
REM Save initial (dev build) version
517+
for /f "usebackq delims=" %%v in (`node -p "require(require('path').resolve(process.env.USERPROFILE, '.vite-plus', 'current', 'package.json')).version"`) do set INITIAL_VERSION=%%v
518+
echo Initial version: %INITIAL_VERSION%
519+
520+
REM --check queries npm registry and prints update status
521+
vp self-update --check
522+
REM upgrade alias should also work
523+
vp upgrade --check
524+
525+
REM full self-update: download, extract, swap
526+
vp self-update --tag test --force
527+
vp --version
528+
vp env doctor
529+
530+
dir "%USERPROFILE%\.vite-plus\"
531+
532+
REM Verify version changed after update
533+
for /f "usebackq delims=" %%v in (`node -p "require(require('path').resolve(process.env.USERPROFILE, '.vite-plus', 'current', 'package.json')).version"`) do set UPDATED_VERSION=%%v
534+
echo Updated version: %UPDATED_VERSION%
535+
if "%UPDATED_VERSION%"=="%INITIAL_VERSION%" (
536+
echo Error: version should have changed after self-update, still %INITIAL_VERSION%
537+
exit /b 1
538+
)
539+
540+
REM rollback to the previous version
541+
vp self-update --rollback
542+
vp --version
543+
vp env doctor
544+
545+
REM Verify version restored after rollback
546+
for /f "usebackq delims=" %%v in (`node -p "require(require('path').resolve(process.env.USERPROFILE, '.vite-plus', 'current', 'package.json')).version"`) do set ROLLBACK_VERSION=%%v
547+
echo Rollback version: %ROLLBACK_VERSION%
548+
if not "%ROLLBACK_VERSION%"=="%INITIAL_VERSION%" (
549+
echo Error: version should have been restored after rollback, expected %INITIAL_VERSION%, got %ROLLBACK_VERSION%
550+
exit /b 1
551+
)
552+
466553
install-e2e-test:
467554
name: Local CLI `vite install` E2E test
468555
needs:

0 commit comments

Comments
 (0)