4.9 KiB
CLI 어댑터 테스트 디렉토리 구조 정리
이 파일을 읽는 구현 에이전트에게
아래 체크리스트를 순서대로 완료하고, 각 항목의 중간 검증과 최종 검증을 실제로 실행하세요. 구현이 끝나면 agent-task/02_cli_test_layout_cleanup/CODE_REVIEW.md의 모든 섹션을 실제 구현 내용과 명령 출력으로 채우세요. CODE_REVIEW.md의 이 파일을 읽는 리뷰 에이전트에게 섹션에 있는 아카이브 지시(*.log로 이름 변경, complete.log 작성)는 구현 에이전트가 수행하면 안 되며, 리뷰 스킬 전용입니다.
배경
apps/node/internal/adapters/cli/ 아래에 oneshot/, persistent/, lifecycle/ 디렉토리가 존재하지만 각 디렉토리에는 *_test.go 파일만 들어있고, 실제 구현은 부모 cli 패키지의 oneshot.go, persistent.go 등에 있습니다. 패키지 선언도 oneshot_test, persistent_test, lifecycle_test로 black-box 테스트입니다. 디렉토리 이름이 sub-package의 존재를 암시해 처음 보는 사람이 잘못된 모듈 경계를 추론할 수 있습니다. 구현은 이미 부모 패키지에 모여 있으므로, 테스트 파일도 부모 디렉토리로 옮겨 단일 패키지 black-box 테스트로 통합합니다.
[REFACTOR-1] 테스트 파일을 cli 부모 디렉토리로 이동
문제
다음 파일들이 의미 없는 sub-디렉토리에 격리되어 있습니다:
apps/node/internal/adapters/cli/oneshot/cli_test.go(packageoneshot_test)apps/node/internal/adapters/cli/persistent/execute_test.go(packagepersistent_test)apps/node/internal/adapters/cli/persistent/codex_exec_test.go(packagepersistent_test)apps/node/internal/adapters/cli/lifecycle/cli_test.go(packagelifecycle_test)
세 디렉토리 모두 구현 파일 없이 테스트만 들어 있고, 모두 부모 cli 패키지를 import해 동작을 검증합니다.
해결 방법
각 테스트 파일을 부모 apps/node/internal/adapters/cli/ 디렉토리로 이동하고, 패키지 선언을 cli_test로 통일합니다. 파일명은 충돌 방지를 위해 다음과 같이 rename합니다:
| 기존 경로 | 새 경로 |
|---|---|
cli/oneshot/cli_test.go |
cli/oneshot_blackbox_test.go |
cli/persistent/execute_test.go |
cli/persistent_execute_blackbox_test.go |
cli/persistent/codex_exec_test.go |
cli/codex_exec_blackbox_test.go |
cli/lifecycle/cli_test.go |
cli/lifecycle_blackbox_test.go |
이동 후 빈 디렉토리(oneshot/, persistent/, lifecycle/)는 삭제합니다. cli/internal/testutil/은 외부 패키지에서 import 가능한 그대로 유지합니다.
수정 파일 및 체크리스트
git mv apps/node/internal/adapters/cli/oneshot/cli_test.go apps/node/internal/adapters/cli/oneshot_blackbox_test.gogit mv apps/node/internal/adapters/cli/persistent/execute_test.go apps/node/internal/adapters/cli/persistent_execute_blackbox_test.gogit mv apps/node/internal/adapters/cli/persistent/codex_exec_test.go apps/node/internal/adapters/cli/codex_exec_blackbox_test.gogit mv apps/node/internal/adapters/cli/lifecycle/cli_test.go apps/node/internal/adapters/cli/lifecycle_blackbox_test.go- 이동된 4개 파일의
package선언을cli_test로 변경한다. - 빈 디렉토리
apps/node/internal/adapters/cli/oneshot/,persistent/,lifecycle/를rmdir로 제거한다. - 같은 이름의 헬퍼/심볼이 두 파일에 동시 존재하면 prefix(
oneshot_,persistent_등)로 rename해 충돌을 푼다.
테스트 작성
새 테스트는 추가하지 않는다. 이 항목은 파일 이동/패키지 명 변경만 수행하며, 기존 테스트 케이스가 그대로 동작하는 것이 회귀 검증 자체이다.
중간 검증
ls apps/node/internal/adapters/cli/
go test ./apps/node/internal/adapters/cli/...
예상 결과: oneshot/, persistent/, lifecycle/ 디렉토리가 사라지고, 4개 *_blackbox_test.go가 부모에 있다. go test는 단일 패키지 iop/apps/node/internal/adapters/cli에서 모두 PASS.
수정 파일 요약
| 파일 | 항목 |
|---|---|
apps/node/internal/adapters/cli/oneshot_blackbox_test.go (이동/리네임) |
REFACTOR-1 |
apps/node/internal/adapters/cli/persistent_execute_blackbox_test.go (이동/리네임) |
REFACTOR-1 |
apps/node/internal/adapters/cli/codex_exec_blackbox_test.go (이동/리네임) |
REFACTOR-1 |
apps/node/internal/adapters/cli/lifecycle_blackbox_test.go (이동/리네임) |
REFACTOR-1 |
최종 검증
go build ./...
go test ./apps/node/...
find apps/node/internal/adapters/cli -type d
예상 결과: build/test 모두 PASS. find 결과는 apps/node/internal/adapters/cli, apps/node/internal/adapters/cli/internal, apps/node/internal/adapters/cli/internal/testutil만 보인다.