summaryrefslogtreecommitdiff
path: root/cmd/ask/main_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-19 09:26:26 +0200
committerPaul Buetow <paul@buetow.org>2026-03-19 09:26:26 +0200
commit15bc73d103259b492f8b77a422f8649bdf3d7c24 (patch)
tree58a834d1cab371ce9acc2b25780524223c06980c /cmd/ask/main_test.go
parent5642eaf74a4a70e5c82646bef3e0dd42846baea8 (diff)
Add ask Taskwarrior wrapper
Diffstat (limited to 'cmd/ask/main_test.go')
-rw-r--r--cmd/ask/main_test.go52
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())
+ }
+}