Preserve build errors and available failure evidence
This commit is contained in:
@@ -18,6 +18,29 @@ import (
|
||||
releasekit "gitea.maximumdirect.net/eric/ReleaseKit"
|
||||
)
|
||||
|
||||
func TestBuildPreservesInvalidVersionAndDeclarationFailureEvidence(t *testing.T) {
|
||||
spec := releasekit.BuildSpec{MainPackage: "./cmd/app", BinaryName: "widget", Targets: []releasekit.Target{{OS: "linux", Arch: "amd64"}, {OS: "linux", Arch: "amd64"}}}
|
||||
invalid, err := releasekit.Build(context.Background(), releasekit.BuildRequest{
|
||||
RepositoryDir: filepath.Join(t.TempDir(), "absent"), Version: "bad-version", Spec: spec,
|
||||
})
|
||||
if !errors.Is(err, releasekit.ErrInvalidVersion) || invalid.Version != "bad-version" || invalid.MainPackage != spec.MainPackage || invalid.BinaryName != spec.BinaryName || len(invalid.Targets) != 1 {
|
||||
t.Fatalf("invalid version result = %#v, error = %v", invalid, err)
|
||||
}
|
||||
repo := newPublishFixture(t)
|
||||
writeFile(t, repo.work, "nested/go.mod", "go 1.26.0\n")
|
||||
failed, err := releasekit.Build(context.Background(), releasekit.BuildRequest{
|
||||
RepositoryDir: repo.work, ModuleDir: "nested", Version: "v1.2.3", Spec: spec,
|
||||
})
|
||||
if err == nil || failed.RepositoryDir != repo.work || failed.ModuleDir != filepath.Join(repo.work, "nested") || failed.Version != "v1.2.3" || failed.MainPackage != spec.MainPackage || failed.BinaryName != spec.BinaryName || len(failed.Targets) != 1 || failed.SourceVerified {
|
||||
t.Fatalf("declaration failure = %#v, error = %v", failed, err)
|
||||
}
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
cancel()
|
||||
if _, err := releasekit.Build(ctx, releasekit.BuildRequest{RepositoryDir: repo.work, Version: "v1.2.3", Spec: spec}); !errors.Is(err, context.Canceled) {
|
||||
t.Fatalf("canceled build error = %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBuildCreatesSelectedTargetsAndInjectsVersion(t *testing.T) {
|
||||
repository := newBuildConsumer(t, `package main
|
||||
|
||||
|
||||
Reference in New Issue
Block a user