package configkit import ( "errors" "strings" "testing" "gitea.maximumdirect.net/eric/ConfigKit/internal/engine" ) func TestWrappedSourcesPreserveEngineOwnership(t *testing.T) { t.Parallel() type config struct { Value string `yaml:"value"` } data := []byte("value: retained\n") source := Bytes("snapshot.yml", data) data[7] = 'X' result, err := engine.Load[config](source.toEngine(), engine.SecretBinding{}) if err != nil || result.Config.Value != "retained" { t.Fatalf("snapshotted source = %#v, %v", result, err) } readerSource := Reader("reader.yml", strings.NewReader("value: once\n")) first := readerSource if _, err := engine.Load[config](first.toEngine(), engine.SecretBinding{}); err != nil { t.Fatal(err) } _, err = engine.Load[config](readerSource.toEngine(), engine.SecretBinding{}) var loadError *engine.LoadError if !errors.As(err, &loadError) || len(loadError.Diagnostics()) != 1 || loadError.Diagnostics()[0].Code != engine.CodeSourceReaderUsed { t.Fatalf("copied reader source error = %#v", err) } }