refactor(*): 平台架构 - 拆分后端领域模块与画布前端组件并补充测试

This commit is contained in:
ddcat666
2026-09-30 10:01:39 +08:00
parent e0a2697c60
commit 7f5d87ef1a
186 changed files with 33727 additions and 29905 deletions

View File

@@ -5,6 +5,7 @@ import (
"bytes"
"os"
"path/filepath"
"runtime"
"testing"
"infinite-canvas/backend/internal/protocol"
@@ -165,6 +166,35 @@ func TestPaymentRuntimeReadyAcceptsTaggedBackend(t *testing.T) {
}
}
// 启动时从插件包落盘支付运行目录只解压本机平台的可执行文件,其余平台产物不写盘;
// 已就绪的同摘要目录直接复用,不重新解压。
func TestPaymentRuntimeFromPackageExtractsOnlyHostArtifacts(t *testing.T) {
host := "backend/provider-" + runtime.GOOS + "-" + runtime.GOARCH
other := "backend/provider-plan9-386"
packageData := paymentRuntimePackageFiles(t, map[string][]byte{host: []byte("host-provider"), other: []byte("other-provider")})
packageDir := t.TempDir()
digest := pluginHash(packageData)
root, err := materializePaymentBackendFromPackage(packageDir, digest, "backend/provider", packageData)
if err != nil {
t.Fatal(err)
}
actual, err := os.ReadFile(filepath.Join(root, filepath.FromSlash(host)))
if err != nil || string(actual) != "host-provider" {
t.Fatalf("host provider = %q err=%v", actual, err)
}
if _, err := os.Stat(filepath.Join(root, filepath.FromSlash(other))); !os.IsNotExist(err) {
t.Fatalf("non-host provider must not be extracted: %v", err)
}
if !paymentRuntimeReady(root, digest, "backend/provider") {
t.Fatal("runtime must be marked ready")
}
// 就绪后即使传入损坏的包字节也直接复用:摘要与就绪标记一一对应,调用方已对原始字节校验摘要。
again, err := materializePaymentBackendFromPackage(packageDir, digest, "backend/provider", []byte("not a zip"))
if err != nil || again != root {
t.Fatalf("ready runtime was not reused: root=%q err=%v", again, err)
}
}
func paymentRuntimePackage(t *testing.T, provider []byte) []byte {
t.Helper()
return paymentRuntimePackageFiles(t, map[string][]byte{"backend/provider": provider})