Unify typed binding preparation
This commit is contained in:
@@ -9,11 +9,12 @@ type registryInput struct{ value string }
|
||||
|
||||
func TestCapturedDeclarationsRetainCallbacksWithoutCallingThem(t *testing.T) {
|
||||
var factoryCalls, prepareCalls, setterCalls, checkCalls, runCalls int
|
||||
identity := newBindingIdentity()
|
||||
flag := Flag[registryInput]{binding: flagBinding[registryInput]{
|
||||
meta: FlagMeta{Name: "mode"}, valid: true,
|
||||
prepare: func([]string) (func(*registryInput), error) {
|
||||
identity: identity, meta: FlagMeta{Name: "mode"}, valid: true,
|
||||
prepare: func([]string) (preparedValue[registryInput], error) {
|
||||
prepareCalls++
|
||||
return func(*registryInput) { setterCalls++ }, nil
|
||||
return preparedValue[registryInput]{identity: identity, apply: func(*registryInput) { setterCalls++ }}, nil
|
||||
},
|
||||
}}
|
||||
command := NewCommand(CommandSpec[registryInput]{
|
||||
@@ -175,7 +176,10 @@ func TestNewRejectsEmptyIdentity(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestNewCommandCopiesBindingMetadata(t *testing.T) {
|
||||
flags := []Flag[registryInput]{{binding: flagBinding[registryInput]{meta: FlagMeta{Name: "mode"}, valid: true, prepare: func([]string) (func(*registryInput), error) { return func(*registryInput) {}, nil }}}}
|
||||
identity := newBindingIdentity()
|
||||
flags := []Flag[registryInput]{{binding: flagBinding[registryInput]{identity: identity, meta: FlagMeta{Name: "mode"}, valid: true, prepare: func([]string) (preparedValue[registryInput], error) {
|
||||
return preparedValue[registryInput]{identity: identity, apply: func(*registryInput) {}}, nil
|
||||
}}}}
|
||||
command := NewCommand(CommandSpec[registryInput]{Name: "run", Flags: flags})
|
||||
flags[0].binding.meta.Name = "changed"
|
||||
payload := command.record.payload.(typedCommand[registryInput])
|
||||
|
||||
Reference in New Issue
Block a user