feat: allow hooks to be declared on embedded fields

Specifically, on Go embedded fields, not on fields tagged with `embed`.

Fixes #90.
This commit is contained in:
Alec Thomas
2024-12-27 13:41:00 +11:00
parent 565ae9b740
commit 840220c2ed
4 changed files with 75 additions and 53 deletions
+33
View File
@@ -2406,3 +2406,36 @@ func TestProviderMethods(t *testing.T) {
err = kctx.Run(t)
assert.NoError(t, err)
}
type EmbeddedCallback struct {
Embedded bool
}
func (e *EmbeddedCallback) AfterApply() error {
e.Embedded = true
return nil
}
type EmbeddedRoot struct {
EmbeddedCallback
Root bool
}
func (e *EmbeddedRoot) AfterApply() error {
e.Root = true
return nil
}
func TestEmbeddedCallbacks(t *testing.T) {
actual := &EmbeddedRoot{}
k := mustNew(t, actual)
_, err := k.Parse(nil)
assert.NoError(t, err)
expected := &EmbeddedRoot{
EmbeddedCallback: EmbeddedCallback{
Embedded: true,
},
Root: true,
}
assert.Equal(t, expected, actual)
}