package packs

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

func TestRuntimeFormulaBundleUpgradeBridgeHasDeathCondition(t *testing.T) {
	src := readPacksSourceForRuntimeBridge(t, "runtime_declaration_persisted.go")

	if strings.Contains(src, "Bundleed") {
		t.Fatal("runtime formula-bundle bridge contains misspelled Bundleed; use Bundled consistently")
	}
	if !strings.Contains(src, "func loadRuntimePackFromActiveRowFromSourceWhenBundled(") {
		t.Fatal("missing explicit runtime formula-bundle upgrade bridge")
	}
	for _, want := range []string{
		"Death condition:",
		"runtime_formula_bundles",
		"persisted runtime declaration verification",
	} {
		if !strings.Contains(src, want) {
			t.Fatalf("runtime formula-bundle bridge is missing death-condition text %q", want)
		}
	}
	if strings.Contains(src, "if err != nil {\n\t\treturn nil, nil\n\t}") {
		t.Fatal("runtime formula-bundle bridge must not swallow source-backed pack resolution errors")
	}
}

func readPacksSourceForRuntimeBridge(t *testing.T, filename string) string {
	t.Helper()

	raw, err := os.ReadFile(filepath.Join(packsDir(t), filename))
	if err != nil {
		t.Fatalf("read %s: %v", filename, err)
	}
	return string(raw)
}
