@@ -16,11 +16,89 @@ limitations under the License.
16
16
package file
17
17
18
18
import (
19
+ "compress/gzip"
20
+ "context"
21
+ "errors"
19
22
"os"
20
23
"path/filepath"
21
24
"testing"
22
25
)
23
26
27
+ func Test_tarDirectory (t * testing.T ) {
28
+ setup := func (t * testing.T ) (tmpdir string , gz * os.File , gw * gzip.Writer ) {
29
+ tmpdir = t .TempDir ()
30
+
31
+ paths := []string {
32
+ filepath .Join (tmpdir , "file1.txt" ),
33
+ filepath .Join (tmpdir , "file2.txt" ),
34
+ }
35
+
36
+ for _ , p := range paths {
37
+ err := os .WriteFile (p , []byte ("test content" ), 0644 )
38
+ if err != nil {
39
+ t .Fatal (err )
40
+ }
41
+ }
42
+
43
+ gz , err := os .CreateTemp (tmpdir , "tarDirectory-*" )
44
+ if err != nil {
45
+ t .Fatal (err )
46
+ }
47
+
48
+ return tmpdir , gz , gzip .NewWriter (gz )
49
+ }
50
+
51
+ t .Run ("success" , func (t * testing.T ) {
52
+ tmpdir , gz , gw := setup (t )
53
+ defer func () {
54
+ if err := gw .Close (); err != nil {
55
+ t .Fatal (err )
56
+ }
57
+ if err := gz .Close (); err != nil {
58
+ t .Fatal (err )
59
+ }
60
+ }()
61
+
62
+ err := tarDirectory (context .Background (), tmpdir , "prefix" , gw , false , nil )
63
+ if err != nil {
64
+ t .Fatal (err )
65
+ }
66
+
67
+ _ , err = gz .Stat ()
68
+ if err != nil {
69
+ t .Fatal (err )
70
+ }
71
+ })
72
+
73
+ t .Run ("context cancellation" , func (t * testing.T ) {
74
+ tmpdir , gz , gw := setup (t )
75
+ defer func () {
76
+ if err := gw .Close (); err != nil {
77
+ t .Fatal (err )
78
+ }
79
+ if err := gz .Close (); err != nil {
80
+ t .Fatal (err )
81
+ }
82
+ }()
83
+
84
+ ctx , cancel := context .WithCancel (context .Background ())
85
+ cancel ()
86
+
87
+ err := tarDirectory (ctx , tmpdir , "prefix" , gw , false , nil )
88
+ if err == nil {
89
+ t .Fatal ("expected context cancellation error, got nil" )
90
+ }
91
+ if ! errors .Is (err , context .Canceled ) {
92
+ t .Fatalf ("expected context.Canceled error, got %v" , err )
93
+ }
94
+
95
+ _ , err = gz .Stat ()
96
+ if err != nil {
97
+ t .Fatal (err )
98
+ }
99
+ })
100
+ }
101
+
24
102
func Test_ensureBasePath (t * testing.T ) {
25
103
root := t .TempDir ()
26
104
if err := os .MkdirAll (filepath .Join (root , "hello world" , "foo" , "bar" ), 0700 ); err != nil {
0 commit comments