test · git:20261005.7f0fd12 · 2026-10-05 · sha256 ad4a081a395a96b5

test git:20261005.7f0fd12A

Immutable. This exact content never changes and is served at /api/v1/blob/ad4a081a395a96b5.

---
name: test
description: Run tests and auto-fix failures. Detects the test framework, executes tests, and iterates on fixes until all pass.
---

# 테스트 실행

호출되면 바로 파이프라인을 시작한다. 단계가 바뀔 때 한 줄로 진행을 알린다.

대상: $ARGUMENTS

---

## 파이프라인 구조

```
테스트 실행 (Bash) → 결과 판독 (이 세션, 러너 요약 줄·종료코드)
                          │ 실패가 있으면
                          ▼
                    fix-bugs 위임 → 재실행 (전부 통과할 때까지)
```

---

## 1단계: 프로젝트 타입 감지 및 테스트 실행

프로젝트에 맞는 테스트 명령 실행:

```bash
# Python 프로젝트
pytest $ARGUMENTS -v --tb=short

# Node.js 프로젝트
npm test $ARGUMENTS

# Go 프로젝트
go test $ARGUMENTS ./...

# Rust 프로젝트
cargo test $ARGUMENTS
```

---

## 위임 수단이 없는 하네스 — 강등 경로

아래 `subagent_type:` 블록은 운송 수단일 뿐이고, 불변식은 블록의 `prompt:` 계약(검사 항목·출력
형식·완료 선언)이다. 쓸 수 있는 수단을 호스트에 확인하고 위에서부터 한 칸씩 내려간다:
**① 네이티브 서브에이전트**(블록 그대로) → **② 호스트의 다른 격리 위임 수단**(에이전트 정의
본문 `<플러그인 루트>/agents/<이름>.md` 를 **요약 없이** 넘기고 뒤에 `prompt:` 를
붙인다 — `$CLAUDE_PLUGIN_ROOT` 가 비면 플러그인 캐시에서 찾는다. 회신 요약이 아니라 계약
산출물로 판정한다) → **③ 이 세션에서 같은 계약을 직접 수행.** 수단이 없다고 단계를 건너뛰거나
하지 않은 위임을 했다고 보고하지 않는다. ③은 격리가 없다 — 판정을 요약으로 대체하지 말고 테스트 러너의 실제 마지막 줄을 그대로 인용한다(종료코드를 파이프로 죽이지 말 것).

## 2단계: 결과 검증

러너의 요약 줄과 종료 코드를 직접 읽어 통과/실패/스킵 수를 확정한다(별도 에이전트 불필요).
실패가 있으면 실패 출력을 그대로 3단계로 넘긴다 — 원인 분석은 fix-bugs 가 한다.

---

## 3단계: 실패 시 버그 수정

실패가 있으면 fix-bugs 에이전트로 수정:

```
Task tool 사용:
subagent_type: fix-bugs
model: sonnet
prompt: |
  다음 테스트 실패를 수정해주세요:
  [실패한 테스트 출력]

  각 실패에 대해:
  1. 실패한 테스트명
  2. 에러 메시지
  3. 예상 vs 실제 값
  4. 코드 수정
```

---

## 출력 형식

### 테스트 결과

| 항목      | 결과 |
| --------- | ---- |
| 총 테스트 | N개  |
| 통과      | N개  |
| 실패      | N개  |
| 스킵      | N개  |

### 실패 상세 (있으면)

[테스트별 원인과 수정 방안]

### 수정 결과 (실패 시)

[fix-bugs 에이전트 적용 결과]