diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-06-04 19:43:50 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-06-04 19:46:36 +0900 |
| commit | 8e8410ce3850a34d8b79431eb89ce4a7b9f89a60 (patch) | |
| tree | 7de96628652c65d149c4e1d09306145a298844ad /internal/pkg/archive_test.go | |
| parent | 8fb6fdaa80e793928f80c45d058aa5aebf79e78b (diff) | |
internal/pkg: archive unpack artifact
This unpacks an internal/pkg archive stream used in the upcoming mirror service.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/pkg/archive_test.go')
| -rw-r--r-- | internal/pkg/archive_test.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/internal/pkg/archive_test.go b/internal/pkg/archive_test.go index e04f3a66..29383eda 100644 --- a/internal/pkg/archive_test.go +++ b/internal/pkg/archive_test.go @@ -4,11 +4,13 @@ import ( "bytes" "io" "io/fs" + "maps" "reflect" "testing" "testing/fstest" "unsafe" + "hakurei.app/check" "hakurei.app/internal/pkg" ) @@ -168,6 +170,46 @@ var archiveTestdata = fstest.MapFS{ "block/uevent": {Mode: 0600}, } +func TestArchiveArtifact(t *testing.T) { + t.Parallel() + + want := maps.Clone(archiveTestdata) + want["."].Mode = fs.ModeDir | 0500 + + 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), nil}, + }) + }, 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")}, + + "identifier": {Mode: fs.ModeDir | 0700}, + "identifier/3oYyAbRJ_we7AgWo1BRcRcnxXFk3mAQ0Qui2nGQMi8GIJNJQtvUC6P2IeoA5mbjD": {Mode: fs.ModeSymlink | 0777, Data: []byte("../checksum/CBPcoVHuVUTVRCMbRl8J30RSSzm_tyfuXaZ-HlZsanY1sY50meOVmgaWDrGKbx9F")}, + + "substitute": {Mode: fs.ModeDir | 0700}, + "work": {Mode: fs.ModeDir | 0700}, + }}, + }) +} + func BenchmarkArchiveRead(b *testing.B) { var buf bytes.Buffer if err := pkg.Write(archiveTestdata, ".", &buf); err != nil { |
