aboutsummaryrefslogtreecommitdiff
path: root/internal/testutil
diff options
context:
space:
mode:
Diffstat (limited to 'internal/testutil')
-rw-r--r--internal/testutil/golden.go16
1 files changed, 12 insertions, 4 deletions
diff --git a/internal/testutil/golden.go b/internal/testutil/golden.go
index 15ac095f..7f0295a0 100644
--- a/internal/testutil/golden.go
+++ b/internal/testutil/golden.go
@@ -8,6 +8,8 @@ import (
"encoding/json"
"flag"
"io/ioutil"
+ "os"
+ "path/filepath"
"regexp"
"runtime"
"testing"
@@ -17,7 +19,7 @@ import (
var updateRegex = flag.String("update", "", "Update testdata of tests matching the given regex")
-// Update returns true if update regex mathces given test name.
+// Update returns true if update regex matches given test name.
func Update(name string) bool {
if updateRegex == nil || *updateRegex == "" {
return false
@@ -38,14 +40,20 @@ func AssertGolden(t testing.TB, path string, update bool, got interface{}) {
data := marshal(t, got)
if update {
- if err := ioutil.WriteFile(path, data, 0640); err != nil {
- t.Fatalf("update golden file %q: %s", path, err)
+ err := os.MkdirAll(filepath.Dir(path), os.ModePerm)
+ if err != nil {
+ t.Fatalf("create directories for golden file %q: %v", path, err)
+ }
+
+ err = ioutil.WriteFile(path, data, 0640)
+ if err != nil {
+ t.Fatalf("update golden file %q: %v", path, err)
}
}
golden, err := ioutil.ReadFile(path)
if err != nil {
- t.Fatalf("read golden file %q: %s", path, err)
+ t.Fatalf("read golden file %q: %v", path, err)
}
assert.Equal(t, string(golden), string(data))