From c8c3307e9e636406491572d9b8dda3a84929613d Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 25 Jun 2026 12:09:52 +0300 Subject: task 0r0: wrap task exec errors --- internal/task/task.go | 4 ++-- internal/task/task_test.go | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/internal/task/task.go b/internal/task/task.go index 604d4ca..dc02d48 100644 --- a/internal/task/task.go +++ b/internal/task/task.go @@ -240,7 +240,7 @@ func RunArgs(ctx context.Context, args []string) (RunResult, error) { return result, fmt.Errorf("task command: %w", ctxErr) } if strings.TrimSpace(result.Stderr) != "" { - return result, fmt.Errorf("%v: %s", err, strings.TrimSpace(result.Stderr)) + return result, fmt.Errorf("%w: %s", err, strings.TrimSpace(result.Stderr)) } return result, err } @@ -304,7 +304,7 @@ func Export(ctx context.Context, filters ...string) ([]Task, error) { } // Include stderr output in the error message if stderr.Len() > 0 { - return nil, fmt.Errorf("%v: %s", err, strings.TrimSpace(stderr.String())) + return nil, fmt.Errorf("%w: %s", err, strings.TrimSpace(stderr.String())) } return nil, err } diff --git a/internal/task/task_test.go b/internal/task/task_test.go index f4567ba..570cc86 100644 --- a/internal/task/task_test.go +++ b/internal/task/task_test.go @@ -212,6 +212,13 @@ func TestRunLineReturnsCapturedErrorOutput(t *testing.T) { if result.Stderr != "bad-output\n" { t.Fatalf("stderr = %q", result.Stderr) } + var exitErr *exec.ExitError + if !errors.As(err, &exitErr) { + t.Fatalf("error = %v, want wrapped *exec.ExitError", err) + } + if exitErr.ExitCode() != 2 { + t.Fatalf("exit code = %d, want 2", exitErr.ExitCode()) + } if !strings.Contains(err.Error(), "bad-output") { t.Fatalf("error did not include stderr: %v", err) } @@ -259,6 +266,13 @@ func TestExportReturnsCapturedErrorOutput(t *testing.T) { if err == nil { t.Fatal("expected error") } + var exitErr *exec.ExitError + if !errors.As(err, &exitErr) { + t.Fatalf("error = %v, want wrapped *exec.ExitError", err) + } + if exitErr.ExitCode() != 2 { + t.Fatalf("exit code = %d, want 2", exitErr.ExitCode()) + } if !strings.Contains(err.Error(), "export-failed") { t.Fatalf("error did not include stderr: %v", err) } -- cgit v1.2.3