package builder import ( "context" "os" "os/exec" "path/filepath" "testing" ) func goAvailable() bool { _, err := exec.LookPath("go") return err == nil } func TestBuildFusionCompileFailsWithoutGo(t *testing.T) { h, database := testHandlerDB(t) defer database.Close() setFakeGoFail(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) } _, err := h.buildFusion(context.Background(), buildDir, prep, worker, "runner.exe", "parallel") if err == nil { t.Fatal("expected compile error from fake go") } } func TestBuildFusionFromRequestPaired(t *testing.T) { if !goAvailable() { t.Skip("go not in PATH") } h, database := testHandlerDB(t) defer database.Close() buildDir := t.TempDir() worker := filepath.Join(buildDir, "worker.exe") if err := os.WriteFile(worker, []byte("MZ"), 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{ FusionMediaMode: "paired", FusionPayloadKind: "file", FusionMediaBaseName: "report.pdf", } res, err := h.buildFusionFromRequest(context.Background(), buildDir, prep, worker, req) if err != nil { t.Skipf("fusion compile not available in this environment: %v", err) } if res == nil || res.LauncherPath == "" { t.Fatal("expected launcher path") } }