Preserve delivery outcomes when cleanup fails
This commit is contained in:
@@ -56,9 +56,13 @@ type Result struct {
|
||||
}
|
||||
|
||||
func BuildResolved(ctx context.Context, request Request) (Result, error) {
|
||||
return buildResolved(ctx, request, os.RemoveAll)
|
||||
}
|
||||
|
||||
func buildResolved(ctx context.Context, request Request, remove func(string) error) (result Result, resultErr error) {
|
||||
identity := request.Identity
|
||||
settings := artifact.NormalizeSettings(request.Spec.MainPackage, request.Spec.BinaryName, request.Spec.Targets)
|
||||
result := Result{
|
||||
result = Result{
|
||||
RepositoryDir: identity.RepositoryDir,
|
||||
ModuleDir: identity.ModuleDir,
|
||||
ModulePath: identity.ModulePath,
|
||||
@@ -170,7 +174,11 @@ func BuildResolved(ctx context.Context, request Request) (Result, error) {
|
||||
if err != nil {
|
||||
return result, fmt.Errorf("create native smoke directory: %w", err)
|
||||
}
|
||||
defer os.RemoveAll(temporaryDir)
|
||||
defer func() {
|
||||
if err := remove(temporaryDir); err != nil {
|
||||
resultErr = errors.Join(resultErr, fmt.Errorf("remove native smoke directory %q: %w", temporaryDir, err))
|
||||
}
|
||||
}()
|
||||
smokePath = filepath.Join(temporaryDir, settings.BinaryName)
|
||||
if host.OS == "windows" {
|
||||
smokePath += ".exe"
|
||||
|
||||
Reference in New Issue
Block a user