Update the simple configuration consumer

This commit is contained in:
2026-11-07 04:54:44 +00:00
parent 0b70f37267
commit 42af1da142
5 changed files with 84 additions and 3 deletions

View File

@@ -3,12 +3,14 @@ package main
import (
"bytes"
"context"
"errors"
"io"
"strings"
"testing"
"go.maximumdirect.net/ckconfig"
commandkit "go.maximumdirect.net/commandkit"
configkit "go.maximumdirect.net/configkit"
"go.yaml.in/yaml/v4"
)
@@ -147,3 +149,55 @@ func decodeReport(data []byte) (*yaml.Node, error) {
}
return document.Content[0], nil
}
func TestSimpleInspectionAndIndependentOverrides(t *testing.T) {
outcome, output, _ := executeSimple(t, "config", "explain", "--list", "--under=/schema", "--format=json")
if outcome.Kind != commandkit.OutcomeSuccess || !strings.Contains(output, `"path": "/schema/version"`) {
t.Fatalf("discovery = %#v %q", outcome, output)
}
outcome, output, _ = executeSimple(t, "config", "show", "--path=/greeting", "--set=/greeting=\"Hi\"")
if outcome.Kind != commandkit.OutcomeSuccess || output != "Hi\n" {
t.Fatalf("focused override = %#v %q", outcome, output)
}
outcome, output, _ = executeSimple(t, "config", "diff", "--set=/greeting=\"Hi\"", "--details", "--check", "--format=json")
if outcome.Kind != commandkit.OutcomeDomain || outcome.Status != 3 || !strings.Contains(output, `"before"`) || !strings.Contains(output, `"after"`) {
t.Fatalf("independent diff = %#v %q", outcome, output)
}
outcome, output, _ = executeSimple(t, "config", "diff", "--set=/greeting=\"Hi\"", "--against-set=/greeting=\"Hi\"", "--details", "--check", "--format=json")
if outcome.Kind != commandkit.OutcomeSuccess || !strings.Contains(output, `"differences": []`) {
t.Fatalf("equal overrides = %#v %q", outcome, output)
}
}
func TestSimpleFailedLoadReportsEvidence(t *testing.T) {
_, failure := loadAppConfiguration(context.Background(), ckconfig.Selection{Config: commandkit.Supplied[string]{Value: "fixtures/invalid.yml", Set: true}})
var native *configkit.LoadError
if !errors.As(failure, &native) || len(native.Sources()) == 0 {
t.Fatalf("fixture failure = %v", failure)
}
outcome, output, _ := executeSimple(t, "config", "validate", "--config=fixtures/invalid.yml", "--details", "--severity=error", "--format=json")
if outcome.Kind != commandkit.OutcomeOperational || !strings.Contains(output, `"state": "present"`) || !strings.Contains(output, `"severity": "error"`) {
t.Fatalf("detailed failure = %#v %q", outcome, output)
}
outcome, output, _ = executeSimple(t, "config", "sources", "--config=fixtures/invalid.yml", "--source-id="+native.Sources()[0].ID, "--format=json")
if outcome.Kind != commandkit.OutcomeOperational || !strings.Contains(output, `"id":`) || !strings.Contains(output, "invalid.yml") {
t.Fatalf("source failure = %#v %q", outcome, output)
}
}
func TestSimpleMetadataCommandsDoNotLoadConfiguration(t *testing.T) {
loads := 0
app, err := newAppWithLoader(func(context.Context, ckconfig.Selection) (*configkit.Result[appConfiguration], error) {
loads++
return nil, errors.New("unexpected load")
})
if err != nil {
t.Fatal(err)
}
for _, args := range [][]string{{"version"}, {"config", "scopes"}, {"config", "explain"}, {"config", "show", "--help"}} {
result := app.Execute(context.Background(), args, commandkit.Streams{Out: io.Discard, Err: io.Discard})
if result.Kind != commandkit.OutcomeSuccess || loads != 0 {
t.Fatalf("%v: %#v loads=%d", args, result, loads)
}
}
}