11 func expectBufferEquality(t *testing.T, name string, buffer *bytes.Buffer, expected string) {
12 output := buffer.String()
13 if output != expected {
14 t.Errorf("incorrect %s:\n%s\n\nexpected %s:\n%s", name, output, name, expected)
16 t.Log([]rune(expected))
20 func expectProcessMainResults(t *testing.T, input string, args []string, exitCode int, expectedOutput string, expectedError string) {
21 inputReader := strings.NewReader(input)
22 outputBuffer := new(bytes.Buffer)
23 errorBuffer := new(bytes.Buffer)
25 returnCode := processMain(args, inputReader, outputBuffer, errorBuffer)
27 expectBufferEquality(t, "output", outputBuffer, expectedOutput)
28 expectBufferEquality(t, "error", errorBuffer, expectedError)
30 if returnCode != exitCode {
31 t.Error("incorrect return code:", returnCode, "expected", exitCode)
35 func TestProcessMainReadFromStdin(t *testing.T) {
48 expectProcessMainResults(t, input, []string{}, expectedExitCode, expectedOutput, expectedError)
51 func TestProcessMainReadFromFile(t *testing.T) {
56 tmpfile, err := ioutil.TempFile("", "example.toml")
60 if _, err := tmpfile.Write([]byte(input)); err != nil {
64 defer os.Remove(tmpfile.Name())
75 expectProcessMainResults(t, ``, []string{tmpfile.Name()}, expectedExitCode, expectedOutput, expectedError)
78 func TestProcessMainReadFromMissingFile(t *testing.T) {
79 expectedError := `open /this/file/does/not/exist: no such file or directory
81 expectProcessMainResults(t, ``, []string{"/this/file/does/not/exist"}, -1, ``, expectedError)