11package golden
22
33import (
4- "io/ioutil"
54 "os"
65 "path/filepath"
6+ "reflect"
7+ "runtime"
78 "testing"
89
910 "github.com/stretchr/testify/assert"
1011 "github.com/stretchr/testify/require"
1112)
1213
14+ func TestDefaults (t * testing.T ) {
15+ t .Run ("Default" , func (t * testing.T ) {
16+ assert .IsType (t , & Golden {}, Default )
17+
18+ assert .Equal (t , DefaultDirMode , Default .DirMode )
19+ assert .Equal (t , DefaultFileMode , Default .FileMode )
20+ assert .Equal (t , DefaultSuffix , Default .Suffix )
21+ assert .Equal (t , DefaultDirname , Default .Dirname )
22+
23+ // Use runtime.FuncForPC() to verify the UpdateFunc value is set to
24+ // the EnvUpdateFunc function by default.
25+ gotFP := reflect .ValueOf (Default .UpdateFunc ).Pointer ()
26+ gotFuncName := runtime .FuncForPC (gotFP ).Name ()
27+ wantFP := reflect .ValueOf (EnvUpdateFunc ).Pointer ()
28+ wantFuncName := runtime .FuncForPC (wantFP ).Name ()
29+
30+ assert .Equal (t , wantFuncName , gotFuncName )
31+ })
32+
33+ t .Run ("DefaultDirMode" , func (t * testing.T ) {
34+ assert .Equal (t , os .FileMode (0o755 ), DefaultDirMode )
35+ })
36+
37+ t .Run ("DefaultFileMode" , func (t * testing.T ) {
38+ assert .Equal (t , os .FileMode (0o644 ), DefaultFileMode )
39+ })
40+
41+ t .Run ("DefaultSuffix" , func (t * testing.T ) {
42+ assert .Equal (t , ".golden" , DefaultSuffix )
43+ })
44+
45+ t .Run ("DefaultDirname" , func (t * testing.T ) {
46+ assert .Equal (t , "testdata" , DefaultDirname )
47+ })
48+
49+ t .Run ("DefaultUpdateFunc" , func (t * testing.T ) {
50+ gotFP := reflect .ValueOf (DefaultUpdateFunc ).Pointer ()
51+ gotFuncName := runtime .FuncForPC (gotFP ).Name ()
52+ wantFP := reflect .ValueOf (EnvUpdateFunc ).Pointer ()
53+ wantFuncName := runtime .FuncForPC (wantFP ).Name ()
54+ assert .Equal (t , wantFuncName , gotFuncName )
55+ })
56+ }
57+
58+ // TestNew is a horribly hack to test that the New() function uses the
59+ // package-level Default* variables.
60+ func TestNew (t * testing.T ) {
61+ // Capture the default values before we change them.
62+ defaultDirMode := DefaultDirMode
63+ defaultFileMode := DefaultFileMode
64+ defaultSuffix := DefaultSuffix
65+ defaultDirname := DefaultDirname
66+ defaultUpdateFunc := DefaultUpdateFunc
67+
68+ // Restore the default values after the test.
69+ t .Cleanup (func () {
70+ DefaultDirMode = defaultDirMode
71+ DefaultFileMode = defaultFileMode
72+ DefaultSuffix = defaultSuffix
73+ DefaultDirname = defaultDirname
74+ DefaultUpdateFunc = defaultUpdateFunc
75+ })
76+
77+ // Set all the default values to new values.
78+ DefaultDirMode = os .FileMode (0o700 )
79+ DefaultFileMode = os .FileMode (0o600 )
80+ DefaultSuffix = ".gold"
81+ DefaultDirname = "goldenfiles"
82+
83+ updateFunc := func () bool { return true }
84+ DefaultUpdateFunc = updateFunc
85+
86+ // Create a new Golden instance with the new values.
87+ got := New ()
88+
89+ assert .Equal (t , DefaultDirMode , got .DirMode )
90+ assert .Equal (t , DefaultFileMode , got .FileMode )
91+ assert .Equal (t , DefaultSuffix , got .Suffix )
92+ assert .Equal (t , DefaultDirname , got .Dirname )
93+
94+ // Verify the UpdateFunc value is set to the new value.
95+ gotFP := reflect .ValueOf (got .UpdateFunc ).Pointer ()
96+ gotFuncName := runtime .FuncForPC (gotFP ).Name ()
97+ wantFP := reflect .ValueOf (updateFunc ).Pointer ()
98+ wantFuncName := runtime .FuncForPC (wantFP ).Name ()
99+
100+ assert .Equal (t , wantFuncName , gotFuncName )
101+ }
102+
13103func TestFile (t * testing.T ) {
14104 got := File (t )
15105
@@ -57,8 +147,8 @@ func TestGet(t *testing.T) {
57147 require .NoError (t , err )
58148
59149 content := []byte ("foobar\n hello world :)" )
60- err = ioutil .WriteFile ( //nolint:gosec
61- filepath .Join ("testdata" , "TestGet.golden" ), content , 0o644 ,
150+ err = os .WriteFile (
151+ filepath .Join ("testdata" , "TestGet.golden" ), content , 0o600 ,
62152 )
63153 require .NoError (t , err )
64154
@@ -108,7 +198,7 @@ func TestGet(t *testing.T) {
108198 err := os .MkdirAll (dir , 0o755 )
109199 require .NoError (t , err )
110200
111- err = ioutil .WriteFile (f , tt .want , 0o644 ) //nolint:gosec
201+ err = os .WriteFile (f , tt .want , 0o600 )
112202 require .NoError (t , err )
113203
114204 got := Get (t )
@@ -130,7 +220,7 @@ func TestSet(t *testing.T) {
130220 content := []byte ("This is the default golden file for TestSet ^_^" )
131221 Set (t , content )
132222
133- b , err := ioutil .ReadFile (filepath .Join ("testdata" , "TestSet.golden" ))
223+ b , err := os .ReadFile (filepath .Join ("testdata" , "TestSet.golden" ))
134224 require .NoError (t , err )
135225
136226 assert .Equal (t , content , b )
@@ -176,7 +266,7 @@ func TestSet(t *testing.T) {
176266
177267 Set (t , tt .content )
178268
179- got , err := ioutil .ReadFile (f )
269+ got , err := os .ReadFile (f )
180270 require .NoError (t , err )
181271
182272 assert .Equal (t , tt .file , f )
@@ -246,9 +336,9 @@ func TestGetP(t *testing.T) {
246336 require .NoError (t , err )
247337
248338 content := []byte ("this is the named golden file for TestGetP" )
249- err = ioutil .WriteFile ( //nolint:gosec
339+ err = os .WriteFile (
250340 filepath .Join ("testdata" , "TestGetP" , "sub-name.golden" ),
251- content , 0o644 ,
341+ content , 0o600 ,
252342 )
253343 require .NoError (t , err )
254344
@@ -330,7 +420,7 @@ func TestGetP(t *testing.T) {
330420 err := os .MkdirAll (dir , 0o755 )
331421 require .NoError (t , err )
332422
333- err = ioutil .WriteFile (f , tt .want , 0o644 ) //nolint:gosec
423+ err = os .WriteFile (f , tt .want , 0o600 )
334424 require .NoError (t , err )
335425
336426 got := GetP (t , tt .named )
@@ -350,7 +440,7 @@ func TestSetP(t *testing.T) {
350440 content := []byte ("This is the named golden file for TestSetP ^_^" )
351441 SetP (t , "sub-name" , content )
352442
353- b , err := ioutil .ReadFile (
443+ b , err := os .ReadFile (
354444 filepath .Join ("testdata" , "TestSetP" , "sub-name.golden" ),
355445 )
356446 require .NoError (t , err )
@@ -420,7 +510,7 @@ func TestSetP(t *testing.T) {
420510
421511 SetP (t , tt .named , tt .content )
422512
423- got , err := ioutil .ReadFile (f )
513+ got , err := os .ReadFile (f )
424514 require .NoError (t , err )
425515
426516 assert .Equal (t , tt .file , f )
0 commit comments