@@ -17,7 +17,7 @@ import (
17
17
. "github.com/onsi/gomega"
18
18
)
19
19
20
- func testVacationArchive (t *testing.T, context spec.G, it spec.S) {
20
+ func testArchive (t *testing.T, context spec.G, it spec.S) {
21
21
var (
22
22
Expect = NewWithT(t).Expect
23
23
)
@@ -322,6 +322,99 @@ func testVacationArchive(t *testing.T, context spec.G, it spec.S) {
322
322
})
323
323
})
324
324
325
+ context("when passed the reader of a text file", func() {
326
+ var (
327
+ archive vacation.Archive
328
+ tempDir string
329
+ )
330
+
331
+ it.Before(func() {
332
+ var err error
333
+ tempDir, err = os.MkdirTemp("", "vacation")
334
+ Expect(err).NotTo(HaveOccurred())
335
+
336
+ buffer := bytes.NewBuffer([]byte(`some contents`))
337
+
338
+ archive = vacation.NewArchive(buffer)
339
+ })
340
+
341
+ it.After(func() {
342
+ Expect(os.RemoveAll(tempDir)).To(Succeed())
343
+ })
344
+
345
+ it("writes a text file onto the path", func() {
346
+ err := archive.Decompress(tempDir)
347
+ Expect(err).NotTo(HaveOccurred())
348
+
349
+ content, err := os.ReadFile(filepath.Join(tempDir, "artifact"))
350
+ Expect(err).NotTo(HaveOccurred())
351
+ Expect(content).To(Equal([]byte(`some contents`)))
352
+ })
353
+
354
+ context("when given a name", func() {
355
+ it.Before(func() {
356
+ archive = archive.WithName("some-text-file")
357
+ })
358
+
359
+ it("writes a text file onto the path with that name", func() {
360
+ err := archive.Decompress(tempDir)
361
+ Expect(err).NotTo(HaveOccurred())
362
+
363
+ content, err := os.ReadFile(filepath.Join(tempDir, "some-text-file"))
364
+ Expect(err).NotTo(HaveOccurred())
365
+ Expect(content).To(Equal([]byte(`some contents`)))
366
+ })
367
+ })
368
+ })
369
+
370
+ context("when passed the reader of a jar file", func() {
371
+ var (
372
+ archive vacation.Archive
373
+ tempDir string
374
+ header []byte
375
+ )
376
+
377
+ it.Before(func() {
378
+ var err error
379
+ tempDir, err = os.MkdirTemp("", "vacation")
380
+ Expect(err).NotTo(HaveOccurred())
381
+
382
+ // JAR header copied from https://github.com/gabriel-vasile/mimetype/blob/c4c6791c993e7f509de8ef38f149a59533e30bbc/testdata/jar.jar
383
+ header = []byte("\x50\x4b\x03\x04\x14\x00\x08\x08\x08\x00\x59\x71\xbf\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x04\x00\x4d\x45\x54\x41\x2d\x49\x4e\x46\x2f\xfe\xca\x00\x00\x03\x00\x50\x4b\x07\x08\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x50\x4b\x03\x04\x14\x00\x08\x08\x08\x00\x59\x71\xbf\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x4d\x45\x54\x41\x2d\x49\x4e\x46\x2f\x4d\x41\x4e\x49\x46\x45\x53\x54\x2e\x4d\x46\xf3\x4d\xcc\xcb\x4c\x4b\x2d\x2e\xd1\x0d\x4b\x2d\x2a\xce\xcc\xcf\xb3\x52\x30\xd4\x33\xe0\xe5\x72\x2e\x4a\x4d\x2c\x49\x4d\xd1\x75\xaa\x04\x09\x58\xe8\x19\xc4\x1b\x9a\x1a\x2a\x68\xf8\x17\x25\x26\xe7\xa4\x2a\x38\xe7\x17\x15\xe4\x17\x25\x96\x00\xd5\x6b\xf2\x72\xf9\x26\x66\xe6\xe9\x3a\xe7\x24\x16\x17\x5b\x29\x78\xa4\xe6\xe4\xe4\x87\xe7\x17\xe5\xa4\xf0\x72\xf1\x72\x01\x00\x50\x4b\x07\x08\x86\x7d\x5d\xeb\x5c\x00\x00\x00\x5d\x00\x00\x00\x50\x4b\x03\x04\x14\x00\x08\x08\x08\x00\x12\x71\xbf\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x48\x65\x6c\x6c\x6f\x57\x6f\x72\x6c\x64\x2e\x63\x6c\x61\x73\x73\x6d\x50\x4d\x4b\xc3\x40\x10\x7d\xdb\xa6\x4d\x13\x53\x53\x5b\x53\x3f\x0b\xf6\x50\x88\x22\xe6\xe2\xad\xe2\x45\x10\x0f\x45\x85\x88\x1e\x3c\x6d\xda\xa5\x6c\xd9\x24\x12\x13\xc1\x9f\xa5\x07\x05\x0f\xfe\x00\x7f\x94\x38\x1b\x85\x20\x74\x0f\xb3\x3b\x6f\xde\x9b\x79\xb3\x5f\xdf\x1f\x9f\x00\x8e\x31\xb0\xd1\x84\x6b\xa1\x83\xb5\x16\xba\x36\x7a\x58\x37\xe1\x99\xe8\x33\x34\x4f\x64\x22\xf3\x53\x86\xba\xbf\x7f\xcb\x60\x9c\xa5\x33\xc1\xe0\x4e\x64\x22\x2e\x8b\x38\x12\xd9\x0d\x8f\x14\x21\x46\xcc\x65\xc2\xd0\xf7\xef\x27\x0b\xfe\xc4\x03\xc5\x93\x79\x10\xe6\x99\x4c\xe6\x63\x2d\xb4\xc3\xb4\xc8\xa6\xe2\x5c\x6a\xb2\x7b\x21\x94\x4a\xef\xd2\x4c\xcd\x8e\x34\xdb\x81\x89\x96\x89\x0d\x07\x9b\xd8\x62\x68\x97\xe5\xc3\xbd\x92\x30\x34\xb1\xed\x60\x07\xbb\xd4\xa3\x92\x31\x74\xaa\x31\x57\xd1\x42\x4c\xf3\x7f\x50\xf8\xfc\x98\x8b\x98\x5c\xa7\x05\x15\xbc\x5f\x4f\x32\x0d\xae\xc9\x50\x4e\xb6\x04\x8f\xc7\x0c\xbd\x25\x30\x83\xf9\xa0\x33\x45\xdb\x78\xfe\xb2\x65\x30\x44\x83\xfe\x4b\x9f\x1a\x98\xb6\x4e\xd1\xa2\x6c\x40\x37\xa3\xbb\x71\xf0\x0e\xf6\x42\x0f\xb2\x4c\xb1\x59\x82\x9a\xb2\x02\xe7\x8f\x3a\x2a\xa5\x80\xf5\x8a\x5a\xb7\xfe\x06\xa3\xa2\xdb\x54\xa2\x1e\xd4\x55\x0b\xdb\xe5\x94\xd5\x1f\x50\x4b\x07\x08\xe5\x38\x99\x3f\x21\x01\x00\x00\xab\x01\x00\x00\x50\x4b\x01\x02\x14\x00\x14\x00\x08\x08\x08\x00\x59\x71\xbf\x4c\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x09\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x45\x54\x41\x2d\x49\x4e\x46\x2f\xfe\xca\x00\x00\x50\x4b\x01\x02\x14\x00\x14\x00\x08\x08\x08\x00\x59\x71\xbf\x4c\x86\x7d\x5d\xeb\x5c\x00\x00\x00\x5d\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x4d\x45\x54\x41\x2d\x49\x4e\x46\x2f\x4d\x41\x4e\x49\x46\x45\x53\x54\x2e\x4d\x46\x50\x4b\x01\x02\x14\x00\x14\x00\x08\x08\x08\x00\x12\x71\xbf\x4c\xe5\x38\x99\x3f\x21\x01\x00\x00\xab\x01\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\x48\x65\x6c\x6c\x6f\x57\x6f\x72\x6c\x64\x2e\x63\x6c\x61\x73\x73\x50\x4b\x05\x06\x00\x00\x00\x00\x03\x00\x03\x00\xbb\x00\x00\x00\x3a\x02\x00\x00\x00\x00")
384
+ buffer := bytes.NewBuffer(header)
385
+
386
+ archive = vacation.NewArchive(buffer)
387
+ })
388
+
389
+ it.After(func() {
390
+ Expect(os.RemoveAll(tempDir)).To(Succeed())
391
+ })
392
+
393
+ it("writes a jar file onto the path", func() {
394
+ err := archive.Decompress(tempDir)
395
+ Expect(err).NotTo(HaveOccurred())
396
+
397
+ content, err := os.ReadFile(filepath.Join(tempDir, "artifact"))
398
+ Expect(err).NotTo(HaveOccurred())
399
+ Expect(content).To(Equal(header))
400
+ })
401
+
402
+ context("when given a name", func() {
403
+ it.Before(func() {
404
+ archive = archive.WithName("some-jar-file")
405
+ })
406
+
407
+ it("writes a jar file onto the path with that name", func() {
408
+ err := archive.Decompress(tempDir)
409
+ Expect(err).NotTo(HaveOccurred())
410
+
411
+ content, err := os.ReadFile(filepath.Join(tempDir, "some-jar-file"))
412
+ Expect(err).NotTo(HaveOccurred())
413
+ Expect(content).To(Equal(header))
414
+ })
415
+ })
416
+ })
417
+
325
418
context("failure cases", func() {
326
419
context("the buffer passed is of are unknown type", func() {
327
420
var (
0 commit comments