refactor: 코드 가독성 개선 및 버그 수정
- main.go를 main()만 남기고 함수 분리 (game.go, protocol.go, ui.go) - 재시도 로직을 retryWithBackoff 공통 함수로 통합 - redeemTicketFrom 별도 HTTP 클라이언트 → apiClient 사용으로 통일 - doDownload에서 resumeOffset 이중 계산 제거 - extractZip에서 stripTopDir/extractFile 함수 분리 - downloadWithProgress에서 createProgressWindow 함수 분리 - DLL 선언을 DLL별로 그룹화, 상수를 역할별로 분리 - 전체 주석 한국어 통일 및 섹션 구분 추가 버그 수정: - ensureLauncher가 설치 경로 대신 실행 중인 경로를 해시하던 문제 수정 - uninstall 시 실행 중인 exe 삭제 실패 → 백그라운드 cmd로 대체 - moveContents에서 os.Remove 에러를 무시하던 문제 수정 - install/uninstall 메시지 통일, exitWithError 헬퍼 추가 - .gitignore에 *.exe 통일, ANALYSIS.md 삭제 - 빌드 명령에 git 태그 기반 버전 주입 추가 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
26
main_test.go
26
main_test.go
@@ -271,7 +271,10 @@ func TestRedeemTicket_Success(t *testing.T) {
|
||||
}))
|
||||
defer srv.Close()
|
||||
|
||||
token, err := redeemTicketFrom(srv.URL, "test-ticket")
|
||||
origURL := redeemTicketURL
|
||||
redeemTicketURL = srv.URL
|
||||
defer func() { redeemTicketURL = origURL }()
|
||||
token, err := redeemTicket("test-ticket")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -287,7 +290,10 @@ func TestRedeemTicket_ServerError(t *testing.T) {
|
||||
}))
|
||||
defer srv.Close()
|
||||
|
||||
_, err := redeemTicketFrom(srv.URL, "bad-ticket")
|
||||
origURL := redeemTicketURL
|
||||
redeemTicketURL = srv.URL
|
||||
defer func() { redeemTicketURL = origURL }()
|
||||
_, err := redeemTicket("bad-ticket")
|
||||
if err == nil {
|
||||
t.Fatal("서버 에러 시 에러가 반환되지 않음")
|
||||
}
|
||||
@@ -300,7 +306,10 @@ func TestRedeemTicket_InvalidJSON(t *testing.T) {
|
||||
}))
|
||||
defer srv.Close()
|
||||
|
||||
_, err := redeemTicketFrom(srv.URL, "ticket")
|
||||
origURL := redeemTicketURL
|
||||
redeemTicketURL = srv.URL
|
||||
defer func() { redeemTicketURL = origURL }()
|
||||
_, err := redeemTicket("ticket")
|
||||
if err == nil {
|
||||
t.Fatal("잘못된 JSON에 에러가 반환되지 않음")
|
||||
}
|
||||
@@ -313,15 +322,20 @@ func TestRedeemTicket_EmptyToken(t *testing.T) {
|
||||
}))
|
||||
defer srv.Close()
|
||||
|
||||
_, err := redeemTicketFrom(srv.URL, "ticket")
|
||||
origURL := redeemTicketURL
|
||||
redeemTicketURL = srv.URL
|
||||
defer func() { redeemTicketURL = origURL }()
|
||||
_, err := redeemTicket("ticket")
|
||||
if err == nil {
|
||||
t.Fatal("빈 토큰에 에러가 반환되지 않음")
|
||||
}
|
||||
}
|
||||
|
||||
func TestRedeemTicket_Unreachable(t *testing.T) {
|
||||
// 존재하지 않는 서버 주소
|
||||
_, err := redeemTicketFrom("http://127.0.0.1:1", "ticket")
|
||||
origURL := redeemTicketURL
|
||||
redeemTicketURL = "http://127.0.0.1:1"
|
||||
defer func() { redeemTicketURL = origURL }()
|
||||
_, err := redeemTicket("ticket")
|
||||
if err == nil {
|
||||
t.Fatal("연결 불가 시 에러가 반환되지 않음")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user