func (s *formSuite) TestIOPrompter(c *gc.C) { for i, test := range ioPrompterTests { func() { c.Logf("%d. %s", i, test.about) for k, v := range test.environment { defer testing.PatchEnvironment(k, v)() } outBuf := new(bytes.Buffer) prompter := form.IOPrompter{ In: strings.NewReader(test.input), Out: outBuf, } if test.title != "" { err := prompter.ShowTitle(test.title) c.Assert(err, gc.IsNil) } for j, p := range test.prompts { result, err := prompter.Prompt(p.name, p.attr) if err != nil { c.Assert(err, gc.ErrorMatches, test.expectError) c.Assert(outBuf.String(), gc.Equals, test.expectOutput) return } c.Assert(result, gc.Equals, test.expect[j]) } c.Assert(test.expectError, gc.Equals, "", gc.Commentf("did not reveive expected error")) c.Assert(outBuf.String(), gc.Equals, test.expectOutput) }() } }
func (s *formSuite) TestIOPrompterWriteErrors(c *gc.C) { prompter := form.IOPrompter{ In: nil, Out: errorWriter{}, } err := prompter.ShowTitle("title") c.Assert(err, gc.ErrorMatches, "cannot show title: test") _, err = prompter.Prompt("attr", environschema.Attr{ Description: "A", }) c.Assert(err, gc.ErrorMatches, "cannot write prompt: test") }