refactor: use nginx -s reload instead of systemd

- doc: add comment
This commit is contained in:
2026-08-17 10:10:14 +08:00
parent 79f18fcdea
commit f536987a7e
62 changed files with 2216 additions and 598 deletions
@@ -12,6 +12,8 @@ import (
"testing"
)
// TestOpenAndExtractNativeBackend 验证正常流程:打开合法的原生后端更新包后,
// 元数据与身份正确,且 ExtractArtifact 提取出的内容与原始 JAR 完全一致。
func TestOpenAndExtractNativeBackend(t *testing.T) {
jar := []byte("native backend JAR")
packagePath := writeBackendPackage(t, jar, nil)
@@ -38,6 +40,8 @@ func TestOpenAndExtractNativeBackend(t *testing.T) {
}
}
// TestOpenRejectsUnknownManifestField 验证清单中出现大小写错误的未知字段时,
// OpenBackendNative 会返回包含该字段名的错误。
func TestOpenRejectsUnknownManifestField(t *testing.T) {
jar := []byte("native backend JAR")
packagePath := writeBackendPackage(t, jar, func(manifest map[string]any) {
@@ -49,6 +53,8 @@ func TestOpenRejectsUnknownManifestField(t *testing.T) {
}
}
// TestOpenRejectsMissingDeclaredArtifact 验证清单声明的 fileName 在 ZIP 中缺失时,
// OpenBackendNative 会返回包含该文件名的错误。
func TestOpenRejectsMissingDeclaredArtifact(t *testing.T) {
jar := []byte("native backend JAR")
packagePath := writePackageEntries(t, map[string][]byte{
@@ -63,6 +69,8 @@ func TestOpenRejectsMissingDeclaredArtifact(t *testing.T) {
}
}
// TestExtractRejectsArtifactDigestMismatch 验证清单中的 sha256 与实际工件不符时,
// ExtractArtifact 返回摘要不匹配错误,且不会在目标路径留下任何已发布文件。
func TestExtractRejectsArtifactDigestMismatch(t *testing.T) {
jar := []byte("native backend JAR")
packagePath := writeBackendPackage(t, jar, func(manifest map[string]any) {
@@ -83,6 +91,8 @@ func TestExtractRejectsArtifactDigestMismatch(t *testing.T) {
}
}
// TestOpenRejectsUnsafeAndDuplicateEntries 验证 OpenBackendNative 会拒绝包含
// 不安全路径条目(如 "../" 前缀)的更新包,以及包含重复 ZIP 条目的更新包。
func TestOpenRejectsUnsafeAndDuplicateEntries(t *testing.T) {
jar := []byte("native backend JAR")
manifest := manifestJSON(t, jar, nil)
@@ -126,6 +136,8 @@ func TestOpenRejectsUnsafeAndDuplicateEntries(t *testing.T) {
})
}
// writeBackendPackage 构造一个包含清单与 backend.jar 的合法更新包,
// 返回其临时文件路径。modify 可选,用于在写入前改写清单内容。
func writeBackendPackage(t *testing.T, jar []byte, modify func(map[string]any)) string {
t.Helper()
return writePackageEntries(t, map[string][]byte{
@@ -134,6 +146,8 @@ func writeBackendPackage(t *testing.T, jar []byte, modify func(map[string]any))
})
}
// manifestJSON 构造一份以 jar 摘要为 sha256 的完整清单 JSON,返回序列化字节。
// modify 可选,用于在序列化前改写清单内容。
func manifestJSON(t *testing.T, jar []byte, modify func(map[string]any)) []byte {
t.Helper()
digest := sha256.Sum256(jar)
@@ -168,6 +182,8 @@ func manifestJSON(t *testing.T, jar []byte, modify func(map[string]any)) []byte
return content
}
// writePackageEntries 将给定名字到内容的映射写入一个临时 ZIP 文件,
// 返回该文件路径。映射遍历顺序不影响结果。
func writePackageEntries(t *testing.T, entries map[string][]byte) string {
t.Helper()
packagePath := filepath.Join(t.TempDir(), "package.zip")