summaryrefslogtreecommitdiff
path: root/internal/askcli/taskexec_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-10 22:47:34 +0300
committerPaul Buetow <paul@buetow.org>2026-04-10 22:47:34 +0300
commitea9e7c0225f6af8179890516b5ce9d511dadb234 (patch)
treee5d64837c8823d315af40162cf5f10491a06b755 /internal/askcli/taskexec_test.go
parentbd749f8e9a0eeaa5578a368996f7b93955580a39 (diff)
task 30: add proj prefix override for do
Diffstat (limited to 'internal/askcli/taskexec_test.go')
-rw-r--r--internal/askcli/taskexec_test.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/internal/askcli/taskexec_test.go b/internal/askcli/taskexec_test.go
index 4db988b..0d744dc 100644
--- a/internal/askcli/taskexec_test.go
+++ b/internal/askcli/taskexec_test.go
@@ -36,6 +36,19 @@ func TestExecutorTaskArgs_NoAgentScope(t *testing.T) {
}
}
+func TestExecutorTaskArgs_ProjectOverride(t *testing.T) {
+ exec_ := NewExecutor("do")
+ ctx := contextWithTaskProject(context.Background(), "alpha")
+ args, err := exec_.taskArgs(ctx, "", []string{"list", "limit:1"})
+ if err != nil {
+ t.Fatalf("taskArgs returned error: %v", err)
+ }
+ want := []string{"rc.verbose=nothing", "rc.confirmation=off", "project:alpha", "+agent", "list", "limit:1"}
+ if !reflect.DeepEqual(args, want) {
+ t.Fatalf("task args = %v, want %v", args, want)
+ }
+}
+
func TestExecutorTaskArgs_AddDefaultScope(t *testing.T) {
exec_ := NewExecutor("do")
args, err := exec_.taskArgs(context.Background(), "/tmp/work/hexai", []string{"add", "rc.verbose=nothing", "rc.verbose=new-uuid", "new task"})
@@ -117,6 +130,35 @@ func TestExecutorRun_InjectsProjectFilterAndNoAgentTag(t *testing.T) {
}
}
+func TestExecutorRun_ProjectOverrideSkipsRepoDetection(t *testing.T) {
+ var gotArgs []string
+ exec_ := Executor{
+ commandName: "do",
+ findBinary: func() (string, error) { return "/usr/bin/task", nil },
+ detectRepoRoot: func(context.Context) (string, error) {
+ t.Fatal("detectRepoRoot should not be called when project override is set")
+ return "", nil
+ },
+ runCommand: func(_ context.Context, name string, args []string, stdin io.Reader, stdout, stderr io.Writer) error {
+ gotArgs = append([]string(nil), args...)
+ return nil
+ },
+ }
+
+ ctx := contextWithTaskProject(context.Background(), "alpha")
+ exitCode, err := exec_.Run(ctx, []string{"list"}, strings.NewReader(""), &bytes.Buffer{}, &bytes.Buffer{})
+ if err != nil {
+ t.Fatalf("Run returned error: %v", err)
+ }
+ if exitCode != 0 {
+ t.Fatalf("exitCode = %d, want 0", exitCode)
+ }
+ wantArgs := []string{"rc.verbose=nothing", "rc.confirmation=off", "project:alpha", "+agent", "list"}
+ if !reflect.DeepEqual(gotArgs, wantArgs) {
+ t.Fatalf("task args = %v, want %v", gotArgs, wantArgs)
+ }
+}
+
func TestExecutorRun_OutsideGitRepo_IsActionable(t *testing.T) {
exec_ := Executor{
commandName: "do",