testbed2/pkg/cli/cli_test.go

61 lines
901 B
Go

package cli
import (
"bytes"
"os"
"testing"
)
func TestRunNoArgs(t *testing.T) {
oldStdout := os.Stdout
_, 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
_, 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")
}
}