Skip to content

Commit 4f74a92

Browse files
committed
Revert "use goldie"
This reverts commit dbba832.
1 parent ee96826 commit 4f74a92

File tree

10 files changed

+120
-44
lines changed

10 files changed

+120
-44
lines changed

cmd/bindown/bootstrap_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,5 @@ func Test_bootstrapCmd(t *testing.T) {
2121
result := runner.run("bootstrap", "--output", output, "--tag", "4.8.0", "--base-url", server.URL)
2222
result.assertState(resultState{})
2323

24-
testutil.AssertGoldenFile(t, output)
24+
testutil.CheckGoldenDir(t, targetDir, filepath.FromSlash("testdata/golden/bootstrap"))
2525
}

cmd/bindown/cli_test.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,7 @@ url_checksums:
499499
result := runner.run("wrap", "runnable", "--bindown", testutil.BindownBin(), "--output", runnable)
500500
result.assertState(resultState{stdout: runnable})
501501
testutil.AssertFile(t, runnable, true, false)
502-
testutil.AssertGoldenFile(t, runnable)
502+
testutil.CheckGoldenDir(t, outputDir, filepath.FromSlash("testdata/golden/wrap/bindown-path"))
503503

504504
// make sure it runs
505505
cmd := exec.Command("sh", "-c", filepath.ToSlash(runnable))
@@ -535,8 +535,7 @@ url_checksums:
535535
)
536536
result.assertState(resultState{stdout: bindown + "\n" + runnable})
537537
testutil.AssertFile(t, runnable, true, false)
538-
testutil.AssertGoldenFile(t, runnable)
539538
testutil.AssertFile(t, bindown, true, false)
540-
testutil.AssertGoldenFile(t, bindown)
539+
testutil.CheckGoldenDir(t, outputDir, filepath.FromSlash("testdata/golden/wrap/wrap-bindown"))
541540
})
542541
}

go.mod

-2
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,6 @@ require (
4848
github.com/pierrec/lz4/v4 v4.1.18 // indirect
4949
github.com/pmezard/go-difflib v1.0.0 // indirect
5050
github.com/riywo/loginshell v0.0.0-20200815045211-7d26008be1ab // indirect
51-
github.com/sebdah/goldie/v2 v2.5.3 // indirect
52-
github.com/sergi/go-diff v1.3.1 // indirect
5351
github.com/therootcompany/xz v1.0.1 // indirect
5452
github.com/ulikunitz/xz v0.5.11 // indirect
5553
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect

go.sum

-9
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,6 @@ github.com/nwaples/rardecode/v2 v2.0.0-beta.2/go.mod h1:yntwv/HfMc/Hbvtq9I19D1n5
156156
github.com/pierrec/lz4/v4 v4.1.2/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
157157
github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ=
158158
github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
159-
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
160159
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
161160
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
162161
github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo=
@@ -172,15 +171,9 @@ github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDj
172171
github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs=
173172
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4=
174173
github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY=
175-
github.com/sebdah/goldie/v2 v2.5.3 h1:9ES/mNN+HNUbNWpVAlrzuZ7jE+Nrczbj8uFRjM7624Y=
176-
github.com/sebdah/goldie/v2 v2.5.3/go.mod h1:oZ9fp0+se1eapSRjfYbsV/0Hqhbuu3bJVvKI/NNtssI=
177-
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
178-
github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
179-
github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
180174
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
181175
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
182176
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
183-
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
184177
github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
185178
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
186179
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
@@ -385,10 +378,8 @@ google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8
385378
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
386379
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
387380
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
388-
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
389381
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
390382
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
391-
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
392383
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
393384
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
394385
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

internal/testutil/golden.go

+117
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
package testutil
2+
3+
import (
4+
"bytes"
5+
"fmt"
6+
"io"
7+
"io/fs"
8+
"os"
9+
"path/filepath"
10+
"testing"
11+
12+
"github.com/stretchr/testify/assert"
13+
"github.com/stretchr/testify/require"
14+
)
15+
16+
func updateGoldenDir(t *testing.T, resultDir, goldenDir string) {
17+
t.Helper()
18+
if os.Getenv("UPDATE_GOLDEN") == "" {
19+
return
20+
}
21+
require.NoError(t, os.RemoveAll(goldenDir))
22+
err := filepath.WalkDir(resultDir, func(path string, d fs.DirEntry, err error) error {
23+
if err != nil || d.IsDir() {
24+
return err
25+
}
26+
fmt.Println(path)
27+
relName := mustRel(t, resultDir, path)
28+
return copyFile(path, filepath.Join(goldenDir, relName))
29+
})
30+
require.NoError(t, err)
31+
}
32+
33+
func copyFile(src, dst string) (errOut error) {
34+
err := os.MkdirAll(filepath.Dir(dst), 0o777)
35+
if err != nil {
36+
return err
37+
}
38+
dstFile, err := os.Create(dst)
39+
if err != nil {
40+
return err
41+
}
42+
defer func() {
43+
e := dstFile.Close()
44+
if errOut == nil {
45+
errOut = e
46+
}
47+
}()
48+
srcFile, err := os.Open(src)
49+
if err != nil {
50+
return err
51+
}
52+
defer func() {
53+
e := srcFile.Close()
54+
if errOut == nil {
55+
errOut = e
56+
}
57+
}()
58+
_, err = io.Copy(dstFile, srcFile)
59+
return err
60+
}
61+
62+
func CheckGoldenDir(t *testing.T, resultDir, goldenDir string) {
63+
t.Helper()
64+
golden := true
65+
t.Cleanup(func() {
66+
t.Helper()
67+
if !golden {
68+
t.Log("To regenerate golden files run `UPDATE_GOLDEN=1 script/test`")
69+
}
70+
})
71+
updateGoldenDir(t, resultDir, goldenDir)
72+
checked := map[string]bool{}
73+
_, err := os.Stat(goldenDir)
74+
if err == nil {
75+
assert.NoError(t, filepath.WalkDir(goldenDir, func(wantPath string, info fs.DirEntry, err error) error {
76+
relPath := mustRel(t, goldenDir, wantPath)
77+
if err != nil || info.IsDir() {
78+
return err
79+
}
80+
if !assertEqualFiles(t, wantPath, filepath.Join(resultDir, relPath)) {
81+
golden = false
82+
}
83+
checked[relPath] = true
84+
return nil
85+
}))
86+
}
87+
assert.NoError(t, filepath.Walk(resultDir, func(resultPath string, info fs.FileInfo, err error) error {
88+
relPath := mustRel(t, resultDir, resultPath)
89+
if err != nil || info.IsDir() || checked[relPath] {
90+
return err
91+
}
92+
golden = false
93+
return fmt.Errorf("found unexpected file:\n%s", relPath)
94+
}))
95+
}
96+
97+
func mustRel(t *testing.T, base, target string) string {
98+
t.Helper()
99+
rel, err := filepath.Rel(base, target)
100+
require.NoError(t, err)
101+
return rel
102+
}
103+
104+
func assertEqualFiles(t *testing.T, want, got string) bool {
105+
t.Helper()
106+
wantBytes, err := os.ReadFile(want)
107+
if !assert.NoError(t, err) {
108+
return false
109+
}
110+
wantBytes = bytes.ReplaceAll(wantBytes, []byte("\r\n"), []byte("\n"))
111+
gotBytes, err := os.ReadFile(got)
112+
if !assert.NoError(t, err) {
113+
return false
114+
}
115+
gotBytes = bytes.ReplaceAll(gotBytes, []byte("\r\n"), []byte("\n"))
116+
return assert.Equal(t, string(wantBytes), string(gotBytes))
117+
}

internal/testutil/testutil.go

-29
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@ import (
1010
"os/exec"
1111
"path/filepath"
1212
"runtime"
13-
"runtime/debug"
1413
"sync"
1514
"testing"
1615

17-
"github.com/sebdah/goldie/v2"
1816
"github.com/stretchr/testify/assert"
1917
"github.com/stretchr/testify/require"
2018
)
@@ -137,30 +135,3 @@ func RepoRoot() string {
137135
}
138136
return abs
139137
}
140-
141-
func AssertGoldenFile(t *testing.T, file string) {
142-
t.Helper()
143-
content, err := os.ReadFile(file)
144-
if !assert.NoError(t, err) {
145-
return
146-
}
147-
failedBefore := t.Failed()
148-
goldie.New(
149-
t,
150-
goldie.WithTestNameForDir(true),
151-
goldie.WithSubTestNameForDir(true),
152-
goldie.WithNameSuffix(""),
153-
goldie.WithFixtureDir(filepath.Join("testdata", "golden")),
154-
).Assert(t, filepath.Base(file), content)
155-
if !failedBefore && t.Failed() {
156-
buildInfo, ok := debug.ReadBuildInfo()
157-
require.True(t, ok, "unable to read build info")
158-
t.Logf(`
159-
update golden files for this test with:
160-
go test %s -run %q -update
161-
update golden files for all package tests with:
162-
go test %s -update
163-
`, buildInfo.Path, t.Name(), buildInfo.Path)
164-
165-
}
166-
}

0 commit comments

Comments
 (0)