package cmd import ( "io" "os" "testing" "github.com/spf13/cobra" ) func TestCompletionCmd(t *testing.T) { tests := []struct { shell string }{ {"bash"}, {"zsh"}, {"fish"}, {"powershell"}, } for _, tt := range tests { t.Run(tt.shell, func(t *testing.T) { oldStdout := os.Stdout defer func() { os.Stdout = oldStdout }() r, w, err := os.Pipe() if err != nil { t.Fatal(err) } os.Stdout = w defer w.Close() cmd := &cobra.Command{} completionCmd.Run(cmd, []string{tt.shell}) w.Close() b, err := io.ReadAll(r) if err != nil { t.Fatal(err) } if len(b) == 0 { t.Error("expected non-empty completion script") } }) } }