76 lines
1.8 KiB
Go
76 lines
1.8 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"reflect"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestLoadValidConfig(t *testing.T) {
|
|
path := writeConfig(t, `streamers = [" Alpha ", "#Beta", "alpha", "", " #Gamma "]`)
|
|
|
|
cfg, err := Load(path)
|
|
if err != nil {
|
|
t.Fatalf("Load() error = %v", err)
|
|
}
|
|
|
|
want := []string{"alpha", "beta", "gamma"}
|
|
if !reflect.DeepEqual(cfg.Streamers, want) {
|
|
t.Fatalf("Streamers = %#v, want %#v", cfg.Streamers, want)
|
|
}
|
|
}
|
|
|
|
func TestLoadRejectsMissingStreamerList(t *testing.T) {
|
|
path := writeConfig(t, `streamers = []`)
|
|
|
|
_, err := Load(path)
|
|
if err == nil {
|
|
t.Fatal("Load() error = nil, want error")
|
|
}
|
|
if !strings.Contains(err.Error(), "at least one streamer") {
|
|
t.Fatalf("Load() error = %q, want empty streamer message", err)
|
|
}
|
|
}
|
|
|
|
func TestLoadRejectsInvalidTOML(t *testing.T) {
|
|
path := writeConfig(t, `streamers = [`)
|
|
|
|
_, err := Load(path)
|
|
if err == nil {
|
|
t.Fatal("Load() error = nil, want error")
|
|
}
|
|
if !strings.Contains(err.Error(), "load config") {
|
|
t.Fatalf("Load() error = %q, want load config context", err)
|
|
}
|
|
}
|
|
|
|
func TestDefaultPathUsesCurrentWorkingDirectoryConfig(t *testing.T) {
|
|
if got := DefaultPath(); got != "config.toml" {
|
|
t.Fatalf("DefaultPath() = %q, want %q", got, "config.toml")
|
|
}
|
|
}
|
|
|
|
func TestLoadRejectsMissingFile(t *testing.T) {
|
|
path := filepath.Join(t.TempDir(), "missing.toml")
|
|
|
|
_, err := Load(path)
|
|
if err == nil {
|
|
t.Fatal("Load() error = nil, want error")
|
|
}
|
|
if !strings.Contains(err.Error(), "config file not found") {
|
|
t.Fatalf("Load() error = %q, want missing file context", err)
|
|
}
|
|
}
|
|
|
|
func writeConfig(t *testing.T, content string) string {
|
|
t.Helper()
|
|
|
|
path := filepath.Join(t.TempDir(), "config.toml")
|
|
if err := os.WriteFile(path, []byte(content), 0o600); err != nil {
|
|
t.Fatalf("write config: %v", err)
|
|
}
|
|
return path
|
|
}
|