@@ -15,6 +15,32 @@ import (
15
15
16
16
func TestTar (t * testing.T ) {
17
17
t .Parallel ()
18
+ t .Run ("HeaderBreakLimit" , func (t * testing.T ) {
19
+ t .Parallel ()
20
+ dir := t .TempDir ()
21
+ file , err := os .CreateTemp (dir , "*.tf" )
22
+ require .NoError (t , err )
23
+ _ = file .Close ()
24
+ // A header is 512 bytes
25
+ err = provisionersdk .Tar (io .Discard , dir , 100 )
26
+ require .Error (t , err )
27
+ })
28
+ t .Run ("HeaderAndContent" , func (t * testing.T ) {
29
+ t .Parallel ()
30
+ dir := t .TempDir ()
31
+ file , err := os .CreateTemp (dir , "*.tf" )
32
+ require .NoError (t , err )
33
+ _ , _ = file .Write (make ([]byte , 100 ))
34
+ _ = file .Close ()
35
+ // Pay + header is 1024 bytes (padding)
36
+ err = provisionersdk .Tar (io .Discard , dir , 1025 )
37
+ require .NoError (t , err )
38
+
39
+ // Limit is 1 byte too small (n == limit is a failure, must be under)
40
+ err = provisionersdk .Tar (io .Discard , dir , 1024 )
41
+ require .Error (t , err )
42
+ })
43
+
18
44
t .Run ("NoTF" , func (t * testing.T ) {
19
45
t .Parallel ()
20
46
dir := t .TempDir ()
@@ -97,7 +123,8 @@ func TestTar(t *testing.T) {
97
123
}
98
124
}
99
125
archive := new (bytes.Buffer )
100
- err := provisionersdk .Tar (archive , dir , 1024 )
126
+ // Headers are chonky so raise the limit to something reasonable
127
+ err := provisionersdk .Tar (archive , dir , 1024 << 2 )
101
128
require .NoError (t , err )
102
129
dir = t .TempDir ()
103
130
err = provisionersdk .Untar (dir , archive )
0 commit comments