Added assertDiff
diff --git a/assert_test.go b/assert_test.go
index 2cb550d..8e06636 100644
--- a/assert_test.go
+++ b/assert_test.go
@@ -2,6 +2,10 @@
import (
"fmt"
+ "io"
+ "io/ioutil"
+ "os"
+ "os/exec"
"path"
"runtime"
"testing"
@@ -123,3 +127,51 @@
assertError(t, err, typ, msg)
return ret
}
+
+func diff(a, b string) (string, error) {
+ atmp, err := ioutil.TempFile("", "help-diff")
+
+ if err != nil {
+ return "", err
+ }
+
+ btmp, err := ioutil.TempFile("", "help-diff")
+
+ if err != nil {
+ return "", err
+ }
+
+ if _, err := io.WriteString(atmp, a); err != nil {
+ return "", err
+ }
+
+ if _, err := io.WriteString(btmp, b); err != nil {
+ return "", err
+ }
+
+ ret, err := exec.Command("diff", "-u", "-d", "--label", "got", atmp.Name(), "--label", "expected", btmp.Name()).Output()
+
+ os.Remove(atmp.Name())
+ os.Remove(btmp.Name())
+
+ if err.Error() == "exit status 1" {
+ return string(ret), nil
+ }
+
+ return string(ret), err
+}
+
+func assertDiff(t *testing.T, actual, expected, msg string) {
+ if actual == expected {
+ return
+ }
+
+ ret, err := diff(actual, expected)
+
+ if err != nil {
+ assertErrorf(t, "Unexpected diff error: %s", err)
+ assertErrorf(t, "Unexpected %s, expected:\n\n%s\n\nbut got\n\n%s", msg, expected, actual)
+ } else {
+ assertErrorf(t, "Unexpected %s:\n\n%s", msg, ret)
+ }
+}
diff --git a/convert_test.go b/convert_test.go
index 9ee8ebb..0de0eea 100644
--- a/convert_test.go
+++ b/convert_test.go
@@ -171,13 +171,5 @@
occaecat cupidatat non proident, sunt in culpa qui officia
deserunt mollit anim id est laborum.`
- if got != expected {
- ret, err := helpDiff(got, expected)
-
- if err != nil {
- t.Errorf("Unexpected wrapped text, expected:\n\n%s\n\nbut got\n\n%s", expected, got)
- } else {
- t.Errorf("Unexpected wrapped text:\n\n%s", ret)
- }
- }
+ assertDiff(t, got, expected, "wrapped text")
}
diff --git a/help_test.go b/help_test.go
index 49ee5b4..def3043 100644
--- a/help_test.go
+++ b/help_test.go
@@ -3,48 +3,12 @@
import (
"bytes"
"fmt"
- "io"
- "io/ioutil"
"os"
- "os/exec"
"runtime"
"testing"
"time"
)
-func helpDiff(a, b string) (string, error) {
- atmp, err := ioutil.TempFile("", "help-diff")
-
- if err != nil {
- return "", err
- }
-
- btmp, err := ioutil.TempFile("", "help-diff")
-
- if err != nil {
- return "", err
- }
-
- if _, err := io.WriteString(atmp, a); err != nil {
- return "", err
- }
-
- if _, err := io.WriteString(btmp, b); err != nil {
- return "", err
- }
-
- ret, err := exec.Command("diff", "-u", "-d", "--label", "got", atmp.Name(), "--label", "expected", btmp.Name()).Output()
-
- os.Remove(atmp.Name())
- os.Remove(btmp.Name())
-
- if err.Error() == "exit status 1" {
- return string(ret), nil
- }
-
- return string(ret), err
-}
-
type helpOptions struct {
Verbose []bool `short:"v" long:"verbose" description:"Show verbose debug information" ini-name:"verbose"`
Call func(string) `short:"c" description:"Call phone number" ini-name:"call"`
@@ -179,16 +143,7 @@
`
}
- if e.Message != expected {
- ret, err := helpDiff(e.Message, expected)
-
- if err != nil {
- t.Errorf("Unexpected diff error: %s", err)
- t.Errorf("Unexpected help message, expected:\n\n%s\n\nbut got\n\n%s", expected, e.Message)
- } else {
- t.Errorf("Unexpected help message:\n\n%s", ret)
- }
- }
+ assertDiff(t, e.Message, expected, "help message")
}
}
@@ -274,15 +229,7 @@
Use for extra verbosity
`, tt.Format("2 January 2006"))
- if got != expected {
- ret, err := helpDiff(got, expected)
-
- if err != nil {
- t.Errorf("Unexpected man page, expected:\n\n%s\n\nbut got\n\n%s", expected, got)
- } else {
- t.Errorf("Unexpected man page:\n\n%s", ret)
- }
- }
+ assertDiff(t, got, expected, "man page")
}
type helpCommandNoOptions struct {
@@ -331,15 +278,6 @@
`
}
- if e.Message != expected {
- ret, err := helpDiff(e.Message, expected)
-
- if err != nil {
- t.Errorf("Unexpected diff error: %s", err)
- t.Errorf("Unexpected help message, expected:\n\n%s\n\nbut got\n\n%s", expected, e.Message)
- } else {
- t.Errorf("Unexpected help message:\n\n%s", ret)
- }
- }
+ assertDiff(t, e.Message, expected, "help message")
}
}
diff --git a/ini_test.go b/ini_test.go
index cb88b64..6b8553b 100644
--- a/ini_test.go
+++ b/ini_test.go
@@ -2,6 +2,7 @@
import (
"bytes"
+ "fmt"
"io/ioutil"
"os"
"strings"
@@ -223,15 +224,8 @@
got := b.String()
expected := test.expected
- if got != expected {
- ret, err := helpDiff(got, expected)
-
- if err != nil {
- t.Errorf("Unexpected ini with arguments %+v and ini options %b, expected:\n\n%s\n\nbut got\n\n%s", test.args, test.options, expected, got)
- } else {
- t.Errorf("Unexpected ini with arguments %+v and ini options %b:\n\n%s", test.args, test.options, ret)
- }
- }
+ msg := fmt.Sprintf("with arguments %+v and ini options %b", test.args, test.options)
+ assertDiff(t, got, expected, msg)
}
}
@@ -411,9 +405,7 @@
expected := "[Application Options]\nValue = 123\n\n"
- if string(found) != expected {
- t.Fatalf("Expected file content to be \"%s\" but was \"%s\"", expected, found)
- }
+ assertDiff(t, string(found), expected, "ini content")
}
func TestOverwriteRequiredOptions(t *testing.T) {