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
4 changes: 2 additions & 2 deletions items/fetch-lib.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
$script:FetchZips = @('platform-tools_r37.0.1-win.zip', 'x86_64-34_r14.zip')

# 这个组包目录要跑哪几遍:命令行(cli)总跑;包根还有「补全组件.bat」的(0.38.1 及更早)再跑批处理(bat)。
# 0.39 起包里没有批处理,补全组件在管理器和命令行里(ModAVD/ModAVD#119)。没有 tools\modavd.exe 的不是组包目录,报错。
# 0.38.2 起包里没有批处理,补全组件在管理器和命令行里(ModAVD/ModAVD#119)。没有 tools\modavd.exe 的不是组包目录,报错。
function Get-FetchPasses([string]$Package) {
if (-not (Test-Path -LiteralPath (Join-Path $Package 'tools\modavd.exe') -PathType Leaf)) {
throw "不是组包目录(要有 tools\modavd.exe):$Package"
Expand Down Expand Up @@ -107,7 +107,7 @@ function Invoke-FetchItem {

# 2. 批处理(只有 0.38.1 及更早的包有):zip 用上一步留下的(或缓存的)
if ($passes -notcontains 'bat') {
$notes += '包里没有「补全组件.bat」(0.39 起),只跑了命令行这一遍'
$notes += '包里没有「补全组件.bat」(0.38.2 起),只跑了命令行这一遍'
} else {
$batRoot = Join-Path $Work 'bat'
New-FetchRoot $Package $batRoot
Expand Down
2 changes: 1 addition & 1 deletion items/fetch.ps1
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# 打完包补跑:用组包目录搭新的根目录,从空补全组件(adb 和系统镜像)。
# 0.37.0–0.38.0 的「补全组件.bat」装系统镜像必然失败,回归一直没测出来:别的项都把组件链到官方 SDK,不走补全组件。
# - 命令行:tools\modavd.exe components fetch --accept-license --keep-downloads --json,两样都装好、都是这次下的。
# - 批处理:只有包根还有「补全组件.bat」时才跑(0.38.1 及更早;0.39 起包里没有批处理,补全组件在管理器和命令行里,
# - 批处理:只有包根还有「补全组件.bat」时才跑(0.38.1 及更早;0.38.2 起包里没有批处理,补全组件在管理器和命令行里,
# ModAVD/ModAVD#119)。另搭一个根目录,把上一步下好的两个 zip 放进 downloads\(不重下 1.5 GB),用重定向的输入跑它:
# 它调 fetch-components.ps1,只问许可协议,结尾 pause 也喂一个回车,退出码 0。
# - 各个根目录最后都再跑一次 components fetch:两样都算齐全、跳过(「齐全」按 fetch 的严格规则,不是 status 的宽松规则)。
Expand Down
6 changes: 3 additions & 3 deletions tests/fetch-item.ps1
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#requires -Version 7.0
# fetch 项(items\fetch-lib.ps1 的 Invoke-FetchItem)的测试:命令行和批处理都换成假的,不跑任何真程序、不联网、不开模拟器。
# - 包里没有「补全组件.bat」(0.39 起,ModAVD/ModAVD#119)只跑命令行那一遍;有的(0.38.1 及更早)两遍都跑;
# - 包里没有「补全组件.bat」(0.38.2 起,ModAVD/ModAVD#119)只跑命令行那一遍;有的(0.38.1 及更早)两遍都跑;
# 没有 tools\modavd.exe 的不是组包目录。
# - 两遍跑的时候 LOCALAPPDATA 都指到工作目录里的空目录,跑完(出错也一样)换回原值;「本机的」LOCALAPPDATA 一个文件都不变。
# 这个测试碰不到真的 %LOCALAPPDATA%\ModAVD,被测代码就算坏了(变异检查会故意弄坏)也一样:「本机的」LOCALAPPDATA 是
Expand Down Expand Up @@ -119,12 +119,12 @@ try {
Check ((Snapshot $userLad) -eq $userBefore) "${Case}:「本机的」LOCALAPPDATA 被动过了"
}

$noBat = New-FakePackage 'pkg-0.39'
$noBat = New-FakePackage 'pkg-0.38.2'
$withBat = New-FakePackage 'pkg-0.38.1' -Bat
Check ((@(Get-FetchPasses $noBat) -join ',') -eq 'cli') '没有批处理的包只跑命令行'
Check ((@(Get-FetchPasses $withBat) -join ',') -eq 'cli,bat') '有批处理的包两遍都跑'

# ---- 1. 0.39 起的包(没有批处理):只跑命令行那一遍,结果 pass,结果里写一句
# ---- 1. 0.38.2 起的包(没有批处理):只跑命令行那一遍,结果 pass,结果里写一句
$r = Invoke-FakeFetch $noBat
Check $r.Pass "没有批处理的包应该 pass:$($r.Summary)"
Check ($r.Summary -match '只跑了命令行这一遍') "结果里要写只跑了命令行:$($r.Summary)"
Expand Down