Added a configurable timeout knob

This commit is contained in:
2026-05-04 22:38:20 -05:00
parent ea05945457
commit c5ce270090
15 changed files with 215 additions and 34 deletions

View File

@@ -1,8 +1,11 @@
package cli
import (
"bytes"
"errors"
"strings"
"testing"
"time"
"gitea.maximumdirect.net/eric/scriptorium/internal/domain"
)
@@ -92,6 +95,40 @@ func TestParseServeArgsRequiredFlags(t *testing.T) {
if cfg.addr != ":8080" {
t.Fatalf("expected default addr :8080, got %q", cfg.addr)
}
if cfg.timeout != 10*time.Minute {
t.Fatalf("expected default timeout 10m, got %s", cfg.timeout)
}
}
func TestParseRunArgsTimeout(t *testing.T) {
cfg, err := parseRunArgs([]string{
"--profile-dir", "./profiles",
"--profile-id", "p",
"--input", "a=b",
"--llm-base-url", "http://x/v1",
"--model", "m",
})
if err != nil {
t.Fatalf("expected valid run args, got %v", err)
}
if cfg.timeout != 10*time.Minute {
t.Fatalf("expected default timeout 10m, got %s", cfg.timeout)
}
cfg, err = parseRunArgs([]string{
"--profile-dir", "./profiles",
"--profile-id", "p",
"--input", "a=b",
"--llm-base-url", "http://x/v1",
"--model", "m",
"--timeout", "2m30s",
})
if err != nil {
t.Fatalf("expected valid run args with timeout override, got %v", err)
}
if cfg.timeout != 2*time.Minute+30*time.Second {
t.Fatalf("expected timeout override 2m30s, got %s", cfg.timeout)
}
}
func TestDetermineExitCode(t *testing.T) {
@@ -108,3 +145,26 @@ func TestDetermineExitCode(t *testing.T) {
t.Fatalf("expected success exit code for skipped validation, got %d", got)
}
}
func TestRunCommandVarsOptional(t *testing.T) {
var stdout bytes.Buffer
var stderr bytes.Buffer
code := runCommand([]string{
"--profile-dir", "./profiles",
"--profile-id", "p",
"--input", "transcript=./t.md",
"--llm-base-url", "://bad-url",
"--model", "m",
}, &stdout, &stderr)
if code != ExitRuntimeError {
t.Fatalf("expected runtime error exit code, got %d", code)
}
if strings.Contains(stderr.String(), "var parse error") {
t.Fatalf("expected --var to be optional, got stderr=%q", stderr.String())
}
if !strings.Contains(stderr.String(), "llm client error") {
t.Fatalf("expected llm client error after parsing succeeds, got stderr=%q", stderr.String())
}
}