@@ -10,11 +10,16 @@ import (
10
10
11
11
"github.com/stretchr/testify/require"
12
12
13
+ "cdr.dev/slog/sloggers/slogtest"
14
+
13
15
"github.com/coder/coder/v2/provisionersdk"
14
16
)
15
17
16
18
func TestTar (t * testing.T ) {
17
19
t .Parallel ()
20
+
21
+ log := slogtest .Make (t , & slogtest.Options {IgnoreErrors : true })
22
+
18
23
t .Run ("NoFollowSymlink" , func (t * testing.T ) {
19
24
t .Parallel ()
20
25
dir := t .TempDir ()
@@ -28,7 +33,7 @@ func TestTar(t *testing.T) {
28
33
err = os .Symlink ("no-exists" , filepath .Join (dir , "link" ))
29
34
require .NoError (t , err )
30
35
31
- err = provisionersdk .Tar (io .Discard , dir , 1024 * 1024 )
36
+ err = provisionersdk .Tar (io .Discard , log , dir , 1024 * 1024 )
32
37
require .NoError (t , err )
33
38
})
34
39
t .Run ("HeaderBreakLimit" , func (t * testing.T ) {
@@ -38,7 +43,7 @@ func TestTar(t *testing.T) {
38
43
require .NoError (t , err )
39
44
_ = file .Close ()
40
45
// A header is 512 bytes
41
- err = provisionersdk .Tar (io .Discard , dir , 100 )
46
+ err = provisionersdk .Tar (io .Discard , log , dir , 100 )
42
47
require .Error (t , err )
43
48
})
44
49
t .Run ("HeaderAndContent" , func (t * testing.T ) {
@@ -49,11 +54,11 @@ func TestTar(t *testing.T) {
49
54
_ , _ = file .Write (make ([]byte , 100 ))
50
55
_ = file .Close ()
51
56
// Pay + header is 1024 bytes (padding)
52
- err = provisionersdk .Tar (io .Discard , dir , 1025 )
57
+ err = provisionersdk .Tar (io .Discard , log , dir , 1025 )
53
58
require .NoError (t , err )
54
59
55
60
// Limit is 1 byte too small (n == limit is a failure, must be under)
56
- err = provisionersdk .Tar (io .Discard , dir , 1024 )
61
+ err = provisionersdk .Tar (io .Discard , log , dir , 1024 )
57
62
require .Error (t , err )
58
63
})
59
64
@@ -63,7 +68,7 @@ func TestTar(t *testing.T) {
63
68
file , err := os .CreateTemp (dir , "" )
64
69
require .NoError (t , err )
65
70
_ = file .Close ()
66
- err = provisionersdk .Tar (io .Discard , dir , 1024 )
71
+ err = provisionersdk .Tar (io .Discard , log , dir , 1024 )
67
72
require .Error (t , err )
68
73
})
69
74
t .Run ("Valid" , func (t * testing.T ) {
@@ -72,7 +77,7 @@ func TestTar(t *testing.T) {
72
77
file , err := os .CreateTemp (dir , "*.tf" )
73
78
require .NoError (t , err )
74
79
_ = file .Close ()
75
- err = provisionersdk .Tar (io .Discard , dir , 1024 )
80
+ err = provisionersdk .Tar (io .Discard , log , dir , 1024 )
76
81
require .NoError (t , err )
77
82
})
78
83
t .Run ("ValidJSON" , func (t * testing.T ) {
@@ -81,7 +86,7 @@ func TestTar(t *testing.T) {
81
86
file , err := os .CreateTemp (dir , "*.tf.json" )
82
87
require .NoError (t , err )
83
88
_ = file .Close ()
84
- err = provisionersdk .Tar (io .Discard , dir , 1024 )
89
+ err = provisionersdk .Tar (io .Discard , log , dir , 1024 )
85
90
require .NoError (t , err )
86
91
})
87
92
t .Run ("HiddenFiles" , func (t * testing.T ) {
@@ -122,6 +127,18 @@ func TestTar(t *testing.T) {
122
127
}, {
123
128
Name : "terraform.tfstate" ,
124
129
Archives : false ,
130
+ }, {
131
+ Name : "terraform.tfvars" ,
132
+ Archives : false ,
133
+ }, {
134
+ Name : "terraform.tfvars.json" ,
135
+ Archives : false ,
136
+ }, {
137
+ Name : "*.auto.tfvars" ,
138
+ Archives : false ,
139
+ }, {
140
+ Name : "*.auto.tfvars.json" ,
141
+ Archives : false ,
125
142
},
126
143
}
127
144
for _ , file := range files {
@@ -149,31 +166,32 @@ func TestTar(t *testing.T) {
149
166
}
150
167
archive := new (bytes.Buffer )
151
168
// Headers are chonky so raise the limit to something reasonable
152
- err := provisionersdk .Tar (archive , dir , 1024 << 2 )
169
+ err := provisionersdk .Tar (archive , log , dir , 1024 << 3 )
153
170
require .NoError (t , err )
154
171
dir = t .TempDir ()
155
172
err = provisionersdk .Untar (dir , archive )
156
173
require .NoError (t , err )
157
174
for _ , file := range files {
158
175
_ , err = os .Stat (filepath .Join (dir , file .Name ))
159
- t .Logf ("stat %q %+v" , file .Name , err )
160
176
if file .Archives {
161
- require .NoError (t , err )
177
+ require .NoError (t , err , "stat %q, got error: %+v" , file . Name , err )
162
178
} else {
163
- require .ErrorIs (t , err , os .ErrNotExist )
179
+ require .ErrorIs (t , err , os .ErrNotExist , "stat %q, expected ErrNotExist, got: %+v" , file . Name , err )
164
180
}
165
181
}
166
182
})
167
183
}
168
184
169
185
func TestUntar (t * testing.T ) {
170
186
t .Parallel ()
187
+ log := slogtest .Make (t , & slogtest.Options {IgnoreErrors : true })
188
+
171
189
dir := t .TempDir ()
172
190
file , err := os .CreateTemp (dir , "*.tf" )
173
191
require .NoError (t , err )
174
192
_ = file .Close ()
175
193
archive := new (bytes.Buffer )
176
- err = provisionersdk .Tar (archive , dir , 1024 )
194
+ err = provisionersdk .Tar (archive , log , dir , 1024 )
177
195
require .NoError (t , err )
178
196
dir = t .TempDir ()
179
197
err = provisionersdk .Untar (dir , archive )
0 commit comments