aboutsummaryrefslogtreecommitdiffhomepage
path: root/pkg/archive_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/archive_test.go')
-rw-r--r--pkg/archive_test.go53
1 files changed, 38 insertions, 15 deletions
diff --git a/pkg/archive_test.go b/pkg/archive_test.go
index 1ca631ee..0171d914 100644
--- a/pkg/archive_test.go
+++ b/pkg/archive_test.go
@@ -2,9 +2,12 @@ package pkg_test
import (
"bytes"
+ "crypto/sha512"
+ "errors"
"io"
"io/fs"
"maps"
+ "net/http"
"reflect"
"testing"
"testing/fstest"
@@ -176,33 +179,53 @@ func TestArchiveArtifact(t *testing.T) {
want := maps.Clone(archiveTestdata)
want["."].Mode = fs.ModeDir | 0500
+ var buf bytes.Buffer
+ if err := pkg.Write(archiveTestdata, ".", &buf); err != nil {
+ t.Fatal(err)
+ }
+ wantChecksum := sha512.Sum384(buf.Bytes())
+ wantChecksumEncode := pkg.Encode(wantChecksum)
+
+ var transport http.Transport
+ client := http.Client{Transport: &transport}
+ transport.RegisterProtocol("file", http.NewFileTransportFS(fstest.MapFS{
+ "testdata": {Data: buf.Bytes(), Mode: 0400},
+ }))
+
checkWithCache(t, []cacheTestCase{
{"unpack", 0, nil, func(t *testing.T, base *check.Absolute, c *pkg.Cache) {
- var buf bytes.Buffer
- if err := pkg.Write(archiveTestdata, ".", &buf); err != nil {
- t.Fatal(err)
- }
-
cureMany(t, c, []cureStep{
{"sample", pkg.NewArchive(
pkg.NewFile("", buf.Bytes()),
), ignorePathname, expectsFS(want), pkg.WNew, nil},
+
+ {"close error passthrough", pkg.NewArchive(
+ pkg.NewHTTPGet(
+ &client,
+ "file:///testdata",
+ pkg.Checksum{},
+ ),
+ ), nil, nil, pkg.WNew, errors.Join(&pkg.ChecksumMismatchError{
+ Got: wantChecksum,
+ })},
})
+
+ dropFaults(t, base)
}, expectsFS{
".": {Mode: fs.ModeDir | 0700},
- "checksum": {Mode: fs.ModeDir | 0700},
- "checksum/CBPcoVHuVUTVRCMbRl8J30RSSzm_tyfuXaZ-HlZsanY1sY50meOVmgaWDrGKbx9F": {Mode: fs.ModeDir | 0500},
- "checksum/CBPcoVHuVUTVRCMbRl8J30RSSzm_tyfuXaZ-HlZsanY1sY50meOVmgaWDrGKbx9F/block": {Mode: fs.ModeDir | 0700},
- "checksum/CBPcoVHuVUTVRCMbRl8J30RSSzm_tyfuXaZ-HlZsanY1sY50meOVmgaWDrGKbx9F/block/uevent": {Mode: 0600},
- "checksum/CBPcoVHuVUTVRCMbRl8J30RSSzm_tyfuXaZ-HlZsanY1sY50meOVmgaWDrGKbx9F/devices": {Mode: fs.ModeDir | 0700},
- "checksum/CBPcoVHuVUTVRCMbRl8J30RSSzm_tyfuXaZ-HlZsanY1sY50meOVmgaWDrGKbx9F/devices/empty": {Mode: fs.ModeDir | 0700},
- "checksum/CBPcoVHuVUTVRCMbRl8J30RSSzm_tyfuXaZ-HlZsanY1sY50meOVmgaWDrGKbx9F/devices/sub": {Mode: fs.ModeDir | 0700},
- "checksum/CBPcoVHuVUTVRCMbRl8J30RSSzm_tyfuXaZ-HlZsanY1sY50meOVmgaWDrGKbx9F/devices/sub/uevent": {Mode: 0600, Data: []byte("add")},
- "checksum/CBPcoVHuVUTVRCMbRl8J30RSSzm_tyfuXaZ-HlZsanY1sY50meOVmgaWDrGKbx9F/devices/uevent": {Mode: 0600, Data: []byte("add")},
+ "checksum": {Mode: fs.ModeDir | 0700},
+ "checksum/" + wantChecksumEncode: {Mode: fs.ModeDir | 0500},
+ "checksum/" + wantChecksumEncode + "/block": {Mode: fs.ModeDir | 0700},
+ "checksum/" + wantChecksumEncode + "/block/uevent": {Mode: 0600},
+ "checksum/" + wantChecksumEncode + "/devices": {Mode: fs.ModeDir | 0700},
+ "checksum/" + wantChecksumEncode + "/devices/empty": {Mode: fs.ModeDir | 0700},
+ "checksum/" + wantChecksumEncode + "/devices/sub": {Mode: fs.ModeDir | 0700},
+ "checksum/" + wantChecksumEncode + "/devices/sub/uevent": {Mode: 0600, Data: []byte("add")},
+ "checksum/" + wantChecksumEncode + "/devices/uevent": {Mode: 0600, Data: []byte("add")},
"identifier": {Mode: fs.ModeDir | 0700},
- "identifier/iyvWY0irMoW4AVRnG_du07d_nAEUtbHdeiaAYRdp-vf3wstM9u67IokOsPfU9eyM": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/CBPcoVHuVUTVRCMbRl8J30RSSzm_tyfuXaZ-HlZsanY1sY50meOVmgaWDrGKbx9F")},
+ "identifier/iyvWY0irMoW4AVRnG_du07d_nAEUtbHdeiaAYRdp-vf3wstM9u67IokOsPfU9eyM": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/" + wantChecksumEncode)},
"status": {Mode: fs.ModeDir | 0711},
"status/iyvWY0irMoW4AVRnG_du07d_nAEUtbHdeiaAYRdp-vf3wstM9u67IokOsPfU9eyM": {Mode: 0444, Data: []byte(statusHeader + `drwx------ block