package cli import ( "bytes" "context" "strings" "testing" ) func TestRunHelpLongFlag(t *testing.T) { var stdout bytes.Buffer var stderr bytes.Buffer err := Run(context.Background(), []string{"--help"}, &stdout, &stderr) if err != nil { t.Fatalf("Run() error = %v", err) } if !strings.Contains(stdout.String(), "Usage:") { t.Fatalf("help output missing usage:\n%s", stdout.String()) } } func TestRunHelpShortFlag(t *testing.T) { var stdout bytes.Buffer var stderr bytes.Buffer err := Run(context.Background(), []string{"-h"}, &stdout, &stderr) if err != nil { t.Fatalf("Run() error = %v", err) } if !strings.Contains(stdout.String(), "weatherreporter --help") { t.Fatalf("help output missing root help command:\n%s", stdout.String()) } } func TestRunUnknownArgument(t *testing.T) { var stdout bytes.Buffer var stderr bytes.Buffer err := Run(context.Background(), []string{"generate"}, &stdout, &stderr) if err == nil { t.Fatal("Run() error = nil, want unknown argument error") } if !strings.Contains(err.Error(), `unknown argument "generate"`) { t.Fatalf("Run() error = %q, want unknown argument message", err.Error()) } }