fix: default write_tests skips when target type is unimplemented (#396)
This commit is contained in:
parent
e2289bfbd5
commit
f61f71d127
@ -53,6 +53,8 @@ movements:
|
|||||||
rules:
|
rules:
|
||||||
- condition: Tests written successfully
|
- condition: Tests written successfully
|
||||||
next: implement
|
next: implement
|
||||||
|
- condition: Cannot proceed because the test target is not implemented yet, so skip test writing
|
||||||
|
next: implement
|
||||||
- condition: Cannot proceed with test creation
|
- condition: Cannot proceed with test creation
|
||||||
next: ABORT
|
next: ABORT
|
||||||
- condition: User input required because there are items to confirm with the user
|
- condition: User input required because there are items to confirm with the user
|
||||||
|
|||||||
@ -84,6 +84,8 @@ movements:
|
|||||||
rules:
|
rules:
|
||||||
- condition: Tests written successfully
|
- condition: Tests written successfully
|
||||||
next: implement
|
next: implement
|
||||||
|
- condition: Cannot proceed because the test target is not implemented yet, so skip test writing
|
||||||
|
next: implement
|
||||||
- condition: Cannot proceed with test writing
|
- condition: Cannot proceed with test writing
|
||||||
next: ABORT
|
next: ABORT
|
||||||
- condition: User input needed for clarification
|
- condition: User input needed for clarification
|
||||||
|
|||||||
@ -53,6 +53,8 @@ movements:
|
|||||||
rules:
|
rules:
|
||||||
- condition: テスト作成が完了した
|
- condition: テスト作成が完了した
|
||||||
next: implement
|
next: implement
|
||||||
|
- condition: テスト対象が未実装のためテスト作成をスキップする
|
||||||
|
next: implement
|
||||||
- condition: テスト作成を進行できない
|
- condition: テスト作成を進行できない
|
||||||
next: ABORT
|
next: ABORT
|
||||||
- condition: ユーザーへの確認事項があるためユーザー入力が必要
|
- condition: ユーザーへの確認事項があるためユーザー入力が必要
|
||||||
|
|||||||
@ -84,6 +84,8 @@ movements:
|
|||||||
rules:
|
rules:
|
||||||
- condition: テスト作成が完了した
|
- condition: テスト作成が完了した
|
||||||
next: implement
|
next: implement
|
||||||
|
- condition: テスト対象が未実装のためテスト作成をスキップする
|
||||||
|
next: implement
|
||||||
- condition: テスト作成を進行できない
|
- condition: テスト作成を進行できない
|
||||||
next: ABORT
|
next: ABORT
|
||||||
- condition: ユーザーへの確認事項があるためユーザー入力が必要
|
- condition: ユーザーへの確認事項があるためユーザー入力が必要
|
||||||
|
|||||||
@ -182,6 +182,26 @@ describe('Piece Patterns IT: default piece (parallel reviewers)', () => {
|
|||||||
expect(state.status).toBe('completed');
|
expect(state.status).toBe('completed');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should continue to implement when tests cannot be written because target is not implemented', async () => {
|
||||||
|
const config = loadPiece('default', testDir);
|
||||||
|
|
||||||
|
setMockScenario([
|
||||||
|
{ persona: 'planner', status: 'done', content: 'Requirements are clear and implementable' },
|
||||||
|
{ persona: 'coder', status: 'done', content: 'Cannot proceed because the test target is not implemented yet, so skip test writing' },
|
||||||
|
{ persona: 'coder', status: 'done', content: 'Implementation complete' },
|
||||||
|
{ persona: 'ai-antipattern-reviewer', status: 'done', content: 'No AI-specific issues' },
|
||||||
|
{ persona: 'architecture-reviewer', status: 'done', content: 'approved' },
|
||||||
|
{ persona: 'qa-reviewer', status: 'done', content: 'approved' },
|
||||||
|
{ persona: 'testing-reviewer', status: 'done', content: 'approved' },
|
||||||
|
{ persona: 'supervisor', status: 'done', content: 'All checks passed' },
|
||||||
|
]);
|
||||||
|
|
||||||
|
const engine = createEngine(config!, testDir, 'Test task');
|
||||||
|
const state = await engine.run();
|
||||||
|
|
||||||
|
expect(state.status).toBe('completed');
|
||||||
|
});
|
||||||
|
|
||||||
it('should route to fix when any("needs_fix") in parallel review step', async () => {
|
it('should route to fix when any("needs_fix") in parallel review step', async () => {
|
||||||
const config = loadPiece('default', testDir);
|
const config = loadPiece('default', testDir);
|
||||||
|
|
||||||
@ -211,6 +231,38 @@ describe('Piece Patterns IT: default piece (parallel reviewers)', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('Piece Patterns IT: default-test-first-mini piece', () => {
|
||||||
|
let testDir: string;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
vi.clearAllMocks();
|
||||||
|
testDir = createTestDir();
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
resetScenario();
|
||||||
|
rmSync(testDir, { recursive: true, force: true });
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should continue to implement when tests cannot be written because target is not implemented', async () => {
|
||||||
|
const config = loadPiece('default-test-first-mini', testDir);
|
||||||
|
expect(config).not.toBeNull();
|
||||||
|
|
||||||
|
setMockScenario([
|
||||||
|
{ persona: 'planner', status: 'done', content: 'Requirements are clear and implementation is possible' },
|
||||||
|
{ persona: 'coder', status: 'done', content: 'Cannot proceed because the test target is not implemented yet, so skip test writing' },
|
||||||
|
{ persona: 'coder', status: 'done', content: 'Implementation complete' },
|
||||||
|
{ persona: 'ai-antipattern-reviewer', status: 'done', content: 'No AI-specific issues' },
|
||||||
|
{ persona: 'supervisor', status: 'done', content: 'All checks passed' },
|
||||||
|
]);
|
||||||
|
|
||||||
|
const engine = createEngine(config!, testDir, 'Test task');
|
||||||
|
const state = await engine.run();
|
||||||
|
|
||||||
|
expect(state.status).toBe('completed');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('Piece Patterns IT: research piece', () => {
|
describe('Piece Patterns IT: research piece', () => {
|
||||||
let testDir: string;
|
let testDir: string;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user