aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/pkg/pkg_test.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-05-12 19:45:25 +0900
committerOphestra <cat@gensokyo.uk>2026-05-12 19:45:25 +0900
commita167c1aba54a25665654036914be34c33087207c (patch)
treee4e9c0010dcead6f792c356c0c546ffee3e83e3c /internal/pkg/pkg_test.go
parenta6008ef68b38d044e2082f1ad0475849ea098b49 (diff)
internal/pkg: hold artifact in DCE
This is significantly slower but enables much better error reporting. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/pkg/pkg_test.go')
-rw-r--r--internal/pkg/pkg_test.go83
1 files changed, 45 insertions, 38 deletions
diff --git a/internal/pkg/pkg_test.go b/internal/pkg/pkg_test.go
index 3df040d2..c514cbb6 100644
--- a/internal/pkg/pkg_test.go
+++ b/internal/pkg/pkg_test.go
@@ -651,6 +651,15 @@ func TestCache(t *testing.T) {
"identifier",
"cafebabecafebabecafebabecafebabecafebabecafebabecafebabecafebabe",
)
+ failingFile := newStubFile(
+ pkg.KindHTTPGet,
+ pkg.ID{0xff, 3},
+ nil,
+ nil, struct {
+ _ []byte
+ stub.UniqueError
+ }{UniqueError: 0xbad},
+ )
cureMany(t, c, []cureStep{
{"initial file", newStubFile(
@@ -732,22 +741,14 @@ func TestCache(t *testing.T) {
{"noncomparable error", &stubArtifactF{
kind: pkg.KindExec,
params: []byte("artifact with dependency returning noncomparable error"),
- deps: []pkg.Artifact{newStubFile(
- pkg.KindHTTPGet,
- pkg.ID{0xff, 3},
- nil,
- nil, struct {
- _ []byte
- stub.UniqueError
- }{UniqueError: 0xbad},
- )},
+ deps: []pkg.Artifact{failingFile},
cure: func(f *pkg.FContext) error {
panic("attempting to cure impossible artifact")
},
}, nil, nil, &pkg.DependencyCureError{
{
- Ident: unique.Make(pkg.ID{0xff, 3}),
+ A: failingFile,
Err: struct {
_ []byte
stub.UniqueError
@@ -1511,6 +1512,12 @@ errors during scrub:
func TestDependencyCureError(t *testing.T) {
t.Parallel()
+ makeIdent := func(ident ...byte) pkg.Artifact {
+ var a overrideIdent
+ copy(a.id[:], ident)
+ return a
+ }
+
testCases := []struct {
name string
err pkg.DependencyCureError
@@ -1518,51 +1525,51 @@ func TestDependencyCureError(t *testing.T) {
unwrap []error
}{
{"simple", pkg.DependencyCureError{
- {Ident: unique.Make(pkg.ID{0xff, 9}), Err: stub.UniqueError(0xbad09)},
- {Ident: unique.Make(pkg.ID{0xff, 0}), Err: stub.UniqueError(0xbad00)},
- {Ident: unique.Make(pkg.ID{0xff, 0xf}), Err: stub.UniqueError(0xbad0f)},
- {Ident: unique.Make(pkg.ID{0xff, 1}), Err: stub.UniqueError(0xbad01)},
+ {A: makeIdent(0xff, 9), Err: stub.UniqueError(0xbad09)},
+ {A: makeIdent(0xff, 0), Err: stub.UniqueError(0xbad00)},
+ {A: makeIdent(0xff, 0xf), Err: stub.UniqueError(0xbad0f)},
+ {A: makeIdent(0xff, 1), Err: stub.UniqueError(0xbad01)},
}, `errors curing dependencies:
_wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA: unique error 765184 injected by the test suite
_wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA: unique error 765185 injected by the test suite
_wkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA: unique error 765193 injected by the test suite
_w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA: unique error 765199 injected by the test suite`, []error{
- &pkg.CureError{Ident: unique.Make(pkg.ID{0xff, 0}), Err: stub.UniqueError(0xbad00)},
- &pkg.CureError{Ident: unique.Make(pkg.ID{0xff, 1}), Err: stub.UniqueError(0xbad01)},
- &pkg.CureError{Ident: unique.Make(pkg.ID{0xff, 9}), Err: stub.UniqueError(0xbad09)},
- &pkg.CureError{Ident: unique.Make(pkg.ID{0xff, 0xf}), Err: stub.UniqueError(0xbad0f)},
+ &pkg.CureError{A: makeIdent(0xff, 0), Err: stub.UniqueError(0xbad00)},
+ &pkg.CureError{A: makeIdent(0xff, 1), Err: stub.UniqueError(0xbad01)},
+ &pkg.CureError{A: makeIdent(0xff, 9), Err: stub.UniqueError(0xbad09)},
+ &pkg.CureError{A: makeIdent(0xff, 0xf), Err: stub.UniqueError(0xbad0f)},
}},
{"dedup", pkg.DependencyCureError{
- {Ident: unique.Make(pkg.ID{0xff, 9}), Err: stub.UniqueError(0xbad09)},
- {Ident: unique.Make(pkg.ID{0xff, 0}), Err: stub.UniqueError(0xbad00)},
- {Ident: unique.Make(pkg.ID{0xff, 0xfd}), Err: &pkg.DependencyCureError{
- {Ident: unique.Make(pkg.ID{0xff, 9}), Err: stub.UniqueError(0xbad09)},
- {Ident: unique.Make(pkg.ID{0xff, 0xc}), Err: &pkg.DependencyCureError{
- {Ident: unique.Make(pkg.ID{0xff, 0xf}), Err: stub.UniqueError(0xbad0f)},
- {Ident: unique.Make(pkg.ID{0xff, 0}), Err: stub.UniqueError(0xbad00)},
+ {A: makeIdent(0xff, 9), Err: stub.UniqueError(0xbad09)},
+ {A: makeIdent(0xff, 0), Err: stub.UniqueError(0xbad00)},
+ {A: makeIdent(0xff, 0xfd), Err: &pkg.DependencyCureError{
+ {A: makeIdent(0xff, 9), Err: stub.UniqueError(0xbad09)},
+ {A: makeIdent(0xff, 0xc), Err: &pkg.DependencyCureError{
+ {A: makeIdent(0xff, 0xf), Err: stub.UniqueError(0xbad0f)},
+ {A: makeIdent(0xff, 0), Err: stub.UniqueError(0xbad00)},
}},
- {Ident: unique.Make(pkg.ID{0xff, 0}), Err: stub.UniqueError(0xbad00)},
- {Ident: unique.Make(pkg.ID{0xff, 0}), Err: stub.UniqueError(0xbad00)},
+ {A: makeIdent(0xff, 0), Err: stub.UniqueError(0xbad00)},
+ {A: makeIdent(0xff, 0), Err: stub.UniqueError(0xbad00)},
}},
- {Ident: unique.Make(pkg.ID{0xff, 0xff}), Err: &pkg.DependencyCureError{
- {Ident: unique.Make(pkg.ID{0xff, 9}), Err: stub.UniqueError(0xbad09)},
- {Ident: unique.Make(pkg.ID{0xff, 0xc}), Err: &pkg.DependencyCureError{
- {Ident: unique.Make(pkg.ID{0xff, 0}), Err: stub.UniqueError(0xbad00)},
+ {A: makeIdent(0xff, 0xff), Err: &pkg.DependencyCureError{
+ {A: makeIdent(0xff, 9), Err: stub.UniqueError(0xbad09)},
+ {A: makeIdent(0xff, 0xc), Err: &pkg.DependencyCureError{
+ {A: makeIdent(0xff, 0), Err: stub.UniqueError(0xbad00)},
}},
- {Ident: unique.Make(pkg.ID{0xff, 0}), Err: stub.UniqueError(0xbad00)},
+ {A: makeIdent(0xff, 0), Err: stub.UniqueError(0xbad00)},
}},
- {Ident: unique.Make(pkg.ID{0xff, 0xf}), Err: stub.UniqueError(0xbad0f)},
- {Ident: unique.Make(pkg.ID{0xff, 1}), Err: stub.UniqueError(0xbad01)},
+ {A: makeIdent(0xff, 0xf), Err: stub.UniqueError(0xbad0f)},
+ {A: makeIdent(0xff, 1), Err: stub.UniqueError(0xbad01)},
}, `errors curing dependencies:
_wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA: unique error 765184 injected by the test suite
_wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA: unique error 765185 injected by the test suite
_wkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA: unique error 765193 injected by the test suite
_w8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA: unique error 765199 injected by the test suite`, []error{
- &pkg.CureError{Ident: unique.Make(pkg.ID{0xff, 0}), Err: stub.UniqueError(0xbad00)},
- &pkg.CureError{Ident: unique.Make(pkg.ID{0xff, 1}), Err: stub.UniqueError(0xbad01)},
- &pkg.CureError{Ident: unique.Make(pkg.ID{0xff, 9}), Err: stub.UniqueError(0xbad09)},
- &pkg.CureError{Ident: unique.Make(pkg.ID{0xff, 0xf}), Err: stub.UniqueError(0xbad0f)},
+ &pkg.CureError{A: makeIdent(0xff, 0), Err: stub.UniqueError(0xbad00)},
+ &pkg.CureError{A: makeIdent(0xff, 1), Err: stub.UniqueError(0xbad01)},
+ &pkg.CureError{A: makeIdent(0xff, 9), Err: stub.UniqueError(0xbad09)},
+ &pkg.CureError{A: makeIdent(0xff, 0xf), Err: stub.UniqueError(0xbad0f)},
}},
}
for _, tc := range testCases {