OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / github.com / pelletier / go-toml / cmd / tomljson / main_test.go
diff --git a/vendor/github.com/pelletier/go-toml/cmd/tomljson/main_test.go b/vendor/github.com/pelletier/go-toml/cmd/tomljson/main_test.go
new file mode 100644 (file)
index 0000000..0b4bdbb
--- /dev/null
@@ -0,0 +1,82 @@
+package main
+
+import (
+       "bytes"
+       "io/ioutil"
+       "os"
+       "strings"
+       "testing"
+)
+
+func expectBufferEquality(t *testing.T, name string, buffer *bytes.Buffer, expected string) {
+       output := buffer.String()
+       if output != expected {
+               t.Errorf("incorrect %s:\n%s\n\nexpected %s:\n%s", name, output, name, expected)
+               t.Log([]rune(output))
+               t.Log([]rune(expected))
+       }
+}
+
+func expectProcessMainResults(t *testing.T, input string, args []string, exitCode int, expectedOutput string, expectedError string) {
+       inputReader := strings.NewReader(input)
+       outputBuffer := new(bytes.Buffer)
+       errorBuffer := new(bytes.Buffer)
+
+       returnCode := processMain(args, inputReader, outputBuffer, errorBuffer)
+
+       expectBufferEquality(t, "output", outputBuffer, expectedOutput)
+       expectBufferEquality(t, "error", errorBuffer, expectedError)
+
+       if returnCode != exitCode {
+               t.Error("incorrect return code:", returnCode, "expected", exitCode)
+       }
+}
+
+func TestProcessMainReadFromStdin(t *testing.T) {
+       input := `
+               [mytoml]
+               a = 42`
+       expectedOutput := `{
+  "mytoml": {
+    "a": 42
+  }
+}
+`
+       expectedError := ``
+       expectedExitCode := 0
+
+       expectProcessMainResults(t, input, []string{}, expectedExitCode, expectedOutput, expectedError)
+}
+
+func TestProcessMainReadFromFile(t *testing.T) {
+       input := `
+               [mytoml]
+               a = 42`
+
+       tmpfile, err := ioutil.TempFile("", "example.toml")
+       if err != nil {
+               t.Fatal(err)
+       }
+       if _, err := tmpfile.Write([]byte(input)); err != nil {
+               t.Fatal(err)
+       }
+
+       defer os.Remove(tmpfile.Name())
+
+       expectedOutput := `{
+  "mytoml": {
+    "a": 42
+  }
+}
+`
+       expectedError := ``
+       expectedExitCode := 0
+
+       expectProcessMainResults(t, ``, []string{tmpfile.Name()}, expectedExitCode, expectedOutput, expectedError)
+}
+
+func TestProcessMainReadFromMissingFile(t *testing.T) {
+       expectedError := `open /this/file/does/not/exist: no such file or directory
+`
+       expectProcessMainResults(t, ``, []string{"/this/file/does/not/exist"}, -1, ``, expectedError)
+}