diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-19 09:26:26 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-19 09:26:26 +0200 |
| commit | 15bc73d103259b492f8b77a422f8649bdf3d7c24 (patch) | |
| tree | 58a834d1cab371ce9acc2b25780524223c06980c /cmd/ask/main_test.go | |
| parent | 5642eaf74a4a70e5c82646bef3e0dd42846baea8 (diff) | |
Add ask Taskwarrior wrapper
Diffstat (limited to 'cmd/ask/main_test.go')
| -rw-r--r-- | cmd/ask/main_test.go | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/cmd/ask/main_test.go b/cmd/ask/main_test.go new file mode 100644 index 0000000..65551cb --- /dev/null +++ b/cmd/ask/main_test.go @@ -0,0 +1,52 @@ +package main + +import ( + "bytes" + "context" + "errors" + "io" + "reflect" + "strings" + "testing" +) + +func TestAskRunnerRun_ForwardsArgs(t *testing.T) { + var gotArgs []string + var stdout bytes.Buffer + runner := askRunner{ + runTask: func(_ context.Context, args []string, stdin io.Reader, out, errOut io.Writer) (int, error) { + gotArgs = append([]string(nil), args...) + _, _ = io.WriteString(out, "task output") + return 0, nil + }, + } + + exitCode := runner.run([]string{"list", "limit:1"}, strings.NewReader(""), &stdout, &bytes.Buffer{}) + if exitCode != 0 { + t.Fatalf("exitCode = %d, want 0", exitCode) + } + wantArgs := []string{"list", "limit:1"} + if !reflect.DeepEqual(gotArgs, wantArgs) { + t.Fatalf("args = %v, want %v", gotArgs, wantArgs) + } + if stdout.String() != "task output" { + t.Fatalf("stdout = %q, want %q", stdout.String(), "task output") + } +} + +func TestAskRunnerRun_WritesErrorToStderr(t *testing.T) { + var stderr bytes.Buffer + runner := askRunner{ + runTask: func(context.Context, []string, io.Reader, io.Writer, io.Writer) (int, error) { + return 1, errors.New("ask: must be run inside a git repository") + }, + } + + exitCode := runner.run([]string{"list"}, strings.NewReader(""), &bytes.Buffer{}, &stderr) + if exitCode != 1 { + t.Fatalf("exitCode = %d, want 1", exitCode) + } + if !strings.Contains(stderr.String(), "must be run inside a git repository") { + t.Fatalf("stderr = %q, want actionable repo guidance", stderr.String()) + } +} |
