Ctrl K
ComunidadGuías…

internal/autogen/backends_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package autogen

import (
	"os"
	"path/filepath"
	"strings"
	"testing"
)

// TestSidecarBackends_OverrideAndSiblings verifies a UI backend override wins
// over the generate file and that a blank sd/tts derives as a sibling of the
// UI-set llama exe (overlay must run BEFORE applyDefaults).
func TestSidecarBackends_OverrideAndSiblings(t *testing.T) {
	dir := t.TempDir()
	gen := filepath.Join(dir, "quartermaster-generate.yaml")
	if err := os.WriteFile(gen, []byte("settings:\n  serverExe: C:/cuda/llama-server.exe\n"), 0o644); err != nil {
		t.Fatal(err)
	}

	// Point only llama-server at a Vulkan build; leave sd/tts blank.
	vulkan := "D:/vulkan/bin/llama-server.exe"
	if err := UpsertSidecarBackends(gen, BackendExes{ServerExe: vulkan}); err != nil {
		t.Fatal(err)
	}

	gf, err := LoadGenerateFile(gen, "")
	if err != nil {
		t.Fatal(err)
	}
	if gf.Settings.ServerExe != vulkan {
		t.Errorf("ServerExe = %q, want %q (UI override should win over file)", gf.Settings.ServerExe, vulkan)
	}
	wantSd := filepath.Join("D:/vulkan/bin", "sd-server")
	if gf.Settings.SdServerExe != wantSd {
		t.Errorf("SdServerExe = %q, want sibling %q", gf.Settings.SdServerExe, wantSd)
	}
	if !strings.HasPrefix(gf.Settings.TtsServerExe, filepath.Join("D:/vulkan/bin", "tts-server")) {
		t.Errorf("TtsServerExe = %q, want sibling of the vulkan exe", gf.Settings.TtsServerExe)
	}

	// Clearing all fields reverts to the generate file value.
	if err := UpsertSidecarBackends(gen, BackendExes{}); err != nil {
		t.Fatal(err)
	}
	gf, err = LoadGenerateFile(gen, "")
	if err != nil {
		t.Fatal(err)
	}
	if gf.Settings.ServerExe != "C:/cuda/llama-server.exe" {
		t.Errorf("after clear, ServerExe = %q, want the generate-file value", gf.Settings.ServerExe)
	}
}