Skip to content

Commit 66bf5e9

Browse files
committed
add unit test for tarDirectory
Signed-off-by: Lucas Rodriguez <[email protected]>
1 parent c8b6ec3 commit 66bf5e9

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

content/file/utils_test.go

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,89 @@ limitations under the License.
1616
package file
1717

1818
import (
19+
"compress/gzip"
20+
"context"
21+
"errors"
1922
"os"
2023
"path/filepath"
2124
"testing"
2225
)
2326

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+
24102
func Test_ensureBasePath(t *testing.T) {
25103
root := t.TempDir()
26104
if err := os.MkdirAll(filepath.Join(root, "hello world", "foo", "bar"), 0700); err != nil {

0 commit comments

Comments
 (0)