MCPcopy Index your code
hub / github.com/coder/coder / TestTar

Function TestTar

provisionersdk/archive_test.go:17–182  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

15)
16
17func TestTar(t *testing.T) {
18 t.Parallel()
19
20 log := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true})
21
22 t.Run("NoFollowSymlink", func(t *testing.T) {
23 t.Parallel()
24 dir := t.TempDir()
25
26 file, err := os.CreateTemp(dir, "*.tf")
27 require.NoError(t, err)
28 _ = file.Close()
29
30 // If we follow symlinks, Tar would fail.
31 // See https://github.com/coder/coder/issues/5677.
32 err = os.Symlink("no-exists", filepath.Join(dir, "link"))
33 require.NoError(t, err)
34
35 err = provisionersdk.Tar(io.Discard, log, dir, 1024*1024)
36 require.NoError(t, err)
37 })
38 t.Run("HeaderBreakLimit", func(t *testing.T) {
39 t.Parallel()
40 dir := t.TempDir()
41 file, err := os.CreateTemp(dir, "*.tf")
42 require.NoError(t, err)
43 _ = file.Close()
44 // A header is 512 bytes
45 err = provisionersdk.Tar(io.Discard, log, dir, 100)
46 require.Error(t, err)
47 })
48 t.Run("HeaderAndContent", func(t *testing.T) {
49 t.Parallel()
50 dir := t.TempDir()
51 file, err := os.CreateTemp(dir, "*.tf")
52 require.NoError(t, err)
53 _, _ = file.Write(make([]byte, 100))
54 _ = file.Close()
55 // Pay + header is 1024 bytes (padding)
56 err = provisionersdk.Tar(io.Discard, log, dir, 1025)
57 require.NoError(t, err)
58
59 // Limit is 1 byte too small (n == limit is a failure, must be under)
60 err = provisionersdk.Tar(io.Discard, log, dir, 1024)
61 require.Error(t, err)
62 })
63
64 t.Run("NoTF", func(t *testing.T) {
65 t.Parallel()
66 dir := t.TempDir()
67 file, err := os.CreateTemp(dir, "")
68 require.NoError(t, err)
69 _ = file.Close()
70 err = provisionersdk.Tar(io.Discard, log, dir, 1024)
71 require.Error(t, err)
72 })
73 t.Run("Valid", func(t *testing.T) {
74 t.Parallel()

Callers

nothing calls this directly

Calls 11

TarFunction · 0.92
UntarFunction · 0.92
MkdirAllMethod · 0.80
RunMethod · 0.65
TempDirMethod · 0.65
CloseMethod · 0.65
WriteMethod · 0.65
NameMethod · 0.65
WriteFileMethod · 0.65
ErrorMethod · 0.45
ContainsMethod · 0.45

Tested by

no test coverage detected