Skip to content

init 후속 단계 실패 시 부분 초기화 상태가 남는다 #14

Description

@leehyowon14

요약

dpt initdpt.json을 먼저 기록한 뒤 tests/, .dpt/, .dpt/.gitignore를 생성합니다. 후속 단계가 실패하면 앞서 생성한 상태를 rollback하지 않아 재실행이 막힙니다.

  • 검토 기준: main@4e87765f95c106edb3c956cfad2abc1db64c0c39
  • 판정: CONFIRMED
  • 우선순위: P2

영향

초기화가 실패했는데도 dpt.json이 남습니다. 원인을 해결해도 다음 dpt init은 “이미 설정 파일이 있습니다”로 실패합니다.

발생 조건 및 확인 범위

tests 경로에 일반 파일을 만든 fixture에서 다음을 확인했습니다.

  1. inittests 생성 단계에서 실패합니다.
  2. 먼저 작성된 dpt.json은 남습니다.
  3. 두 번째 init은 기존 설정 파일 때문에 즉시 실패합니다.

같은 순서상 .dpt 생성 또는 .gitignore 기록 실패에서도 부분 상태가 남을 수 있습니다.

재현 및 검증 방법

mkdir /tmp/dpt-init-repro
cd /tmp/dpt-init-repro
printf '%s\n' '{"pack":{"description":"repro","pack_format":71}}' > pack.mcmeta
touch tests
dpt init --pack .
test -f dpt.json
dpt init --pack .

기대 동작

init 실패 시 실행 전 상태로 rollback하거나, 실패 가능한 검증과 디렉터리 준비를 먼저 마친 뒤 설정 파일을 마지막에 원자적으로 commit해야 합니다.

완료 조건

  • tests 충돌 시 dpt.json을 남기지 않는다.
  • .dpt 충돌 및 .gitignore 기록 실패에서도 부분 상태를 남기지 않는다.
  • 기존 사용자 tests/ 내용은 보존한다.
  • 실패 원인 해결 후 바로 재실행할 수 있다.
  • 단계별 실패 주입 또는 충돌 회귀 테스트를 추가한다.

관련 코드

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions