Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions items/upgrade.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# 用上一版正式包的组包目录搭一个根目录:adb、系统镜像链到 sdk-official,代替「补全组件」的下载;mas-avd.json 只写私有端口
# 和端口段(portBase),和 AUTO-MAS 加根目录时一样。用旧模拟器新建一台实例、开机、写标记数据、关机。旧包里没有 modavd,
# 开关机用新编的,它是 AUTO-MAS 开关机流程的移植。再照「怎么更新」把新包整个覆盖上去(avd 不动),然后核对:
# - 包根清单的版本号上升(SDK 或缺清单时按构建号是否改变判),包根的 ModAVD.exe / tools\modavd.exe / tools\modavd-bridge.ps1 都在
# - 组包目录按包根清单的版本号是否上升判,缺清单时按构建号判;SDK 构建号相同只记说明。包根文件都在
# - 用包里的 tools\modavd.exe 开机,标记数据都在
# - set --data-gb 改大后开机扩满(旧模拟器建的 64 GB 盘)
# - 升级后第一次用 modavd(管理器同一套)照常开机,旧实例自己装上执行桥(10-30 起用户不用自己装)。
Expand Down Expand Up @@ -174,11 +174,13 @@ echo "sdwait=$i"
# SDK 覆盖和不带清单的旧包会留下原清单,不能把它当成新包的版本。
$newVersion = if ($nextHasManifest) { PackageVersion $root } else { $null }
if ($nextHasManifest -and -not $newVersion) { throw '覆盖后缺 modavd-manifest.json' }
if ($oldVersion -and $newVersion) {
if (-not $nextIsTree) {
if ($newId -eq $oldId) { $notes += 'SDK 模式,构建号没变,补丁版只换管理器时正常' }
} elseif ($oldVersion -and $newVersion) {
$notes += "清单版本 $($oldVersion.Text) -> $($newVersion.Text)"
if ($newVersion.Value -le $oldVersion.Value) { $problems += "覆盖后清单版本没有上升:$($oldVersion.Text) -> $($newVersion.Text)" }
} else {
$notes += 'SDK 或缺包清单,按构建号判定'
$notes += '缺包清单,按构建号判定'
if ($newId -eq $oldId) { $problems += "覆盖后构建号还是 $oldId" }
}
$notes += "构建号 $oldId -> $newId"
Expand Down
16 changes: 13 additions & 3 deletions tests/upgrade-version.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,13 @@ try {
@{ Name = 'missing new manifest, same build'; Old = 'v0.37.0'; Pass = $false; Fallback = $true; Problem = '构建号还是' }
@{ Name = 'both manifests missing'; OldId = 'mas-36'; Pass = $true; Fallback = $true }
@{ Name = 'both manifests missing, same build'; Pass = $false; Fallback = $true; Problem = '构建号还是' }
@{ Name = 'SDK with unrelated manifest'; Old = 'v0.37.0'; New = 'v9.0.0'; Sdk = $true; OldId = 'mas-36'; Pass = $true; Fallback = $true }
@{ Name = 'SDK, same build'; Old = 'v0.37.0'; New = 'v9.0.0'; Sdk = $true; Pass = $false; Fallback = $true; Problem = '构建号还是' }
@{ Name = 'SDK with unrelated manifest, different build'; Old = 'v0.37.0'; New = 'v9.0.0'; Sdk = $true; OldId = 'mas-36'; Pass = $true }
@{ Name = 'SDK with unrelated manifest, same build'; Old = 'v0.37.0'; New = 'v9.0.0'; Sdk = $true; Pass = $true; SameSdk = $true }
@{ Name = 'SDK without manifest, same build'; Old = 'v0.37.0'; Sdk = $true; Pass = $true; SameSdk = $true }
@{ Name = 'SDK without manifest, different build'; Old = 'v0.37.0'; Sdk = $true; OldId = 'mas-36'; Pass = $true }
@{ Name = 'SDK without old manifest, same build'; Sdk = $true; Pass = $true; SameSdk = $true }
@{ Name = 'SDK with malformed unrelated manifest'; Old = 'v0.37.0'; NewRaw = '{'; Sdk = $true; Pass = $true; SameSdk = $true }
@{ Name = 'package with SDK-shaped directory, same build'; Old = 'v0.37.0'; PackageAlsoSdk = $true; Pass = $false; Fallback = $true; Problem = '构建号还是' }
@{ Name = 'bad old JSON'; OldRaw = '{'; New = 'v0.37.1'; Pass = $false; Problem = '包清单版本无效' }
@{ Name = 'bad new JSON must not fall back'; Old = 'v0.37.0'; NewRaw = '{'; OldId = 'mas-36'; Pass = $false; Problem = '包清单版本无效' }
@{ Name = 'missing version must not fall back'; Old = 'v0.37.0'; NewRaw = '{}'; OldId = 'mas-36'; Pass = $false; Problem = '包清单版本无效' }
Expand All @@ -77,6 +82,7 @@ try {
}
Manifest $prev $case.Old $case.OldRaw
Manifest $next $case.New $case.NewRaw
if ($case.PackageAlsoSdk) { Put (Join-Path $next 'emulator\emulator.exe') 'fixture' }
$env:MODAVD_REGRESS_PACKAGE = Join-Path $next 'tools'
$fixture = @{ Script = ''; Tag = ''; Starts = 0; Stops = 0 }
foreach ($exe in (Join-Path $work 'cli\modavd.exe'), (Join-Path $work 'root\tools\modavd.exe')) {
Expand Down Expand Up @@ -108,7 +114,7 @@ try {
}
function global:Get-CimInstance { @() }
$nextArg = if ($case.Sdk) { Join-Path $next 'sdk' } else { $next }
if ($case.Sdk -and $case.New) { Manifest $nextArg $case.New '' }
if ($case.Sdk) { Manifest $nextArg $case.New $case.NewRaw }
$output = @(& $item -Prev $prev -Next $nextArg -ModavdOut $next -Work $work -Official $official -Keep)
$rows = @($output | Where-Object { $_ -like 'REGRESS-RESULT *' })
Check ($rows.Count -eq 1) "$($case.Name): one result"
Expand All @@ -120,6 +126,10 @@ try {
Check (-not $result.summary.Contains('清单版本 ')) "$($case.Name): stale manifest ignored"
}
if ($case.Version) { Check ($result.summary.Contains("清单版本 $($case.Version)")) "$($case.Name): manifest versions recorded" }
if ($case.Sdk) {
Check (-not $result.summary.Contains('清单版本 ')) "$($case.Name): SDK manifest ignored"
Check ($result.summary.Contains('SDK 模式,构建号没变') -eq [bool]$case.SameSdk) "$($case.Name): same-build explanation"
}
if (-not ($case.Problem -eq '包清单版本无效')) {
Check ($result.summary.Contains("构建号 $oldId -> mas-37")) "$($case.Name): build IDs recorded"
Check ($fixture.Starts -eq 4 -and $fixture.Stops -eq 4) "$($case.Name): full upgrade and final stop exercised"
Expand Down