81 lines
2.3 KiB
Go
81 lines
2.3 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func write(t *testing.T, text string) string {
|
|
t.Helper()
|
|
repo := t.TempDir()
|
|
if err := os.WriteFile(filepath.Join(repo, Filename), []byte(text), 0o644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
return repo
|
|
}
|
|
|
|
func TestLoadToolsAutoAndList(t *testing.T) {
|
|
k, err := Load(write(t, "server: https://hugin.intern\nproject: shop\ntools: auto\npackages: [pub-a]\n"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !k.Tools.Auto || len(k.Packages) != 1 || !k.ReadsClaude() || k.Strict() {
|
|
t.Errorf("auto: %+v", k)
|
|
}
|
|
k, err = Load(write(t, "server: x\nproject: y\ntools: [claude, opencode]\ntool_check: strict\nopencode_reads_claude: false\n"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if k.Tools.Auto || strings.Join(k.Tools.List, ",") != "claude,opencode" || k.ReadsClaude() || !k.Strict() {
|
|
t.Errorf("Liste: %+v", k)
|
|
}
|
|
}
|
|
|
|
func TestLoadRejects(t *testing.T) {
|
|
for _, text := range []string{
|
|
"tools: immer\n",
|
|
"tools: [claude, cursor]\n",
|
|
"tool_check: hart\n",
|
|
} {
|
|
if _, err := Load(write(t, text)); err == nil {
|
|
t.Errorf("%q: Fehler erwartet", text)
|
|
}
|
|
}
|
|
if _, err := Load(t.TempDir()); err == nil || !strings.Contains(err.Error(), "hugin init") {
|
|
t.Errorf("fehlende Datei: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestSaveRoundTrip(t *testing.T) {
|
|
repo := t.TempDir()
|
|
in := &Config{Server: "https://hugin.intern", Project: "shop", Tools: Tools{List: []string{"opencode"}},
|
|
Packages: []string{"pub-a", "pub-b"}, Unsubscribed: []string{"pub-c"}}
|
|
if err := in.Save(repo); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
out, err := Load(repo)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if out.Server != in.Server || strings.Join(out.Tools.List, ",") != "opencode" ||
|
|
strings.Join(out.Packages, ",") != "pub-a,pub-b" || out.Unsubscribed[0] != "pub-c" {
|
|
t.Errorf("zurückgelesen: %+v", out)
|
|
}
|
|
raw, _ := os.ReadFile(filepath.Join(repo, Filename))
|
|
if !strings.Contains(string(raw), "tools:\n - opencode") {
|
|
t.Errorf("tools fehlt: %s", raw)
|
|
}
|
|
}
|
|
|
|
func TestEmptyToolsIsSavedAsAuto(t *testing.T) {
|
|
repo := t.TempDir()
|
|
if err := (&Config{Server: "x", Project: "y"}).Save(repo); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
raw, _ := os.ReadFile(filepath.Join(repo, Filename))
|
|
if !strings.Contains(string(raw), "tools: auto") {
|
|
t.Errorf("erwartet tools: auto, war:\n%s", raw)
|
|
}
|
|
}
|