mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-05-12 06:39:39 +08:00
- 将 buildWindowsScript 改为模板占位符替换,避免 fmt.Sprintf 吞掉批处理百分号 - 修正 for %%I/%%F 语法,消除“此时不应有 TARGET~nxI”报错 - 保留原有更新重试与日志流程,不改变下载与安装主链路 - refs #112
41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
package app
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestBuildWindowsScriptKeepsBatchForSyntax(t *testing.T) {
|
|
script := buildWindowsScript(
|
|
`C:\tmp\GoNavi-v0.4.0-windows-amd64.zip`,
|
|
`C:\Program Files\GoNavi\GoNavi.exe`,
|
|
`C:\Program Files\GoNavi\.gonavi-update-windows-v0.4.0`,
|
|
`C:\Program Files\GoNavi\logs\update-install.log`,
|
|
13579,
|
|
)
|
|
|
|
mustContain := []string{
|
|
`for %%I in ("%TARGET%") do set "TARGET_NAME=%%~nxI"`,
|
|
`for %%I in ("%SOURCE%") do set "SOURCE_EXT=%%~xI"`,
|
|
`for /R "%EXTRACT_DIR%" %%F in (*.exe) do (`,
|
|
`set "SOURCE_EXE=%%~fF"`,
|
|
}
|
|
for _, want := range mustContain {
|
|
if !strings.Contains(script, want) {
|
|
t.Fatalf("windows update script missing required token: %s\nscript:\n%s", want, script)
|
|
}
|
|
}
|
|
|
|
mustNotContain := []string{
|
|
`for %I in ("%TARGET%") do set "TARGET_NAME=%~nxI"`,
|
|
`for %I in ("%SOURCE%") do set "SOURCE_EXT=%~xI"`,
|
|
`for /R "%EXTRACT_DIR%" %F in (*.exe) do (`,
|
|
`set "SOURCE_EXE=%~fF"`,
|
|
}
|
|
for _, bad := range mustNotContain {
|
|
if strings.Contains(script, bad) {
|
|
t.Fatalf("windows update script contains invalid batch syntax: %s\nscript:\n%s", bad, script)
|
|
}
|
|
}
|
|
}
|