Improve portable launch, forge persistence, and operator auth UX.
Persist build extra_files for Build Manager history, print dashboard login on every start, add libp2p for Mesh P2P forge, defer WebSocket until login, and split devrun.bat from LAUNCH.bat with USB deck auto-detection.
This commit is contained in:
@@ -60,3 +60,99 @@ func TestBuildFusionFromRequestPaired(t *testing.T) {
|
||||
t.Fatal("expected launcher path")
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildFileFusionPairedFakeGo(t *testing.T) {
|
||||
h, database := testHandlerDB(t)
|
||||
defer database.Close()
|
||||
setFakeGoSuccess(t, h)
|
||||
|
||||
buildDir := t.TempDir()
|
||||
worker := filepath.Join(buildDir, "worker.exe")
|
||||
if err := os.WriteFile(worker, []byte("w"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
prep := filepath.Join(t.TempDir(), "report.pdf")
|
||||
if err := os.WriteFile(prep, []byte("%PDF-1.4"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
req := &BuildRequest{
|
||||
TargetOS: "windows",
|
||||
FusionMediaMode: "paired",
|
||||
FusionPayloadKind: "file",
|
||||
FusionMediaBaseName: "report.pdf",
|
||||
}
|
||||
win := BuildPlatform{GOOS: "windows", GOARCH: "amd64", Ext: ".exe"}
|
||||
res, err := h.buildFileFusion(context.Background(), buildDir, prep, worker, req, win)
|
||||
if err != nil {
|
||||
t.Fatalf("buildFileFusion paired: %v", err)
|
||||
}
|
||||
if res == nil || res.LauncherPath == "" {
|
||||
t.Fatal("expected launcher path")
|
||||
}
|
||||
if _, err := os.Stat(res.LauncherPath); err != nil {
|
||||
t.Fatalf("launcher not created: %v", err)
|
||||
}
|
||||
if res.MediaName != "report.pdf" {
|
||||
t.Fatalf("media name: %q", res.MediaName)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildFileFusionEmbeddedFakeGo(t *testing.T) {
|
||||
h, database := testHandlerDB(t)
|
||||
defer database.Close()
|
||||
setFakeGoSuccess(t, h)
|
||||
|
||||
buildDir := t.TempDir()
|
||||
worker := filepath.Join(buildDir, "worker.bin")
|
||||
if err := os.WriteFile(worker, []byte("w"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
prep := filepath.Join(t.TempDir(), "clip.mkv")
|
||||
if err := os.WriteFile(prep, []byte("fake video"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
req := &BuildRequest{
|
||||
TargetOS: "linux",
|
||||
FusionMediaMode: "embedded",
|
||||
FusionPayloadKind: "file",
|
||||
}
|
||||
linux := BuildPlatform{GOOS: "linux", GOARCH: "amd64", Ext: ""}
|
||||
res, err := h.buildFileFusion(context.Background(), buildDir, prep, worker, req, linux)
|
||||
if err != nil {
|
||||
t.Fatalf("buildFileFusion embedded: %v", err)
|
||||
}
|
||||
payloadBin := filepath.Join(buildDir, "fusion", "assets", "payload.bin")
|
||||
st, err := os.Stat(payloadBin)
|
||||
if err != nil {
|
||||
t.Fatalf("embedded payload.bin missing: %v", err)
|
||||
}
|
||||
if st.Size() == 0 {
|
||||
t.Fatal("embedded mode should copy payload into assets")
|
||||
}
|
||||
if res.MediaName != "clip.mkv" {
|
||||
t.Fatalf("media name: %q", res.MediaName)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildFusionWrapperFakeGoSuccess(t *testing.T) {
|
||||
h, database := testHandlerDB(t)
|
||||
defer database.Close()
|
||||
setFakeGoSuccess(t, h)
|
||||
|
||||
buildDir := t.TempDir()
|
||||
worker := filepath.Join(buildDir, "worker.exe")
|
||||
if err := os.WriteFile(worker, []byte("w"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
prep := filepath.Join(t.TempDir(), "doc.pdf")
|
||||
if err := os.WriteFile(prep, []byte("%PDF"), 0644); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
launcher, err := h.buildFusion(context.Background(), buildDir, prep, worker, "doc.pdf.exe", "parallel")
|
||||
if err != nil {
|
||||
t.Fatalf("buildFusion: %v", err)
|
||||
}
|
||||
if launcher == "" {
|
||||
t.Fatal("expected launcher path")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user