50 lines
1.6 KiB
Go
50 lines
1.6 KiB
Go
package app
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestResolveCampaignConfigPathExplicitWins(t *testing.T) {
|
|
explicit := filepath.Join(t.TempDir(), "custom-campaign.yml")
|
|
got, err := resolveCampaignConfigPathWithCandidates(explicit, []string{filepath.Join(t.TempDir(), "campaign.yml")})
|
|
if err != nil {
|
|
t.Fatalf("resolveCampaignConfigPathWithCandidates() error = %v", err)
|
|
}
|
|
if got != explicit {
|
|
t.Fatalf("path = %q, want explicit path %q", got, explicit)
|
|
}
|
|
}
|
|
|
|
func TestResolveCampaignConfigPathUsesFirstExistingDefault(t *testing.T) {
|
|
dir := t.TempDir()
|
|
missing := filepath.Join(dir, "missing.yml")
|
|
found := filepath.Join(dir, "campaign.yml")
|
|
if err := os.WriteFile(found, []byte("campaign: sample-campaign\n"), 0o644); err != nil {
|
|
t.Fatalf("write campaign.yml: %v", err)
|
|
}
|
|
|
|
got, err := resolveCampaignConfigPathWithCandidates("", []string{missing, found})
|
|
if err != nil {
|
|
t.Fatalf("resolveCampaignConfigPathWithCandidates() error = %v", err)
|
|
}
|
|
if got != filepath.Clean(found) {
|
|
t.Fatalf("path = %q, want %q", got, filepath.Clean(found))
|
|
}
|
|
}
|
|
|
|
func TestResolveCampaignConfigPathErrorIncludesSearchedPaths(t *testing.T) {
|
|
_, err := resolveCampaignConfigPathWithCandidates("", []string{"./campaign.yml", "/usr/local/etc/narratio/campaign.yml", "/etc/narratio/campaign.yml"})
|
|
if err == nil {
|
|
t.Fatal("expected error, got nil")
|
|
}
|
|
if !strings.Contains(err.Error(), "searched") {
|
|
t.Fatalf("error = %q, want searched paths", err.Error())
|
|
}
|
|
if !strings.Contains(err.Error(), "pass --campaign") {
|
|
t.Fatalf("error = %q, want explicit-campaign guidance", err.Error())
|
|
}
|
|
}
|