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

Function TestUntar

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

Source from the content-addressed store, hash-verified

182}
183
184func TestUntar(t *testing.T) {
185 t.Parallel()
186
187 t.Run("Basic", func(t *testing.T) {
188 t.Parallel()
189
190 log := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true})
191
192 dir := t.TempDir()
193 file, err := os.CreateTemp(dir, "*.tf")
194 require.NoError(t, err)
195 _ = file.Close()
196
197 archive := new(bytes.Buffer)
198 err = provisionersdk.Tar(archive, log, dir, 1024)
199 require.NoError(t, err)
200
201 dir = t.TempDir()
202 err = provisionersdk.Untar(dir, archive)
203 require.NoError(t, err)
204
205 _, err = os.Stat(filepath.Join(dir, filepath.Base(file.Name())))
206 require.NoError(t, err)
207 })
208
209 t.Run("Overwrite", func(t *testing.T) {
210 t.Parallel()
211
212 log := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true})
213
214 dir1 := t.TempDir()
215 dir2 := t.TempDir()
216
217 // 1. Create directory with .tf file.
218 file, err := os.CreateTemp(dir1, "*.tf")
219 require.NoError(t, err)
220 _ = file.Close()
221
222 err = os.WriteFile(file.Name(), []byte("# ab"), 0o600)
223 require.NoError(t, err)
224
225 archive := new(bytes.Buffer)
226
227 // 2. Build tar archive.
228 err = provisionersdk.Tar(archive, log, dir1, 4096)
229 require.NoError(t, err)
230
231 // 3. Untar to the second location.
232 err = provisionersdk.Untar(dir2, archive)
233 require.NoError(t, err)
234
235 // 4. Modify the .tf file
236 err = os.WriteFile(file.Name(), []byte("# c"), 0o600)
237 require.NoError(t, err)
238
239 // 5. Build tar archive with modified .tf file
240 err = provisionersdk.Tar(archive, log, dir1, 4096)
241 require.NoError(t, err)

Callers

nothing calls this directly

Calls 9

TarFunction · 0.92
UntarFunction · 0.92
RunMethod · 0.65
TempDirMethod · 0.65
CloseMethod · 0.65
NameMethod · 0.65
WriteFileMethod · 0.65
ReadFileMethod · 0.65
EqualMethod · 0.45

Tested by

no test coverage detected