harness-drone/vendor/github.com/mitchellh/cli/ui_test.go
2015-09-29 18:21:17 -07:00

112 lines
2 KiB
Go

package cli
import (
"bytes"
"io"
"testing"
)
func TestBasicUi_implements(t *testing.T) {
var _ Ui = new(BasicUi)
}
func TestBasicUi_Ask(t *testing.T) {
in_r, in_w := io.Pipe()
defer in_r.Close()
defer in_w.Close()
writer := new(bytes.Buffer)
ui := &BasicUi{
Reader: in_r,
Writer: writer,
}
go in_w.Write([]byte("foo bar\nbaz\n"))
result, err := ui.Ask("Name?")
if err != nil {
t.Fatalf("err: %s", err)
}
if writer.String() != "Name? " {
t.Fatalf("bad: %#v", writer.String())
}
if result != "foo bar" {
t.Fatalf("bad: %#v", result)
}
}
func TestBasicUi_Error(t *testing.T) {
writer := new(bytes.Buffer)
ui := &BasicUi{Writer: writer}
ui.Error("HELLO")
if writer.String() != "HELLO\n" {
t.Fatalf("bad: %s", writer.String())
}
}
func TestBasicUi_Error_ErrorWriter(t *testing.T) {
writer := new(bytes.Buffer)
ewriter := new(bytes.Buffer)
ui := &BasicUi{Writer: writer, ErrorWriter: ewriter}
ui.Error("HELLO")
if ewriter.String() != "HELLO\n" {
t.Fatalf("bad: %s", ewriter.String())
}
}
func TestBasicUi_Output(t *testing.T) {
writer := new(bytes.Buffer)
ui := &BasicUi{Writer: writer}
ui.Output("HELLO")
if writer.String() != "HELLO\n" {
t.Fatalf("bad: %s", writer.String())
}
}
func TestPrefixedUi_implements(t *testing.T) {
var _ Ui = new(PrefixedUi)
}
func TestPrefixedUiError(t *testing.T) {
ui := new(MockUi)
p := &PrefixedUi{
ErrorPrefix: "foo",
Ui: ui,
}
p.Error("bar")
if ui.ErrorWriter.String() != "foobar\n" {
t.Fatalf("bad: %s", ui.ErrorWriter.String())
}
}
func TestPrefixedUiInfo(t *testing.T) {
ui := new(MockUi)
p := &PrefixedUi{
InfoPrefix: "foo",
Ui: ui,
}
p.Info("bar")
if ui.OutputWriter.String() != "foobar\n" {
t.Fatalf("bad: %s", ui.OutputWriter.String())
}
}
func TestPrefixedUiOutput(t *testing.T) {
ui := new(MockUi)
p := &PrefixedUi{
OutputPrefix: "foo",
Ui: ui,
}
p.Output("bar")
if ui.OutputWriter.String() != "foobar\n" {
t.Fatalf("bad: %s", ui.OutputWriter.String())
}
}