aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/pkg/pkg_test.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-07-09 09:30:56 +0900
committerOphestra <cat@gensokyo.uk>2026-07-09 09:34:27 +0900
commit2f1534853a187018b94754e5ae2f009d7c2ae347 (patch)
tree2ef558652e55a7f35eabf38a55140b2be0f8692d /internal/pkg/pkg_test.go
parent3f8e111d1c96da034ea31846d46ae1fe4bf9f93c (diff)
internal/pkg: consolidate cache attributes
This makes the interface stable. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/pkg/pkg_test.go')
-rw-r--r--internal/pkg/pkg_test.go68
1 files changed, 33 insertions, 35 deletions
diff --git a/internal/pkg/pkg_test.go b/internal/pkg/pkg_test.go
index ff51d583..a28578c3 100644
--- a/internal/pkg/pkg_test.go
+++ b/internal/pkg/pkg_test.go
@@ -35,14 +35,14 @@ import (
"hakurei.app/message"
)
-//go:linkname unsafeOpen hakurei.app/internal/pkg.open
-func unsafeOpen(
- ctx context.Context,
- msg message.Msg,
- flags, cures, jobs int,
- base *check.Absolute,
- lock bool,
-) (*pkg.Cache, error)
+var skipLock = func() pkg.CacheAttr {
+ var attr pkg.CacheAttr
+ *(*bool)(unsafe.Pointer(reflect.ValueOf(&attr).
+ Elem().
+ FieldByName("skipLock").
+ UnsafeAddr())) = true
+ return attr
+}()
var (
// extension is a string uniquely identifying a set of custom [Artifact]
@@ -339,7 +339,7 @@ func TestIdent(t *testing.T) {
var cache *pkg.Cache
if a, err := check.NewAbs(t.TempDir()); err != nil {
t.Fatal(err)
- } else if cache, err = pkg.Open(t.Context(), msg, 0, 0, 0, a); err != nil {
+ } else if cache, err = pkg.Open(t.Context(), msg, a, nil); err != nil {
t.Fatal(err)
}
t.Cleanup(cache.Close)
@@ -519,7 +519,10 @@ func checkWithCache(t *testing.T, testCases []cacheTestCase) {
}
var scrubFunc func() error // scrub after hashing
- if c, err := pkg.Open(t.Context(), msg, flags, 1<<4, 0, base); err != nil {
+ if c, err := pkg.Open(t.Context(), msg, base, &pkg.CacheAttr{
+ Cures: 1 << 4,
+ Flags: flags,
+ }); err != nil {
t.Fatalf("Open: error = %v", err)
} else {
t.Cleanup(c.Close)
@@ -867,10 +870,10 @@ func TestCache(t *testing.T) {
}},
})
- if c0, err := unsafeOpen(
+ if c0, err := pkg.Open(
t.Context(),
message.New(nil),
- 0, 0, 0, base, false,
+ base, &skipLock,
); err != nil {
t.Fatalf("open: error = %v", err)
} else {
@@ -1141,10 +1144,10 @@ func TestCache(t *testing.T) {
), want, pkg.WSubstitute, nil},
})
- if c0, err := unsafeOpen(
+ if c0, err := pkg.Open(
t.Context(),
message.New(nil),
- 0, 0, 0, base, false,
+ base, &skipLock,
); err != nil {
t.Fatalf("open: error = %v", err)
} else {
@@ -2050,7 +2053,7 @@ func (a earlyFailureF) Cure(*pkg.FContext) error {
func BenchmarkEarlyDCE(b *testing.B) {
msg := message.New(log.New(os.Stderr, "dce: ", 0))
msg.SwapVerbose(testing.Verbose())
- c, err := pkg.Open(b.Context(), msg, 0, 0, 0, check.MustAbs(b.TempDir()))
+ c, err := pkg.Open(b.Context(), msg, check.MustAbs(b.TempDir()), nil)
if err != nil {
b.Fatal(err)
}
@@ -2099,7 +2102,8 @@ func TestOpen(t *testing.T) {
if _, err := pkg.Open(
t.Context(),
message.New(nil),
- 0, 0, 0, check.MustAbs(container.Nonexistent),
+ check.MustAbs(container.Nonexistent),
+ nil,
); !reflect.DeepEqual(err, wantErr) {
t.Errorf("Open: error = %#v, want %#v", err, wantErr)
}
@@ -2127,7 +2131,8 @@ func TestOpen(t *testing.T) {
if _, err := pkg.Open(
t.Context(),
message.New(nil),
- 0, 0, 0, tempDir.Append("cache"),
+ tempDir.Append("cache"),
+ nil,
); !reflect.DeepEqual(err, wantErr) {
t.Errorf("Open: error = %#v, want %#v", err, wantErr)
}
@@ -2149,7 +2154,8 @@ func TestOpen(t *testing.T) {
if _, err := pkg.Open(
t.Context(),
message.New(nil),
- 0, 0, 0, tempDir.Append("cache"),
+ tempDir.Append("cache"),
+ nil,
); !reflect.DeepEqual(err, wantErr) {
t.Errorf("Open: error = %#v, want %#v", err, wantErr)
}
@@ -2170,7 +2176,7 @@ func TestOpen(t *testing.T) {
if _, err := pkg.Open(
t.Context(),
message.New(nil),
- 0, 0, 0, tempDir.Append("cache"),
+ tempDir.Append("cache"), nil,
); !reflect.DeepEqual(err, wantErr) {
t.Errorf("Open: error = %#v, want %#v", err, wantErr)
}
@@ -2223,8 +2229,8 @@ func TestExtensionRegister(t *testing.T) {
if _, err := pkg.Open(
t.Context(),
message.New(log.Default()),
- 0, 0, 0,
check.MustAbs(container.Nonexistent),
+ nil,
); !errors.Is(err, os.ErrNotExist) {
t.Fatalf("Open: error = %v", err)
}
@@ -2262,7 +2268,7 @@ func TestExtensionRegister(t *testing.T) {
pkg.Register(pkg.KindCustomOffset, nil)
t.Cleanup(func() { opened = false })
- _, _ = pkg.Open(nil, nil, 0, 0, 0, nil)
+ _, _ = pkg.Open(nil, nil, nil, nil)
panic("unreachable")
})
@@ -2273,11 +2279,7 @@ func TestExtensionRegister(t *testing.T) {
base := check.MustAbs(t.TempDir())
t.Cleanup(func() { opened = false })
- if c, err := pkg.Open(
- t.Context(), nil,
- 0, 0, 0,
- base,
- ); err != nil {
+ if c, err := pkg.Open(t.Context(), nil, base, nil); err != nil {
t.Fatal(err)
} else {
c.Close()
@@ -2305,8 +2307,7 @@ func TestExtensionRegister(t *testing.T) {
}
if _, err := pkg.Open(
t.Context(), nil,
- 0, 0, 0,
- base,
+ base, nil,
); !reflect.DeepEqual(err, wantErr) {
t.Fatalf("Open: error = %v, want %v", err, wantErr)
}
@@ -2327,8 +2328,8 @@ func TestExtensionRegister(t *testing.T) {
if _, err := pkg.Open(
t.Context(), nil,
- 0, 0, 0,
base,
+ nil,
); !reflect.DeepEqual(err, pkg.ErrWouldPromote) {
t.Fatalf("Open: error = %v", err)
}
@@ -2341,8 +2342,7 @@ func TestExtensionRegister(t *testing.T) {
if c, err := pkg.Open(
t.Context(), nil,
- pkg.CPromoteVariant, 0, 0,
- base,
+ base, &pkg.CacheAttr{Flags: pkg.CPromoteVariant},
); err != nil {
t.Fatalf("Open: error = %v", err)
} else {
@@ -2367,8 +2367,7 @@ func TestExtensionRegister(t *testing.T) {
if _, err := pkg.Open(
t.Context(), nil,
- 0, 0, 0,
- base,
+ base, nil,
); !reflect.DeepEqual(err, pkg.ErrInvalidExtension) {
t.Fatalf("Open: error = %v", err)
}
@@ -2385,8 +2384,7 @@ func TestExtensionRegister(t *testing.T) {
if _, err := pkg.Open(
t.Context(), nil,
- 0, 0, 0,
- base,
+ base, nil,
); !reflect.DeepEqual(err, pkg.UnsupportedVariantError("rosa")) {
t.Fatalf("Open: error = %v", err)
}