From 6b207e0c74c6c72105b87c68f70e8cd518afa532 Mon Sep 17 00:00:00 2001 From: nrs <38722970+nrslib@users.noreply.github.com> Date: Tue, 10 Feb 2026 13:37:33 +0900 Subject: [PATCH] github-issue-201-completetask-completed-tasks-yaml (#202) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: stable release時にnext dist-tagを自動同期 * takt: github-issue-201-completetask-completed-tasks-yaml --- src/__tests__/task.test.ts | 24 ++++++++++++++++++++++-- src/infra/task/runner.ts | 12 ++---------- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/__tests__/task.test.ts b/src/__tests__/task.test.ts index d5dfe14..5068f91 100644 --- a/src/__tests__/task.test.ts +++ b/src/__tests__/task.test.ts @@ -180,7 +180,7 @@ describe('TaskRunner (tasks.yaml)', () => { expect(() => runner.listTasks()).toThrow(/ENOENT|no such file/i); }); - it('should mark claimed task as completed', () => { + it('should remove completed task record from tasks.yaml', () => { runner.addTask('Task A'); const task = runner.claimNextTasks(1)[0]!; @@ -194,7 +194,27 @@ describe('TaskRunner (tasks.yaml)', () => { }); const file = loadTasksFile(testDir); - expect(file.tasks[0]?.status).toBe('completed'); + expect(file.tasks).toHaveLength(0); + }); + + it('should remove only the completed task when multiple tasks exist', () => { + runner.addTask('Task A'); + runner.addTask('Task B'); + const task = runner.claimNextTasks(1)[0]!; + + runner.completeTask({ + task, + success: true, + response: 'Done', + executionLog: [], + startedAt: new Date().toISOString(), + completedAt: new Date().toISOString(), + }); + + const file = loadTasksFile(testDir); + expect(file.tasks).toHaveLength(1); + expect(file.tasks[0]?.name).toContain('task-b'); + expect(file.tasks[0]?.status).toBe('pending'); }); it('should mark claimed task as failed with failure detail', () => { diff --git a/src/infra/task/runner.ts b/src/infra/task/runner.ts index 6c04996..4b10ea4 100644 --- a/src/infra/task/runner.ts +++ b/src/infra/task/runner.ts @@ -119,17 +119,9 @@ export class TaskRunner { throw new Error(`Task not found: ${result.task.name}`); } - const target = current.tasks[index]!; - const updated: TaskRecord = { - ...target, - status: 'completed', - completed_at: result.completedAt, - owner_pid: null, - failure: undefined, + return { + tasks: current.tasks.filter((_, i) => i !== index), }; - const tasks = [...current.tasks]; - tasks[index] = updated; - return { tasks }; }); return this.tasksFile;