Refactor CLI command wiring with shared settings and runner helpers
This commit is contained in:
@@ -11,6 +11,7 @@ import (
|
||||
"net/http/httptest"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"strings"
|
||||
"sync/atomic"
|
||||
"testing"
|
||||
@@ -410,6 +411,28 @@ defaults:
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseRenderArgsExplicitFormatOverridesConfigDefaultFormat(t *testing.T) {
|
||||
configPath := writeAppConfigFile(t, `
|
||||
prompt_dir: ./from-config/prompts
|
||||
profile_dir: ./from-config/profiles
|
||||
defaults:
|
||||
render_format: json
|
||||
`)
|
||||
|
||||
cfg, err := parseRenderArgs([]string{
|
||||
"--config", configPath,
|
||||
"--prompt", "p",
|
||||
"--input", "a=b",
|
||||
"--format", "text",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("expected valid args, got %v", err)
|
||||
}
|
||||
if cfg.outputFormat != renderformat.PreparedRunFormatText {
|
||||
t.Fatalf("expected explicit --format text to override config default, got %q", cfg.outputFormat)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseServeArgsWithExplicitConfigLoadsSettingsAndCLIAddrOverrides(t *testing.T) {
|
||||
configPath := writeAppConfigFile(t, `
|
||||
prompt_dir: ./from-config/prompts
|
||||
@@ -471,6 +494,59 @@ server:
|
||||
}
|
||||
}
|
||||
|
||||
func TestRunAndRenderBuildEquivalentRuntimeOverrideRequestsForSharedFlags(t *testing.T) {
|
||||
runCfg, err := parseRunArgs([]string{
|
||||
"--prompt-dir", "./prompts",
|
||||
"--profile-dir", "./profiles",
|
||||
"--prompt", "prompt-1",
|
||||
"--profile", "profile-1",
|
||||
"--input", "transcript=./transcript.md",
|
||||
"--var", "session_date=2026-05-01",
|
||||
"--llm-base-url", "http://localhost:8000/v1",
|
||||
"--model", "model-x",
|
||||
"--temperature", "0.8",
|
||||
"--max-tokens", "123",
|
||||
"--top-p", "0.6",
|
||||
"--timeout", "90s",
|
||||
"--api-key-env", "SCRIPTORIUM_API_KEY",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("expected valid run args, got %v", err)
|
||||
}
|
||||
|
||||
renderCfg, err := parseRenderArgs([]string{
|
||||
"--prompt-dir", "./prompts",
|
||||
"--profile-dir", "./profiles",
|
||||
"--prompt", "prompt-1",
|
||||
"--profile", "profile-1",
|
||||
"--input", "transcript=./transcript.md",
|
||||
"--var", "session_date=2026-05-01",
|
||||
"--llm-base-url", "http://localhost:8000/v1",
|
||||
"--model", "model-x",
|
||||
"--temperature", "0.8",
|
||||
"--max-tokens", "123",
|
||||
"--top-p", "0.6",
|
||||
"--timeout", "90s",
|
||||
"--api-key-env", "SCRIPTORIUM_API_KEY",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("expected valid render args, got %v", err)
|
||||
}
|
||||
|
||||
runReq, err := buildRunRequestFromConfig(runCfg)
|
||||
if err != nil {
|
||||
t.Fatalf("expected run request build success, got %v", err)
|
||||
}
|
||||
renderReq, err := buildRunRequestFromConfig(&renderCfg.runConfig)
|
||||
if err != nil {
|
||||
t.Fatalf("expected render request build success, got %v", err)
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(runReq, renderReq) {
|
||||
t.Fatalf("expected run/render shared flag requests to match.\nrun=%#v\nrender=%#v", runReq, renderReq)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseRunArgsFailsClearlyWhenNoEffectivePromptDir(t *testing.T) {
|
||||
configPath := writeAppConfigFile(t, `
|
||||
profile_dir: ./profiles
|
||||
|
||||
Reference in New Issue
Block a user