diff --git a/items/upgrade.ps1 b/items/upgrade.ps1 index 227b710..80303c7 100644 --- a/items/upgrade.ps1 +++ b/items/upgrade.ps1 @@ -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 起用户不用自己装)。 @@ -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" diff --git a/tests/upgrade-version.ps1 b/tests/upgrade-version.ps1 index 3807cf9..c74dea3 100644 --- a/tests/upgrade-version.ps1 +++ b/tests/upgrade-version.ps1 @@ -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 = '包清单版本无效' } @@ -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')) { @@ -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" @@ -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"