package cli import ( "bytes" "os" "testing" ) func TestRunNoArgs(t *testing.T) { oldStdout := os.Stdout r, w, _ := os.Pipe() os.Stdout = w err := Run([]string{}) w.Close() os.Stdout = oldStdout if err != nil { t.Fatalf("unexpected error: %v", err) } } func TestRunHelp(t *testing.T) { oldStdout := os.Stdout r, w, _ := os.Pipe() os.Stdout = w err := Run([]string{"help"}) w.Close() os.Stdout = oldStdout if err != nil { t.Fatalf("unexpected error: %v", err) } } func TestRunUnknownCommand(t *testing.T) { err := Run([]string{"unknown"}) if err == nil { t.Fatal("expected error for unknown command") } } func TestRunOutput(t *testing.T) { oldStdout := os.Stdout r, w, _ := os.Pipe() os.Stdout = w Run([]string{}) w.Close() os.Stdout = oldStdout buf := new(bytes.Buffer) buf.ReadFrom(r) if buf.Len() == 0 { t.Fatal("expected output") } }