1package root 2 3import ( 4 "testing" 5 6 "github.com/cli/cli/v2/pkg/iostreams" 7 "github.com/stretchr/testify/assert" 8) 9 10func TestNewHelpTopic(t *testing.T) { 11 tests := []struct { 12 name string 13 topic string 14 args []string 15 flags []string 16 wantsErr bool 17 }{ 18 { 19 name: "valid topic", 20 topic: "environment", 21 args: []string{}, 22 flags: []string{}, 23 wantsErr: false, 24 }, 25 { 26 name: "invalid topic", 27 topic: "invalid", 28 args: []string{}, 29 flags: []string{}, 30 wantsErr: false, 31 }, 32 { 33 name: "more than zero args", 34 topic: "environment", 35 args: []string{"invalid"}, 36 flags: []string{}, 37 wantsErr: false, 38 }, 39 { 40 name: "more than zero flags", 41 topic: "environment", 42 args: []string{}, 43 flags: []string{"--invalid"}, 44 wantsErr: true, 45 }, 46 { 47 name: "help arg", 48 topic: "environment", 49 args: []string{"help"}, 50 flags: []string{}, 51 wantsErr: false, 52 }, 53 { 54 name: "help flag", 55 topic: "environment", 56 args: []string{}, 57 flags: []string{"--help"}, 58 wantsErr: false, 59 }, 60 } 61 62 for _, tt := range tests { 63 t.Run(tt.name, func(t *testing.T) { 64 _, _, stdout, stderr := iostreams.Test() 65 66 cmd := NewHelpTopic(tt.topic) 67 cmd.SetArgs(append(tt.args, tt.flags...)) 68 cmd.SetOut(stdout) 69 cmd.SetErr(stderr) 70 71 _, err := cmd.ExecuteC() 72 if tt.wantsErr { 73 assert.Error(t, err) 74 return 75 } 76 assert.NoError(t, err) 77 }) 78 } 79} 80