@einja/dev-cli 0.1.9 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -2
- package/dist/cli.js +3 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +11 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.js +1 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +69 -7
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/sync.test.js +11 -25
- package/dist/commands/sync.test.js.map +1 -1
- package/dist/commands/task-loop/index.d.ts.map +1 -1
- package/dist/commands/task-loop/index.js +5 -2
- package/dist/commands/task-loop/index.js.map +1 -1
- package/dist/commands/task-loop/lib/__mocks__/child-process.mock.d.ts +227 -0
- package/dist/commands/task-loop/lib/__mocks__/child-process.mock.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/__mocks__/child-process.mock.js +351 -0
- package/dist/commands/task-loop/lib/__mocks__/child-process.mock.js.map +1 -0
- package/dist/commands/task-loop/lib/__mocks__/sample-issues.d.ts +46 -0
- package/dist/commands/task-loop/lib/__mocks__/sample-issues.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/__mocks__/sample-issues.js +224 -0
- package/dist/commands/task-loop/lib/__mocks__/sample-issues.js.map +1 -0
- package/dist/commands/task-loop/lib/branch-manager.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/branch-manager.js +14 -8
- package/dist/commands/task-loop/lib/branch-manager.js.map +1 -1
- package/dist/commands/task-loop/lib/branch-manager.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/branch-manager.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/branch-manager.test.js +539 -0
- package/dist/commands/task-loop/lib/branch-manager.test.js.map +1 -0
- package/dist/commands/task-loop/lib/conflict-handler.js +1 -1
- package/dist/commands/task-loop/lib/conflict-handler.js.map +1 -1
- package/dist/commands/task-loop/lib/dependency-resolver.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/dependency-resolver.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/dependency-resolver.test.js +1129 -0
- package/dist/commands/task-loop/lib/dependency-resolver.test.js.map +1 -0
- package/dist/commands/task-loop/lib/gh-setup.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/gh-setup.js.map +1 -1
- package/dist/commands/task-loop/lib/github-client.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/github-client.js +3 -3
- package/dist/commands/task-loop/lib/github-client.js.map +1 -1
- package/dist/commands/task-loop/lib/github-client.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/github-client.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/github-client.test.js +377 -0
- package/dist/commands/task-loop/lib/github-client.test.js.map +1 -0
- package/dist/commands/task-loop/lib/issue-parser.js +4 -4
- package/dist/commands/task-loop/lib/issue-parser.js.map +1 -1
- package/dist/commands/task-loop/lib/issue-parser.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/issue-parser.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/issue-parser.test.js +854 -0
- package/dist/commands/task-loop/lib/issue-parser.test.js.map +1 -0
- package/dist/commands/task-loop/lib/pull-request-manager.d.ts +35 -0
- package/dist/commands/task-loop/lib/pull-request-manager.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/pull-request-manager.js +150 -0
- package/dist/commands/task-loop/lib/pull-request-manager.js.map +1 -0
- package/dist/commands/task-loop/lib/task-number-utils.d.ts +10 -4
- package/dist/commands/task-loop/lib/task-number-utils.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/task-number-utils.js +19 -10
- package/dist/commands/task-loop/lib/task-number-utils.js.map +1 -1
- package/dist/commands/task-loop/lib/task-number-utils.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/task-number-utils.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/task-number-utils.test.js +379 -0
- package/dist/commands/task-loop/lib/task-number-utils.test.js.map +1 -0
- package/dist/commands/task-loop/lib/task-state-manager.d.ts.map +1 -1
- package/dist/commands/task-loop/lib/task-state-manager.js +1 -1
- package/dist/commands/task-loop/lib/task-state-manager.js.map +1 -1
- package/dist/commands/task-loop/lib/task-state-manager.test.d.ts +2 -0
- package/dist/commands/task-loop/lib/task-state-manager.test.d.ts.map +1 -0
- package/dist/commands/task-loop/lib/task-state-manager.test.js +541 -0
- package/dist/commands/task-loop/lib/task-state-manager.test.js.map +1 -0
- package/dist/lib/mcp-config.d.ts.map +1 -1
- package/dist/lib/mcp-config.js +8 -4
- package/dist/lib/mcp-config.js.map +1 -1
- package/dist/lib/mcp-config.test.js +2 -2
- package/dist/lib/mcp-config.test.js.map +1 -1
- package/dist/lib/merger.d.ts.map +1 -1
- package/dist/lib/merger.js.map +1 -1
- package/dist/lib/preset-update/cli-repo-detector.test.js.map +1 -1
- package/dist/lib/preset-update/file-copier.d.ts +2 -0
- package/dist/lib/preset-update/file-copier.d.ts.map +1 -1
- package/dist/lib/preset-update/file-copier.js +12 -8
- package/dist/lib/preset-update/file-copier.js.map +1 -1
- package/dist/lib/preset-update/file-copier.test.js +36 -5
- package/dist/lib/preset-update/file-copier.test.js.map +1 -1
- package/dist/lib/preset-update/preset-finder.d.ts +1 -1
- package/dist/lib/preset-update/preset-finder.d.ts.map +1 -1
- package/dist/lib/preset-update/preset-finder.js +1 -1
- package/dist/lib/preset-update/preset-finder.js.map +1 -1
- package/dist/lib/preset-update/preset-finder.test.js +11 -11
- package/dist/lib/preset-update/preset-finder.test.js.map +1 -1
- package/dist/lib/preset.js +3 -3
- package/dist/lib/preset.js.map +1 -1
- package/dist/lib/sync/backup-manager.d.ts.map +1 -1
- package/dist/lib/sync/backup-manager.js +1 -1
- package/dist/lib/sync/backup-manager.js.map +1 -1
- package/dist/lib/sync/backup-manager.test.js +2 -2
- package/dist/lib/sync/backup-manager.test.js.map +1 -1
- package/dist/lib/sync/batch-processor.d.ts.map +1 -1
- package/dist/lib/sync/batch-processor.js.map +1 -1
- package/dist/lib/sync/batch-processor.test.js.map +1 -1
- package/dist/lib/sync/category-validator.d.ts.map +1 -1
- package/dist/lib/sync/category-validator.js.map +1 -1
- package/dist/lib/sync/category-validator.test.js +2 -11
- package/dist/lib/sync/category-validator.test.js.map +1 -1
- package/dist/lib/sync/conflict-reporter.d.ts.map +1 -1
- package/dist/lib/sync/conflict-reporter.js +1 -2
- package/dist/lib/sync/conflict-reporter.js.map +1 -1
- package/dist/lib/sync/conflict-reporter.test.js +2 -7
- package/dist/lib/sync/conflict-reporter.test.js.map +1 -1
- package/dist/lib/sync/diff-engine.d.ts.map +1 -1
- package/dist/lib/sync/diff-engine.js +2 -4
- package/dist/lib/sync/diff-engine.js.map +1 -1
- package/dist/lib/sync/diff-engine.test.js.map +1 -1
- package/dist/lib/sync/file-filter.d.ts.map +1 -1
- package/dist/lib/sync/file-filter.js +26 -3
- package/dist/lib/sync/file-filter.js.map +1 -1
- package/dist/lib/sync/file-filter.test.js +26 -2
- package/dist/lib/sync/file-filter.test.js.map +1 -1
- package/dist/lib/sync/hash-cache.d.ts.map +1 -1
- package/dist/lib/sync/hash-cache.js.map +1 -1
- package/dist/lib/sync/hash-cache.test.js +2 -2
- package/dist/lib/sync/hash-cache.test.js.map +1 -1
- package/dist/lib/sync/integration.test.js +289 -2
- package/dist/lib/sync/integration.test.js.map +1 -1
- package/dist/lib/sync/marker-processor.d.ts +34 -10
- package/dist/lib/sync/marker-processor.d.ts.map +1 -1
- package/dist/lib/sync/marker-processor.js +142 -41
- package/dist/lib/sync/marker-processor.js.map +1 -1
- package/dist/lib/sync/marker-processor.test.js +134 -1
- package/dist/lib/sync/marker-processor.test.js.map +1 -1
- package/dist/lib/sync/metadata-manager.d.ts.map +1 -1
- package/dist/lib/sync/metadata-manager.js.map +1 -1
- package/dist/lib/sync/metadata-manager.test.js +4 -6
- package/dist/lib/sync/metadata-manager.test.js.map +1 -1
- package/dist/lib/sync/performance.test.js +2 -2
- package/dist/lib/sync/performance.test.js.map +1 -1
- package/dist/lib/sync/seed-synchronizer.d.ts +27 -0
- package/dist/lib/sync/seed-synchronizer.d.ts.map +1 -0
- package/dist/lib/sync/seed-synchronizer.js +72 -0
- package/dist/lib/sync/seed-synchronizer.js.map +1 -0
- package/dist/lib/sync/seed-synchronizer.test.d.ts +2 -0
- package/dist/lib/sync/seed-synchronizer.test.d.ts.map +1 -0
- package/dist/lib/sync/seed-synchronizer.test.js +147 -0
- package/dist/lib/sync/seed-synchronizer.test.js.map +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/preset-update.d.ts +1 -1
- package/dist/types/sync.d.ts +4 -2
- package/dist/types/sync.d.ts.map +1 -1
- package/dist/types/sync.js.map +1 -1
- package/package.json +1 -1
- package/presets/default/.claude/agents/einja/backend-architect.md +1131 -0
- package/presets/{minimal/.claude/agents/einja/frontend → default/.claude/agents/einja}/design-engineer.md +1 -1
- package/presets/{minimal/.claude/agents/einja/frontend → default/.claude/agents/einja}/frontend-architect.md +1 -1
- package/presets/{minimal/.claude/agents/einja/frontend → default/.claude/agents/einja}/frontend-coder.md +1 -37
- package/presets/{minimal → default}/.claude/agents/einja/task/task-committer.md +12 -6
- package/presets/{minimal → default}/.claude/agents/einja/task/task-executer.md +9 -9
- package/presets/{minimal → default}/.claude/commands/einja/frontend-implement.md +1 -1
- package/presets/{minimal → default}/.claude/commands/einja/update-docs-by-task-specs.md +6 -6
- package/presets/{minimal/.claude/skills/einja/api-development → default/.claude/skills/einja-api-development}/SKILL.md +5 -5
- package/presets/{minimal/.claude/skills/einja/backend-architecture → default/.claude/skills/einja-backend-architecture}/SKILL.md +5 -5
- package/presets/{minimal/.claude/skills/einja/coding-standards → default/.claude/skills/einja-coding-standards}/SKILL.md +6 -6
- package/presets/{minimal/.claude/skills/einja/component-design → default/.claude/skills/einja-component-design}/SKILL.md +6 -6
- package/presets/{minimal/.claude/skills/einja/frontend-development → default/.claude/skills/einja-frontend-development}/SKILL.md +5 -5
- package/presets/{minimal/.claude/skills/einja/output-format → default/.claude/skills/einja-output-format}/SKILL.md +54 -5
- package/presets/{minimal → default}/preset.yaml +1 -1
- package/presets/{minimal → default}/symlinks.json +10 -10
- package/scaffolds/CLAUDE.md.template +4 -4
- package/scaffolds/steering/README.md +42 -0
- package/scaffolds/steering/acceptance-criteria-and-qa-guide.md +11 -0
- package/scaffolds/steering/architecture.md +11 -0
- package/scaffolds/steering/branch-strategy.md +11 -0
- package/scaffolds/steering/commit-rules.md +12 -1
- package/scaffolds/steering/db-schema-design.md +11 -0
- package/scaffolds/steering/development/api-development.md +15 -4
- package/scaffolds/steering/development/backend-architecture.md +11 -0
- package/scaffolds/steering/development/frontend-development.md +11 -0
- package/scaffolds/steering/development/review-guidelines.md +11 -0
- package/scaffolds/steering/development/testing-strategy.md +85 -0
- package/scaffolds/steering/development-workflow.md +11 -0
- package/scaffolds/steering/infrastructure/deployment.md +11 -0
- package/scaffolds/steering/infrastructure/environment-variables.md +11 -0
- package/scaffolds/steering/product.md +11 -0
- package/scaffolds/steering/task-management.md +11 -0
- /package/presets/{minimal → default}/.claude/agents/einja/docs/docs-updater.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/git/conflict-resolver.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/specs/spec-design-generator.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/specs/spec-qa-generator.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/specs/spec-requirements-generator.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/specs/spec-tasks-generator.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/task/task-modification-analyzer.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/task/task-qa.md +0 -0
- /package/presets/{minimal → default}/.claude/agents/einja/task/task-reviewer.md +0 -0
- /package/presets/{minimal → default}/.claude/commands/einja/spec-create.md +0 -0
- /package/presets/{minimal → default}/.claude/commands/einja/start-dev.md +0 -0
- /package/presets/{minimal → default}/.claude/commands/einja/sync-cursor-commands.md +0 -0
- /package/presets/{minimal → default}/.claude/commands/einja/task-exec.md +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/biome-format.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/design-doc-check.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/detect-secrets.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/large-file-warning.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/playwright-resize.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/typecheck.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/unset-volta-recursion.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/validate-git-commit.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/warn-index-ts.sh +0 -0
- /package/presets/{minimal → default}/.claude/hooks/einja/warn-relative-import.sh +0 -0
- /package/presets/{minimal → default}/.claude/settings.json +0 -0
- /package/presets/{minimal/.claude/skills/einja/coding-standards → default/.claude/skills/einja-coding-standards}/reference/naming-conventions.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/coding-standards → default/.claude/skills/einja-coding-standards}/reference/prohibited-patterns.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/coding-standards → default/.claude/skills/einja-coding-standards}/reference/typescript-rules.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/component-design → default/.claude/skills/einja-component-design}/reference/directory-structure.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/component-design → default/.claude/skills/einja-component-design}/reference/props-patterns.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/component-design → default/.claude/skills/einja-component-design}/reference/styling-guide.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/conflict-resolver → default/.claude/skills/einja-conflict-resolver}/SKILL.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/general-context-loader → default/.claude/skills/einja-general-context-loader}/SKILL.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/spec-context-loader → default/.claude/skills/einja-spec-context-loader}/SKILL.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-commit → default/.claude/skills/einja-task-commit}/SKILL.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/SKILL.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/reference/failure-patterns.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/reference/troubleshooting.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/reference/usage-patterns.md +0 -0
- /package/presets/{minimal/.claude/skills/einja/task-qa → default/.claude/skills/einja-task-qa}/templates/qa-test-template.md +0 -0
|
@@ -7,11 +7,12 @@
|
|
|
7
7
|
* einja task:loop <issue-number> [--max <number>] [--base <branch>]
|
|
8
8
|
*/
|
|
9
9
|
import { ensureIssueBranchWithoutCheckout, getPhaseBranchNameNew, mergePhaseBranchIntoIssue, syncPhaseBranch, } from "./lib/branch-manager.js";
|
|
10
|
-
import { ensureGhSetup } from "./lib/gh-setup.js";
|
|
11
10
|
import { detectCircularDependencies, getCompletedPhaseNumbers, isAllTasksCompleted, selectExecutableTaskGroups, } from "./lib/dependency-resolver.js";
|
|
11
|
+
import { ensureGhSetup } from "./lib/gh-setup.js";
|
|
12
12
|
import { getIssue, getRepoInfo } from "./lib/github-client.js";
|
|
13
13
|
import { parseIssueBody } from "./lib/issue-parser.js";
|
|
14
14
|
import { selectProject } from "./lib/project-selector.js";
|
|
15
|
+
import { ensurePullRequestCreated } from "./lib/pull-request-manager.js";
|
|
15
16
|
import { TaskStateManager, extractIssueNumberFromTitle, extractTaskGroupIdFromTitle, generateVibeKanbanDescription, generateVibeKanbanTitle, } from "./lib/task-state-manager.js";
|
|
16
17
|
import { VibeKanbanClient } from "./lib/vibe-kanban-client.js";
|
|
17
18
|
/** ポーリング間隔(ミリ秒) */
|
|
@@ -124,7 +125,7 @@ export async function taskLoopCommand(issue, options) {
|
|
|
124
125
|
return (_a = desc === null || desc === void 0 ? void 0 : desc.includes(issuePatternInDesc)) !== null && _a !== void 0 ? _a : false;
|
|
125
126
|
};
|
|
126
127
|
const initialDoneTasks = existingTasks.filter((t) => t.status === "done" && isTaskForThisIssue(t));
|
|
127
|
-
const initialInProgressTasks = existingTasks.filter((t) => t.status === "inprogress" && isTaskForThisIssue(t));
|
|
128
|
+
const initialInProgressTasks = existingTasks.filter((t) => (t.status === "inprogress" || t.status === "in-progress") && isTaskForThisIssue(t));
|
|
128
129
|
console.log(`📊 起動時のタスク状態 (Issue #${issueNumber} 関連):`);
|
|
129
130
|
console.log(` - Done: ${initialDoneTasks.length > 0 ? initialDoneTasks.map((t) => extractTaskGroupIdFromTitle(t.title) || t.title).join(", ") : "なし"}`);
|
|
130
131
|
console.log(` - InProgress: ${initialInProgressTasks.length > 0 ? initialInProgressTasks.map((t) => extractTaskGroupIdFromTitle(t.title) || t.title).join(", ") : "なし"}`);
|
|
@@ -173,6 +174,8 @@ export async function taskLoopCommand(issue, options) {
|
|
|
173
174
|
// 全タスク完了チェック
|
|
174
175
|
if (isAllTasksCompleted(parsedIssue, maxTaskNumber)) {
|
|
175
176
|
console.log("\n🎉 すべてのタスクが完了しました!");
|
|
177
|
+
// PR自動作成
|
|
178
|
+
ensurePullRequestCreated(issueNumber, issueBranch, baseBranch, parsedIssue);
|
|
176
179
|
break;
|
|
177
180
|
}
|
|
178
181
|
// 待機
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/task-loop/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/task-loop/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { type Mock } from "vitest";
|
|
2
|
+
/**
|
|
3
|
+
* child_processモジュールのモック基盤クラス
|
|
4
|
+
*
|
|
5
|
+
* gh コマンドや git コマンドなどの外部コマンド実行をモックする際に使用します。
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const mock = new ChildProcessMock();
|
|
10
|
+
* mock.setup();
|
|
11
|
+
*
|
|
12
|
+
* // gh コマンドのレスポンスをモック
|
|
13
|
+
* mock.mockGhCommand("issue view 123", { number: 123, title: "Test Issue" });
|
|
14
|
+
*
|
|
15
|
+
* // テスト実行
|
|
16
|
+
* const result = execSync("gh issue view 123");
|
|
17
|
+
*
|
|
18
|
+
* mock.reset();
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare class ChildProcessMock {
|
|
22
|
+
private execSyncMock;
|
|
23
|
+
private commandResponses;
|
|
24
|
+
private commandErrors;
|
|
25
|
+
constructor();
|
|
26
|
+
/**
|
|
27
|
+
* モックをセットアップします
|
|
28
|
+
*/
|
|
29
|
+
setup(): void;
|
|
30
|
+
/**
|
|
31
|
+
* モックをリセットします
|
|
32
|
+
*/
|
|
33
|
+
reset(): void;
|
|
34
|
+
/**
|
|
35
|
+
* gh コマンドのレスポンスをモックします
|
|
36
|
+
*
|
|
37
|
+
* @param subCommand - gh のサブコマンド(例: "issue view 123")
|
|
38
|
+
* @param response - モックするレスポンス(文字列またはオブジェクト)
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* mock.mockGhCommand("issue view 123", {
|
|
43
|
+
* number: 123,
|
|
44
|
+
* title: "Test Issue",
|
|
45
|
+
* state: "open"
|
|
46
|
+
* });
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
mockGhCommand(subCommand: string, response: unknown): void;
|
|
50
|
+
/**
|
|
51
|
+
* gh コマンドのエラーをモックします
|
|
52
|
+
*
|
|
53
|
+
* @param subCommand - gh のサブコマンド
|
|
54
|
+
* @param error - スローするエラー
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* mock.mockGhCommandError("issue view 999", new Error("issue not found"));
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
mockGhCommandError(subCommand: string, error: Error): void;
|
|
62
|
+
/**
|
|
63
|
+
* git コマンドのレスポンスをモックします
|
|
64
|
+
*
|
|
65
|
+
* @param subCommand - git のサブコマンド(例: "branch --list")
|
|
66
|
+
* @param response - モックするレスポンス
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* mock.mockGitCommand("branch --list", "* main\n develop\n feature/test");
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
mockGitCommand(subCommand: string, response: unknown): void;
|
|
74
|
+
/**
|
|
75
|
+
* git コマンドのエラーをモックします
|
|
76
|
+
*
|
|
77
|
+
* @param subCommand - git のサブコマンド
|
|
78
|
+
* @param error - スローするエラー
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* mock.mockGitCommandError("checkout unknown-branch", new Error("branch not found"));
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
mockGitCommandError(subCommand: string, error: Error): void;
|
|
86
|
+
/**
|
|
87
|
+
* カスタムコマンドのレスポンスをモックします
|
|
88
|
+
*
|
|
89
|
+
* @param command - 完全なコマンド文字列
|
|
90
|
+
* @param response - モックするレスポンス
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```typescript
|
|
94
|
+
* mock.mockCommand("npm --version", "10.2.4");
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
mockCommand(command: string, response: unknown): void;
|
|
98
|
+
/**
|
|
99
|
+
* カスタムコマンドのエラーをモックします
|
|
100
|
+
*
|
|
101
|
+
* @param command - 完全なコマンド文字列
|
|
102
|
+
* @param error - スローするエラー
|
|
103
|
+
*/
|
|
104
|
+
mockCommandError(command: string, error: Error): void;
|
|
105
|
+
/**
|
|
106
|
+
* execSyncモックを取得します(直接操作が必要な場合)
|
|
107
|
+
*/
|
|
108
|
+
getExecSyncMock(): Mock;
|
|
109
|
+
/**
|
|
110
|
+
* 特定のコマンドが呼び出されたかを確認します
|
|
111
|
+
*
|
|
112
|
+
* @param command - 確認するコマンド
|
|
113
|
+
* @returns 呼び出された場合true
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* expect(mock.wasCommandCalled("gh issue view 123")).toBe(true);
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
wasCommandCalled(command: string): boolean;
|
|
121
|
+
/**
|
|
122
|
+
* 呼び出されたすべてのコマンドを取得します
|
|
123
|
+
*
|
|
124
|
+
* @returns コマンド文字列の配列
|
|
125
|
+
*/
|
|
126
|
+
getCalledCommands(): string[];
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* gh CLI のモックヘルパー
|
|
130
|
+
*
|
|
131
|
+
* GitHub CLI (gh) コマンドに特化したモックヘルパーです。
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```typescript
|
|
135
|
+
* const ghMock = new GhCliMock(new ChildProcessMock());
|
|
136
|
+
* ghMock.setup();
|
|
137
|
+
*
|
|
138
|
+
* ghMock.mockIssueView(123, {
|
|
139
|
+
* number: 123,
|
|
140
|
+
* title: "Test Issue",
|
|
141
|
+
* body: "Issue content"
|
|
142
|
+
* });
|
|
143
|
+
*
|
|
144
|
+
* ghMock.reset();
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
147
|
+
export declare class GhCliMock {
|
|
148
|
+
private readonly childProcessMock;
|
|
149
|
+
constructor(childProcessMock: ChildProcessMock);
|
|
150
|
+
/**
|
|
151
|
+
* モックをセットアップします
|
|
152
|
+
*/
|
|
153
|
+
setup(): void;
|
|
154
|
+
/**
|
|
155
|
+
* モックをリセットします
|
|
156
|
+
*/
|
|
157
|
+
reset(): void;
|
|
158
|
+
/**
|
|
159
|
+
* gh issue view のレスポンスをモックします
|
|
160
|
+
*/
|
|
161
|
+
mockIssueView(issueNumber: number, issueData: Record<string, unknown>): void;
|
|
162
|
+
/**
|
|
163
|
+
* gh issue edit のレスポンスをモックします
|
|
164
|
+
*/
|
|
165
|
+
mockIssueEdit(issueNumber: number, success?: boolean): void;
|
|
166
|
+
/**
|
|
167
|
+
* gh pr create のレスポンスをモックします
|
|
168
|
+
*/
|
|
169
|
+
mockPrCreate(prUrl?: string, success?: boolean): void;
|
|
170
|
+
/**
|
|
171
|
+
* 内部のChildProcessMockを取得します
|
|
172
|
+
*/
|
|
173
|
+
getChildProcessMock(): ChildProcessMock;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* git コマンドのモックヘルパー
|
|
177
|
+
*
|
|
178
|
+
* git コマンドに特化したモックヘルパーです。
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```typescript
|
|
182
|
+
* const gitMock = new GitCommandMock(new ChildProcessMock());
|
|
183
|
+
* gitMock.setup();
|
|
184
|
+
*
|
|
185
|
+
* gitMock.mockBranchList(["main", "develop", "feature/test"]);
|
|
186
|
+
* gitMock.mockCheckout("feature/test", true);
|
|
187
|
+
*
|
|
188
|
+
* gitMock.reset();
|
|
189
|
+
* ```
|
|
190
|
+
*/
|
|
191
|
+
export declare class GitCommandMock {
|
|
192
|
+
private readonly childProcessMock;
|
|
193
|
+
constructor(childProcessMock: ChildProcessMock);
|
|
194
|
+
/**
|
|
195
|
+
* モックをセットアップします
|
|
196
|
+
*/
|
|
197
|
+
setup(): void;
|
|
198
|
+
/**
|
|
199
|
+
* モックをリセットします
|
|
200
|
+
*/
|
|
201
|
+
reset(): void;
|
|
202
|
+
/**
|
|
203
|
+
* git branch --list のレスポンスをモックします
|
|
204
|
+
*/
|
|
205
|
+
mockBranchList(branches: string[], currentBranch?: string): void;
|
|
206
|
+
/**
|
|
207
|
+
* git checkout のレスポンスをモックします
|
|
208
|
+
*/
|
|
209
|
+
mockCheckout(branchName: string, success?: boolean): void;
|
|
210
|
+
/**
|
|
211
|
+
* git merge のレスポンスをモックします
|
|
212
|
+
*/
|
|
213
|
+
mockMerge(branchName: string, success?: boolean, hasConflict?: boolean): void;
|
|
214
|
+
/**
|
|
215
|
+
* git status のレスポンスをモックします
|
|
216
|
+
*/
|
|
217
|
+
mockStatus(clean?: boolean, conflictFiles?: string[]): void;
|
|
218
|
+
/**
|
|
219
|
+
* git push のレスポンスをモックします
|
|
220
|
+
*/
|
|
221
|
+
mockPush(success?: boolean): void;
|
|
222
|
+
/**
|
|
223
|
+
* 内部のChildProcessMockを取得します
|
|
224
|
+
*/
|
|
225
|
+
getChildProcessMock(): ChildProcessMock;
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=child-process.mock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"child-process.mock.d.ts","sourceRoot":"","sources":["../../../../../src/commands/task-loop/lib/__mocks__/child-process.mock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAM,MAAM,QAAQ,CAAC;AAEvC;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,YAAY,CAAO;IAC3B,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,aAAa,CAAqB;;IAQ1C;;OAEG;IACH,KAAK,IAAI,IAAI;IAoCb;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAK1D;;;;;;;;;;OAUG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAK1D;;;;;;;;;;OAUG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAK3D;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAK3D;;;;;;;;;;OAUG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAIrD;;;;;OAKG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAIrD;;OAEG;IACH,eAAe,IAAI,IAAI;IAIvB;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQ1C;;;;OAIG;IACH,iBAAiB,IAAI,MAAM,EAAE;CAG9B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,gBAAgB;IAE/D;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAO5E;;OAEG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,IAAI;IAWxD;;OAEG;IACH,YAAY,CAAC,KAAK,SAAyC,EAAE,OAAO,UAAO,GAAG,IAAI;IAQlF;;OAEG;IACH,mBAAmB,IAAI,gBAAgB;CAGxC;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,gBAAgB;IAE/D;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,aAAa,SAAS,GAAG,IAAI;IAKhE;;OAEG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,IAAI;IActD;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,UAAO,EAAE,WAAW,UAAQ,GAAG,IAAI;IAaxE;;OAEG;IACH,UAAU,CAAC,KAAK,UAAO,EAAE,aAAa,GAAE,MAAM,EAAO,GAAG,IAAI;IAS5D;;OAEG;IACH,QAAQ,CAAC,OAAO,UAAO,GAAG,IAAI;IAQ9B;;OAEG;IACH,mBAAmB,IAAI,gBAAgB;CAGxC"}
|
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
import { vi } from "vitest";
|
|
2
|
+
/**
|
|
3
|
+
* child_processモジュールのモック基盤クラス
|
|
4
|
+
*
|
|
5
|
+
* gh コマンドや git コマンドなどの外部コマンド実行をモックする際に使用します。
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const mock = new ChildProcessMock();
|
|
10
|
+
* mock.setup();
|
|
11
|
+
*
|
|
12
|
+
* // gh コマンドのレスポンスをモック
|
|
13
|
+
* mock.mockGhCommand("issue view 123", { number: 123, title: "Test Issue" });
|
|
14
|
+
*
|
|
15
|
+
* // テスト実行
|
|
16
|
+
* const result = execSync("gh issue view 123");
|
|
17
|
+
*
|
|
18
|
+
* mock.reset();
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export class ChildProcessMock {
|
|
22
|
+
constructor() {
|
|
23
|
+
this.execSyncMock = vi.fn();
|
|
24
|
+
this.commandResponses = new Map();
|
|
25
|
+
this.commandErrors = new Map();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* モックをセットアップします
|
|
29
|
+
*/
|
|
30
|
+
setup() {
|
|
31
|
+
// execSync のデフォルト実装
|
|
32
|
+
this.execSyncMock.mockImplementation((command, options) => {
|
|
33
|
+
const cmdStr = command.toString().trim();
|
|
34
|
+
// エラーがモックされている場合
|
|
35
|
+
if (this.commandErrors.has(cmdStr)) {
|
|
36
|
+
const error = this.commandErrors.get(cmdStr);
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
// レスポンスがモックされている場合
|
|
40
|
+
if (this.commandResponses.has(cmdStr)) {
|
|
41
|
+
const response = this.commandResponses.get(cmdStr);
|
|
42
|
+
// オブジェクトの場合はJSON文字列化
|
|
43
|
+
if (typeof response === "object" && response !== null) {
|
|
44
|
+
return Buffer.from(JSON.stringify(response));
|
|
45
|
+
}
|
|
46
|
+
// 文字列の場合はそのまま返す
|
|
47
|
+
return Buffer.from(String(response));
|
|
48
|
+
}
|
|
49
|
+
// デフォルトレスポンス
|
|
50
|
+
console.warn(`[ChildProcessMock] Unhandled command: ${cmdStr}`);
|
|
51
|
+
return Buffer.from("");
|
|
52
|
+
});
|
|
53
|
+
// グローバルモジュールとして設定
|
|
54
|
+
vi.mock("node:child_process", () => ({
|
|
55
|
+
execSync: this.execSyncMock,
|
|
56
|
+
spawnSync: vi.fn(),
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* モックをリセットします
|
|
61
|
+
*/
|
|
62
|
+
reset() {
|
|
63
|
+
this.execSyncMock.mockReset();
|
|
64
|
+
this.commandResponses.clear();
|
|
65
|
+
this.commandErrors.clear();
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* gh コマンドのレスポンスをモックします
|
|
69
|
+
*
|
|
70
|
+
* @param subCommand - gh のサブコマンド(例: "issue view 123")
|
|
71
|
+
* @param response - モックするレスポンス(文字列またはオブジェクト)
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* mock.mockGhCommand("issue view 123", {
|
|
76
|
+
* number: 123,
|
|
77
|
+
* title: "Test Issue",
|
|
78
|
+
* state: "open"
|
|
79
|
+
* });
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
mockGhCommand(subCommand, response) {
|
|
83
|
+
const fullCommand = `gh ${subCommand}`.trim();
|
|
84
|
+
this.commandResponses.set(fullCommand, response);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* gh コマンドのエラーをモックします
|
|
88
|
+
*
|
|
89
|
+
* @param subCommand - gh のサブコマンド
|
|
90
|
+
* @param error - スローするエラー
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```typescript
|
|
94
|
+
* mock.mockGhCommandError("issue view 999", new Error("issue not found"));
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
mockGhCommandError(subCommand, error) {
|
|
98
|
+
const fullCommand = `gh ${subCommand}`.trim();
|
|
99
|
+
this.commandErrors.set(fullCommand, error);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* git コマンドのレスポンスをモックします
|
|
103
|
+
*
|
|
104
|
+
* @param subCommand - git のサブコマンド(例: "branch --list")
|
|
105
|
+
* @param response - モックするレスポンス
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* mock.mockGitCommand("branch --list", "* main\n develop\n feature/test");
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
mockGitCommand(subCommand, response) {
|
|
113
|
+
const fullCommand = `git ${subCommand}`.trim();
|
|
114
|
+
this.commandResponses.set(fullCommand, response);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* git コマンドのエラーをモックします
|
|
118
|
+
*
|
|
119
|
+
* @param subCommand - git のサブコマンド
|
|
120
|
+
* @param error - スローするエラー
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```typescript
|
|
124
|
+
* mock.mockGitCommandError("checkout unknown-branch", new Error("branch not found"));
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
mockGitCommandError(subCommand, error) {
|
|
128
|
+
const fullCommand = `git ${subCommand}`.trim();
|
|
129
|
+
this.commandErrors.set(fullCommand, error);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* カスタムコマンドのレスポンスをモックします
|
|
133
|
+
*
|
|
134
|
+
* @param command - 完全なコマンド文字列
|
|
135
|
+
* @param response - モックするレスポンス
|
|
136
|
+
*
|
|
137
|
+
* @example
|
|
138
|
+
* ```typescript
|
|
139
|
+
* mock.mockCommand("npm --version", "10.2.4");
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
mockCommand(command, response) {
|
|
143
|
+
this.commandResponses.set(command.trim(), response);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* カスタムコマンドのエラーをモックします
|
|
147
|
+
*
|
|
148
|
+
* @param command - 完全なコマンド文字列
|
|
149
|
+
* @param error - スローするエラー
|
|
150
|
+
*/
|
|
151
|
+
mockCommandError(command, error) {
|
|
152
|
+
this.commandErrors.set(command.trim(), error);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* execSyncモックを取得します(直接操作が必要な場合)
|
|
156
|
+
*/
|
|
157
|
+
getExecSyncMock() {
|
|
158
|
+
return this.execSyncMock;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* 特定のコマンドが呼び出されたかを確認します
|
|
162
|
+
*
|
|
163
|
+
* @param command - 確認するコマンド
|
|
164
|
+
* @returns 呼び出された場合true
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```typescript
|
|
168
|
+
* expect(mock.wasCommandCalled("gh issue view 123")).toBe(true);
|
|
169
|
+
* ```
|
|
170
|
+
*/
|
|
171
|
+
wasCommandCalled(command) {
|
|
172
|
+
const calls = this.execSyncMock.mock.calls;
|
|
173
|
+
return calls.some((call) => {
|
|
174
|
+
const calledCommand = String(call[0]).trim();
|
|
175
|
+
return calledCommand === command.trim();
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* 呼び出されたすべてのコマンドを取得します
|
|
180
|
+
*
|
|
181
|
+
* @returns コマンド文字列の配列
|
|
182
|
+
*/
|
|
183
|
+
getCalledCommands() {
|
|
184
|
+
return this.execSyncMock.mock.calls.map((call) => String(call[0]).trim());
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* gh CLI のモックヘルパー
|
|
189
|
+
*
|
|
190
|
+
* GitHub CLI (gh) コマンドに特化したモックヘルパーです。
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```typescript
|
|
194
|
+
* const ghMock = new GhCliMock(new ChildProcessMock());
|
|
195
|
+
* ghMock.setup();
|
|
196
|
+
*
|
|
197
|
+
* ghMock.mockIssueView(123, {
|
|
198
|
+
* number: 123,
|
|
199
|
+
* title: "Test Issue",
|
|
200
|
+
* body: "Issue content"
|
|
201
|
+
* });
|
|
202
|
+
*
|
|
203
|
+
* ghMock.reset();
|
|
204
|
+
* ```
|
|
205
|
+
*/
|
|
206
|
+
export class GhCliMock {
|
|
207
|
+
constructor(childProcessMock) {
|
|
208
|
+
this.childProcessMock = childProcessMock;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* モックをセットアップします
|
|
212
|
+
*/
|
|
213
|
+
setup() {
|
|
214
|
+
this.childProcessMock.setup();
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* モックをリセットします
|
|
218
|
+
*/
|
|
219
|
+
reset() {
|
|
220
|
+
this.childProcessMock.reset();
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* gh issue view のレスポンスをモックします
|
|
224
|
+
*/
|
|
225
|
+
mockIssueView(issueNumber, issueData) {
|
|
226
|
+
this.childProcessMock.mockGhCommand(`issue view ${issueNumber} --json number,title,body,state`, issueData);
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* gh issue edit のレスポンスをモックします
|
|
230
|
+
*/
|
|
231
|
+
mockIssueEdit(issueNumber, success = true) {
|
|
232
|
+
if (success) {
|
|
233
|
+
this.childProcessMock.mockGhCommand(`issue edit ${issueNumber} --body`, "");
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
this.childProcessMock.mockGhCommandError(`issue edit ${issueNumber} --body`, new Error("Failed to edit issue"));
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* gh pr create のレスポンスをモックします
|
|
241
|
+
*/
|
|
242
|
+
mockPrCreate(prUrl = "https://github.com/owner/repo/pull/1", success = true) {
|
|
243
|
+
if (success) {
|
|
244
|
+
this.childProcessMock.mockGhCommand("pr create", prUrl);
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
this.childProcessMock.mockGhCommandError("pr create", new Error("Failed to create PR"));
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* 内部のChildProcessMockを取得します
|
|
252
|
+
*/
|
|
253
|
+
getChildProcessMock() {
|
|
254
|
+
return this.childProcessMock;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* git コマンドのモックヘルパー
|
|
259
|
+
*
|
|
260
|
+
* git コマンドに特化したモックヘルパーです。
|
|
261
|
+
*
|
|
262
|
+
* @example
|
|
263
|
+
* ```typescript
|
|
264
|
+
* const gitMock = new GitCommandMock(new ChildProcessMock());
|
|
265
|
+
* gitMock.setup();
|
|
266
|
+
*
|
|
267
|
+
* gitMock.mockBranchList(["main", "develop", "feature/test"]);
|
|
268
|
+
* gitMock.mockCheckout("feature/test", true);
|
|
269
|
+
*
|
|
270
|
+
* gitMock.reset();
|
|
271
|
+
* ```
|
|
272
|
+
*/
|
|
273
|
+
export class GitCommandMock {
|
|
274
|
+
constructor(childProcessMock) {
|
|
275
|
+
this.childProcessMock = childProcessMock;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* モックをセットアップします
|
|
279
|
+
*/
|
|
280
|
+
setup() {
|
|
281
|
+
this.childProcessMock.setup();
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* モックをリセットします
|
|
285
|
+
*/
|
|
286
|
+
reset() {
|
|
287
|
+
this.childProcessMock.reset();
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* git branch --list のレスポンスをモックします
|
|
291
|
+
*/
|
|
292
|
+
mockBranchList(branches, currentBranch = "main") {
|
|
293
|
+
const branchList = branches.map((b) => (b === currentBranch ? `* ${b}` : ` ${b}`)).join("\n");
|
|
294
|
+
this.childProcessMock.mockGitCommand("branch --list", branchList);
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* git checkout のレスポンスをモックします
|
|
298
|
+
*/
|
|
299
|
+
mockCheckout(branchName, success = true) {
|
|
300
|
+
if (success) {
|
|
301
|
+
this.childProcessMock.mockGitCommand(`checkout ${branchName}`, `Switched to branch '${branchName}'`);
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
this.childProcessMock.mockGitCommandError(`checkout ${branchName}`, new Error(`error: pathspec '${branchName}' did not match any file(s) known to git`));
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* git merge のレスポンスをモックします
|
|
309
|
+
*/
|
|
310
|
+
mockMerge(branchName, success = true, hasConflict = false) {
|
|
311
|
+
if (!success) {
|
|
312
|
+
this.childProcessMock.mockGitCommandError(`merge ${branchName}`, new Error("merge failed"));
|
|
313
|
+
}
|
|
314
|
+
else if (hasConflict) {
|
|
315
|
+
this.childProcessMock.mockGitCommandError(`merge ${branchName}`, new Error("CONFLICT (content): Merge conflict"));
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
this.childProcessMock.mockGitCommand(`merge ${branchName}`, "Merge successful");
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* git status のレスポンスをモックします
|
|
323
|
+
*/
|
|
324
|
+
mockStatus(clean = true, conflictFiles = []) {
|
|
325
|
+
if (clean) {
|
|
326
|
+
this.childProcessMock.mockGitCommand("status --porcelain", "");
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
const status = conflictFiles.map((file) => `UU ${file}`).join("\n");
|
|
330
|
+
this.childProcessMock.mockGitCommand("status --porcelain", status);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* git push のレスポンスをモックします
|
|
335
|
+
*/
|
|
336
|
+
mockPush(success = true) {
|
|
337
|
+
if (success) {
|
|
338
|
+
this.childProcessMock.mockGitCommand("push", "");
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
this.childProcessMock.mockGitCommandError("push", new Error("failed to push"));
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* 内部のChildProcessMockを取得します
|
|
346
|
+
*/
|
|
347
|
+
getChildProcessMock() {
|
|
348
|
+
return this.childProcessMock;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
//# sourceMappingURL=child-process.mock.js.map
|