From b520ede80d48253e58e725f5a3faa73af81bde8e Mon Sep 17 00:00:00 2001 From: nrslib <38722970+nrslib@users.noreply.github.com> Date: Fri, 30 Jan 2026 21:32:09 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20reportDir=E3=81=AB.takt/reports/?= =?UTF-8?q?=E3=83=97=E3=83=AC=E3=83=95=E3=82=A3=E3=83=83=E3=82=AF=E3=82=B9?= =?UTF-8?q?=E3=82=92=E5=90=AB=E3=82=81=E3=80=81=E3=83=AB=E3=83=BC=E3=83=88?= =?UTF-8?q?=E7=9B=B4=E4=B8=8B=E3=81=B8=E3=81=AE=E3=83=AC=E3=83=9D=E3=83=BC?= =?UTF-8?q?=E3=83=88=E4=BD=9C=E6=88=90=E3=82=92=E4=BF=AE=E6=AD=A3=20(#37)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/__tests__/engine-report.test.ts | 9 ++++++--- src/workflow/engine.ts | 6 +++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/__tests__/engine-report.test.ts b/src/__tests__/engine-report.test.ts index 2bd0a09..d0aaf0e 100644 --- a/src/__tests__/engine-report.test.ts +++ b/src/__tests__/engine-report.test.ts @@ -14,6 +14,8 @@ import type { WorkflowStep, ReportObjectConfig, ReportConfig } from '../models/t /** * Extracted emitStepReports logic for unit testing. * Mirrors engine.ts emitStepReports + emitIfReportExists. + * + * reportDir already includes the `.takt/reports/` prefix (set by engine constructor). */ function emitStepReports( emitter: EventEmitter, @@ -22,7 +24,7 @@ function emitStepReports( projectCwd: string, ): void { if (!step.report || !reportDir) return; - const baseDir = join(projectCwd, '.takt', 'reports', reportDir); + const baseDir = join(projectCwd, reportDir); if (typeof step.report === 'string') { emitIfReportExists(emitter, step, baseDir, step.report); @@ -62,11 +64,12 @@ function createStep(overrides: Partial = {}): WorkflowStep { describe('emitStepReports', () => { let tmpDir: string; let reportBaseDir: string; - const reportDirName = 'test-report-dir'; + // reportDir now includes .takt/reports/ prefix (matches engine constructor behavior) + const reportDirName = '.takt/reports/test-report-dir'; beforeEach(() => { tmpDir = join(tmpdir(), `takt-report-test-${Date.now()}`); - reportBaseDir = join(tmpDir, '.takt', 'reports', reportDirName); + reportBaseDir = join(tmpDir, reportDirName); mkdirSync(reportBaseDir, { recursive: true }); }); diff --git a/src/workflow/engine.ts b/src/workflow/engine.ts index 2595290..59151b8 100644 --- a/src/workflow/engine.ts +++ b/src/workflow/engine.ts @@ -64,7 +64,7 @@ export class WorkflowEngine extends EventEmitter { this.options = options; this.language = options.language; this.loopDetector = new LoopDetector(config.loopDetection); - this.reportDir = generateReportDir(task); + this.reportDir = `.takt/reports/${generateReportDir(task)}`; this.ensureReportDirExists(); this.validateConfig(); this.state = createInitialState(config, options); @@ -78,7 +78,7 @@ export class WorkflowEngine extends EventEmitter { /** Ensure report directory exists (always in project root, not clone) */ private ensureReportDirExists(): void { - const reportDirPath = join(this.projectCwd, '.takt', 'reports', this.reportDir); + const reportDirPath = join(this.projectCwd, this.reportDir); if (!existsSync(reportDirPath)) { mkdirSync(reportDirPath, { recursive: true }); } @@ -176,7 +176,7 @@ export class WorkflowEngine extends EventEmitter { */ private emitStepReports(step: WorkflowStep): void { if (!step.report || !this.reportDir) return; - const baseDir = join(this.projectCwd, '.takt', 'reports', this.reportDir); + const baseDir = join(this.projectCwd, this.reportDir); if (typeof step.report === 'string') { this.emitIfReportExists(step, baseDir, step.report);