aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/pkg/ir_test.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-08-29 18:58:06 +0900
committerOphestra <cat@gensokyo.uk>2026-08-29 18:58:06 +0900
commitc2d900ec74e03e9c782cfe7b7ce06ff62cda6601 (patch)
treefb13320bfdc62d810aa59769e8809dc2f707919e /internal/pkg/ir_test.go
parentbd4f29909e0750a4660eaf48e3169777a265b0ab (diff)
pkg: move from internalHEADstagingmasterdevelop
Closes #43. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/pkg/ir_test.go')
-rw-r--r--internal/pkg/ir_test.go170
1 files changed, 0 insertions, 170 deletions
diff --git a/internal/pkg/ir_test.go b/internal/pkg/ir_test.go
deleted file mode 100644
index 312474bc..00000000
--- a/internal/pkg/ir_test.go
+++ /dev/null
@@ -1,170 +0,0 @@
-package pkg_test
-
-import (
- "bytes"
- "io"
- "io/fs"
- "reflect"
- "testing"
-
- "hakurei.app/check"
- "hakurei.app/internal/pkg"
-)
-
-func TestIRRoundtrip(t *testing.T) {
- t.Parallel()
-
- testCases := []struct {
- name string
- a pkg.Artifact
- }{
- {"http get aligned", pkg.NewHTTPGet(
- nil, "file:///testdata",
- pkg.Checksum(bytes.Repeat([]byte{0xfd}, len(pkg.Checksum{}))),
- )},
- {"http get unaligned", pkg.NewHTTPGet(
- nil, "https://hakurei.app",
- pkg.Checksum(bytes.Repeat([]byte{0xfc}, len(pkg.Checksum{}))),
- )},
-
- {"http get tar", pkg.NewTar(pkg.NewDecompress(pkg.NewHTTPGet(
- nil, "file:///testdata",
- pkg.Checksum(bytes.Repeat([]byte{0xff}, len(pkg.Checksum{}))),
- ), pkg.Bzip2))},
- {"http get tar unaligned", pkg.NewTar(pkg.NewHTTPGet(
- nil, "https://hakurei.app",
- pkg.Checksum(bytes.Repeat([]byte{0xfe}, len(pkg.Checksum{}))),
- ))},
-
- {"exec offline", pkg.NewExec(
- "exec-offline", "", nil, 0, false, false,
- pkg.AbsWork,
- []string{"HAKUREI_TEST=1"},
- check.MustAbs("/opt/bin/testtool"),
- []string{"testtool"},
-
- pkg.MustPath("/file", false, pkg.NewFile("file", []byte(
- "stub file",
- ))), pkg.MustPath("/.hakurei", false, pkg.NewTar(pkg.NewHTTPGet(
- nil, "file:///hakurei.tar",
- pkg.Checksum(bytes.Repeat([]byte{0xfc}, len(pkg.Checksum{}))),
- ))), pkg.MustPath("/opt", false, pkg.NewTar(pkg.NewDecompress(pkg.NewHTTPGet(
- nil, "file:///testtool.tar.gz",
- pkg.Checksum(bytes.Repeat([]byte{0xfc}, len(pkg.Checksum{}))),
- ), pkg.Gzip))),
- )},
-
- {"exec net", pkg.NewExec(
- "exec-net", "",
- (*pkg.Checksum)(bytes.Repeat([]byte{0xfc}, len(pkg.Checksum{}))),
- 0, false, false,
- pkg.AbsWork,
- []string{"HAKUREI_TEST=1"},
- check.MustAbs("/opt/bin/testtool"),
- []string{"testtool", "net"},
-
- pkg.MustPath("/file", false, pkg.NewFile("file", []byte(
- "stub file",
- ))), pkg.MustPath("/.hakurei", false, pkg.NewTar(pkg.NewHTTPGet(
- nil, "file:///hakurei.tar",
- pkg.Checksum(bytes.Repeat([]byte{0xfc}, len(pkg.Checksum{}))),
- ))), pkg.MustPath("/opt", false, pkg.NewTar(pkg.NewDecompress(pkg.NewHTTPGet(
- nil, "file:///testtool.tar.gz",
- pkg.Checksum(bytes.Repeat([]byte{0xfc}, len(pkg.Checksum{}))),
- ), pkg.Gzip))),
- )},
-
- {"exec measured", pkg.NewExec(
- "exec-measured", "",
- (*pkg.Checksum)(bytes.Repeat([]byte{0xfd}, len(pkg.Checksum{}))),
- 0, false, false,
- pkg.AbsWork,
- []string{"HAKUREI_TEST=1"},
- check.MustAbs("/opt/bin/testtool"),
- []string{"testtool", "measured"},
-
- pkg.MustPath("/file", false, pkg.NewFile("file", []byte(
- "stub file",
- ))), pkg.MustPath("/.hakurei", false, pkg.NewTar(pkg.NewHTTPGet(
- nil, "file:///hakurei.tar",
- pkg.Checksum(bytes.Repeat([]byte{0xfd}, len(pkg.Checksum{}))),
- ))), pkg.MustPath("/opt", false, pkg.NewTar(pkg.NewDecompress(pkg.NewHTTPGet(
- nil, "file:///testtool.tar.gz",
- pkg.Checksum(bytes.Repeat([]byte{0xfd}, len(pkg.Checksum{}))),
- ), pkg.Gzip))),
- )},
-
- {"file anonymous", pkg.NewFile("", []byte{0})},
- {"file", pkg.NewFile("stub", []byte("stub"))},
-
- {"decompress", pkg.NewDecompress(pkg.NewFile("", []byte{0}), pkg.Bzip2)},
-
- {"archive", pkg.NewArchive(pkg.NewFile("", []byte{0}))},
- }
- testCasesCache := make([]cacheTestCase, len(testCases))
- for i, tc := range testCases {
- want := tc.a
- testCasesCache[i] = cacheTestCase{tc.name, 0, nil,
- func(t *testing.T, base *check.Absolute, c *pkg.Cache) {
- r, w := io.Pipe()
-
- done := make(chan error, 1)
- go func() {
- t.Helper()
- done <- c.EncodeAll(w, want)
- _ = w.Close()
- }()
-
- if got, err := c.NewDecoder(r).Decode(); err != nil {
- t.Fatalf("Decode: error = %v", err)
- } else if !reflect.DeepEqual(got, want) {
- t.Fatalf("Decode: %#v, want %#v", got, want)
- }
-
- if err := <-done; err != nil {
- t.Fatalf("EncodeAll: error = %v", err)
- }
- }, expectsFS{
- ".": {Mode: fs.ModeDir | 0700},
- "checksum": {Mode: fs.ModeDir | 0700},
- "identifier": {Mode: fs.ModeDir | 0700},
- "substitute": {Mode: fs.ModeDir | 0700},
- "work": {Mode: fs.ModeDir | 0700},
- },
- }
- }
- checkWithCache(t, testCasesCache)
-}
-
-func TestRevision(t *testing.T) {
- checkWithCache(t, []cacheTestCase{{"revision", 0, nil,
- func(t *testing.T, base *check.Absolute, c *pkg.Cache) {
- a := pkg.NewFile("", nil)
- var buf bytes.Buffer
- if err := c.EncodeAll(&buf, a); err != nil {
- t.Fatal(err)
- }
-
- if _, err := c.NewDecoder(
- bytes.NewReader(buf.Bytes()),
- ).Decode(); err != nil {
- t.Fatalf("Decode: error = %v", err)
- }
-
- p := buf.Bytes()
- p[8] = 0xfd
- wantErr := pkg.RevisionError{0xfd, 0}
- if _, err := c.NewDecoder(
- bytes.NewReader(p),
- ).Decode(); !reflect.DeepEqual(err, wantErr) {
- t.Fatalf("Decode: error = %v, want %v", err, wantErr)
- }
- }, expectsFS{
- ".": {Mode: fs.ModeDir | 0700},
- "checksum": {Mode: fs.ModeDir | 0700},
- "identifier": {Mode: fs.ModeDir | 0700},
- "substitute": {Mode: fs.ModeDir | 0700},
- "work": {Mode: fs.ModeDir | 0700},
- },
- }})
-}