diff options
| author | Paul Buetow <paul@buetow.org> | 2026-06-25 12:09:52 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-06-25 12:09:52 +0300 |
| commit | c8c3307e9e636406491572d9b8dda3a84929613d (patch) | |
| tree | c3001666cd1fda8c14ff5f586c1b75cfca2ff261 | |
| parent | 66a6556b567bee551de79de8fcae699ca34aabc7 (diff) | |
task 0r0: wrap task exec errors
| -rw-r--r-- | internal/task/task.go | 4 | ||||
| -rw-r--r-- | 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) } |
