@@ -59,6 +59,31 @@ func (m *mockInValidOutputGetter) GetExecOutput(_ []byte, _ string) ([]byte, err
5959 return nil , fmt .Errorf ("error getting exec command output" )
6060}
6161
62+ type mockPluginChainCaptureGetter struct {
63+ capturedChain * []string
64+ }
65+
66+ var _ ExecOutputGetter = & mockPluginChainCaptureGetter {}
67+
68+ func (m * mockPluginChainCaptureGetter ) GetExecOutput (request []byte , _ string ) ([]byte , error ) {
69+ // Parse the request to capture the plugin chain
70+ var req external.PluginRequest
71+ if err := json .Unmarshal (request , & req ); err != nil {
72+ return nil , fmt .Errorf ("error unmarshalling request: %w" , err )
73+ }
74+
75+ // Capture the plugin chain
76+ * m .capturedChain = req .PluginChain
77+
78+ // Return a valid response
79+ return []byte (`{
80+ "command": "init",
81+ "error": false,
82+ "error_msg": "none",
83+ "universe": {"LICENSE": "Apache 2.0 License\n"}
84+ }` ), nil
85+ }
86+
6287type mockValidOsWdGetter struct {}
6388
6489var _ OsWdGetter = & mockValidOsWdGetter {}
@@ -754,6 +779,85 @@ var _ = Describe("Run external plugin using Scaffold", func() {
754779 }
755780 })
756781 })
782+
783+ Context ("PluginChain is passed to external plugin" , func () {
784+ var (
785+ pluginChainCaptured []string
786+ mockOutputGetter * mockPluginChainCaptureGetter
787+ )
788+
789+ BeforeEach (func () {
790+ mockOutputGetter = & mockPluginChainCaptureGetter {
791+ capturedChain : & pluginChainCaptured ,
792+ }
793+ outputGetter = mockOutputGetter
794+ currentDirGetter = & mockValidOsWdGetter {}
795+ })
796+
797+ It ("should pass plugin chain to init subcommand" , func () {
798+ fs := machinery.Filesystem {
799+ FS : afero .NewMemMapFs (),
800+ }
801+
802+ i := initSubcommand {
803+ Path : "test.sh" ,
804+ Args : []string {"--domain" , "example.com" },
805+ pluginChain : []string {"go.kubebuilder.io/v4" , "kustomize.common.kubebuilder.io/v2" },
806+ }
807+
808+ err := i .Scaffold (fs )
809+ Expect (err ).ToNot (HaveOccurred ())
810+ Expect (pluginChainCaptured ).To (Equal ([]string {"go.kubebuilder.io/v4" , "kustomize.common.kubebuilder.io/v2" }))
811+ })
812+
813+ It ("should pass plugin chain to create api subcommand" , func () {
814+ fs := machinery.Filesystem {
815+ FS : afero .NewMemMapFs (),
816+ }
817+
818+ c := createAPISubcommand {
819+ Path : "test.sh" ,
820+ Args : []string {"--group" , "apps" , "--version" , "v1" , "--kind" , "MyKind" },
821+ pluginChain : []string {"go.kubebuilder.io/v4" },
822+ }
823+
824+ err := c .Scaffold (fs )
825+ Expect (err ).ToNot (HaveOccurred ())
826+ Expect (pluginChainCaptured ).To (Equal ([]string {"go.kubebuilder.io/v4" }))
827+ })
828+
829+ It ("should pass plugin chain to create webhook subcommand" , func () {
830+ fs := machinery.Filesystem {
831+ FS : afero .NewMemMapFs (),
832+ }
833+
834+ w := createWebhookSubcommand {
835+ Path : "test.sh" ,
836+ Args : []string {"--group" , "apps" , "--version" , "v1" , "--kind" , "MyKind" },
837+ pluginChain : []string {"go.kubebuilder.io/v3" },
838+ }
839+
840+ err := w .Scaffold (fs )
841+ Expect (err ).ToNot (HaveOccurred ())
842+ Expect (pluginChainCaptured ).To (Equal ([]string {"go.kubebuilder.io/v3" }))
843+ })
844+
845+ It ("should pass plugin chain to edit subcommand" , func () {
846+ fs := machinery.Filesystem {
847+ FS : afero .NewMemMapFs (),
848+ }
849+
850+ e := editSubcommand {
851+ Path : "test.sh" ,
852+ Args : []string {"--multigroup" },
853+ pluginChain : []string {"go.kubebuilder.io/v4" , "declarative.go.kubebuilder.io/v1" },
854+ }
855+
856+ err := e .Scaffold (fs )
857+ Expect (err ).ToNot (HaveOccurred ())
858+ Expect (pluginChainCaptured ).To (Equal ([]string {"go.kubebuilder.io/v4" , "declarative.go.kubebuilder.io/v1" }))
859+ })
860+ })
757861})
758862
759863func getFlags () []external.Flag {
0 commit comments