package config import ( "testing" "gitea.maximumdirect.net/eric/notarius/internal/core/diagnostics" ) func TestDefaultValues(t *testing.T) { cfg := Default() if cfg.Scriptorium.ProfileDir != "" || cfg.Scriptorium.ProfileFile != "" { t.Fatalf("unexpected Scriptorium profile source defaults: %+v", cfg.Scriptorium) } if len(cfg.Pipelines) != 0 { t.Fatalf("expected no built-in pipeline profiles, got %v", cfg.Pipelines) } if cfg.Concurrency.TotalLLM != 1 { t.Fatalf("unexpected total LLM concurrency: %d", cfg.Concurrency.TotalLLM) } if cfg.Diagnostics.WorkDir != "/tmp/notarius" { t.Fatalf("unexpected diagnostics work dir: %q", cfg.Diagnostics.WorkDir) } if cfg.Diagnostics.Retention != diagnostics.RetentionAuto { t.Fatalf("unexpected diagnostics retention: %q", cfg.Diagnostics.Retention) } } func TestApplyFileConfigMergesWithDefaults(t *testing.T) { fileCfg, err := ParseFileConfigYAML([]byte(` version: 2 scriptorium: profile_dir: ./profiles pipelines: example: input: fake/input artifacts: events: extract: fake/extract `)) if err != nil { t.Fatalf("ParseFileConfigYAML: %v", err) } cfg := Default() if err := cfg.applyFileConfigWithLookup(fileCfg, emptyLookup); err != nil { t.Fatalf("ApplyFileConfig: %v", err) } if cfg.Scriptorium.ProfileDir != "./profiles" { t.Fatalf("expected Scriptorium profile dir, got %+v", cfg.Scriptorium) } if cfg.Concurrency.TotalLLM != 1 { t.Fatalf("expected default concurrency preserved, got %d", cfg.Concurrency.TotalLLM) } if cfg.Diagnostics.Retention != diagnostics.RetentionAuto { t.Fatalf("expected default diagnostics retention preserved, got %q", cfg.Diagnostics.Retention) } if _, ok := cfg.Pipelines["example"]; !ok { t.Fatalf("expected file pipeline to be applied") } }