51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
package app
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
|
|
"gitea.maximumdirect.net/eric/narratio/internal/config"
|
|
)
|
|
|
|
func TestLoadCommandConfigRetainsInitiallyLoadedPipeline(t *testing.T) {
|
|
workspaceRoot := t.TempDir()
|
|
pipelinePath, campaignPath, sessionPath := writeValidConfigFiles(t, workspaceRoot)
|
|
|
|
originalLoader := loadPipelineConfigFn
|
|
loadCalls := 0
|
|
loadPipelineConfigFn = func(path string) (*config.PipelineConfig, error) {
|
|
loaded, err := originalLoader(path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
loadCalls++
|
|
|
|
data, err := os.ReadFile(path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
changedRoot := workspaceRoot + "-changed"
|
|
updated := strings.ReplaceAll(string(data), workspaceRoot, changedRoot)
|
|
if err := os.WriteFile(path, []byte(updated), 0o644); err != nil {
|
|
return nil, err
|
|
}
|
|
return loaded, nil
|
|
}
|
|
t.Cleanup(func() { loadPipelineConfigFn = originalLoader })
|
|
|
|
loaded, err := loadCommandConfig(context.Background(), pipelinePath, "", campaignPath, sessionPath, config.SessionLoadOptions{SessionID: "2026-05-03"})
|
|
if err != nil {
|
|
t.Fatalf("loadCommandConfig() error = %v", err)
|
|
}
|
|
defer func() { _ = loaded.Close() }()
|
|
|
|
if loadCalls != 1 {
|
|
t.Fatalf("pipeline load calls = %d, want 1", loadCalls)
|
|
}
|
|
if got := loaded.Config.Pipeline.Workspace.Root; got != workspaceRoot {
|
|
t.Fatalf("resolved workspace root = %q, want originally loaded %q", got, workspaceRoot)
|
|
}
|
|
}
|