Isolate parsed provider parameters
This commit is contained in:
@@ -76,3 +76,33 @@ func TestValidationForwardsExecutionControls(t *testing.T) {
|
||||
t.Fatalf("result/request = %#v %#v", result, received)
|
||||
}
|
||||
}
|
||||
|
||||
func TestExecutionExtraParamsCapturedApplicationsAreIndependent(t *testing.T) {
|
||||
type target struct{ execution ckprompt.ExecutionInput }
|
||||
type outer struct{ captured commandkit.FlagValues[target] }
|
||||
flag := ckprompt.NewExecutionFlags(func(i *target) *ckprompt.ExecutionInput { return &i.execution }).ExtraParams
|
||||
captured := commandkit.CaptureFlags([]commandkit.Flag[target]{flag}, func(i *outer) *commandkit.FlagValues[target] { return &i.captured })
|
||||
command := commandkit.NewCommand(commandkit.CommandSpec[outer]{Name: "run", Flags: captured, Run: func(_ commandkit.Invocation, input outer) commandkit.Outcome {
|
||||
var first, second target
|
||||
if err := input.captured.ApplyTo(&first, flag); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
first.execution.Execution.ExtraParams["nested"].(map[string]any)["array"].([]any)[0].(map[string]any)["number"] = int64(9)
|
||||
if err := input.captured.ApplySuppliedTo(&second, flag); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
value := second.execution.Execution.ExtraParams["nested"].(map[string]any)["array"].([]any)[0].(map[string]any)["number"]
|
||||
if value != int64(1) {
|
||||
t.Errorf("second value = %#v", value)
|
||||
}
|
||||
return commandkit.Success()
|
||||
}})
|
||||
app, err := commandkit.New(commandkit.Identity{Name: "app"}, command)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
result := app.Execute(context.Background(), []string{"run", `--llm-extra-params={"nested":{"array":[{"number":1}]}}`}, commandkit.Streams{Out: io.Discard, Err: io.Discard})
|
||||
if result.Kind != commandkit.OutcomeSuccess {
|
||||
t.Fatal(result)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user