diff --git a/packer/tty.go b/packer/tty.go new file mode 100644 index 000000000..533d75c46 --- /dev/null +++ b/packer/tty.go @@ -0,0 +1,5 @@ +package packer + +type TTY interface { + ReadString() (string, error) +} diff --git a/packer/ui.go b/packer/ui.go index 87bd854d7..64dcea48d 100644 --- a/packer/ui.go +++ b/packer/ui.go @@ -82,7 +82,7 @@ type BasicUi struct { ErrorWriter io.Writer l sync.Mutex interrupted bool - tty *tty.TTY + tty TTY StackableProgressBar } @@ -235,7 +235,7 @@ func (rw *BasicUi) Ask(query string) (string, error) { log.Printf("ui: scan err: %s", err) return } - result <- line + result <- strings.TrimSpace(line) }() select { diff --git a/packer/ui_test.go b/packer/ui_test.go index a1bb0193c..a6e026d1f 100644 --- a/packer/ui_test.go +++ b/packer/ui_test.go @@ -34,9 +34,18 @@ func testUi() *BasicUi { Reader: new(bytes.Buffer), Writer: new(bytes.Buffer), ErrorWriter: new(bytes.Buffer), + tty: new(testTTY), } } +type testTTY struct { + say string +} + +func (tttyy *testTTY) ReadString() (string, error) { + return tttyy.say, nil +} + func TestColoredUi(t *testing.T) { bufferUi := testUi() ui := &ColoredUi{UiColorYellow, UiColorRed, bufferUi} @@ -217,7 +226,7 @@ func TestBasicUi_Ask(t *testing.T) { for _, testCase := range testCases { // Because of the internal bufio we can't easily reset the input, so create a new one each time bufferUi := testUi() - writeReader(bufferUi, testCase.Input) + bufferUi.tty = &testTTY{testCase.Input} actual, err = bufferUi.Ask(testCase.Prompt) if err != nil {