Skip to content

ci: 테스트 실행 추가 + Windows 매트릭스 검증#6

Merged
dj258255 merged 3 commits into
mainfrom
ci/test-and-windows-matrix
Jun 22, 2026
Merged

ci: 테스트 실행 추가 + Windows 매트릭스 검증#6
dj258255 merged 3 commits into
mainfrom
ci/test-and-windows-matrix

Conversation

@dj258255

Copy link
Copy Markdown
Owner

배경

기존 verify.ymlbuildPlugin + verifyPlugin만 실행하고 ./gradlew test를 돌리지 않았습니다. 그 결과 이슈 #2/#4에서 추가한 인코딩 회귀 테스트가 CI에서 한 번도 실행되지 않아, 수정이 회귀해도 CI가 잡지 못하는 상태였습니다. 또한 ubuntu-latest만 검증해 Windows 동작이 비어 있었습니다.

변경

  • Run Tests 스텝 추가 — 회귀 테스트(MS949 컴파일, javaCommand 인코딩 플래그)가 매 PR마다 실행됩니다.
  • ubuntu-latest + windows-latest 매트릭스 — 비-UTF-8 OS 환경에서 빌드·테스트 통과를 자동 검증합니다.
  • 리포트 아티팩트 이름을 OS별로 분리.

의의

  • 인코딩 수정의 회귀 방지 장치가 실제로 작동하게 됩니다.
  • Windows runner는 영어 로캘이라 한국어 MS949의 완전 재현은 아니지만, 회귀 테스트가 인코딩을 명시적으로 강제하므로 Windows에서도 그대로 검증됩니다. 실제 한국어 Windows 사용자 검증만이 남는 마지막 영역입니다.

dj258255 added 3 commits June 22, 2026 03:50
verify 워크플로가 buildPlugin/verifyPlugin만 돌리고 `./gradlew test`를
실행하지 않아, 인코딩 회귀 테스트(이슈 #2/#4)가 CI에서 한 번도 검증되지
않던 문제를 해결한다.
- Run Tests 스텝 추가로 회귀 테스트를 매 PR마다 실행
- ubuntu/windows 매트릭스로 비-UTF-8 OS 동작까지 자동 검증
- 리포트 아티팩트 이름을 OS별로 분리
test 스텝을 CI에 추가하면서 그동안 실행되지 않던 테스트가 검증되어 발견됨.
- levelToString: 범위 밖 레벨(0/음수/31+)에서 rankIdx 음수로 인한
  ArrayIndexOutOfBounds 크래시 방지 (1~30만 유효, 그 외 Unrated)
- sanitizeFolderName: 파일명에 안전한 . 와 + 를 보존 (예: 백준 1000 'A+B')
Windows에서 실행 파일 탐지가 실패해 Java/Python 실행이 전부 깨지던 문제 해결.
- findExecutable: Windows는 which 대신 where 사용 (Git Bash의 which는
  ProcessBuilder가 실행 못 하는 MSYS 경로 /c/... 를 반환)
- 절대경로 후보에 .exe 확장자 보정, 반환 경로의 실재 여부 검증
- detectPython: Windows는 python3가 아닌 python 우선

CI Windows 매트릭스에서 드러난 CreateProcess error=2 (javac/python3
경로) 및 그 파생인 timeout 테스트 실패를 함께 해결한다.
@dj258255 dj258255 merged commit 8dffdd9 into main Jun 22, 2026
2 checks passed
@dj258255 dj258255 deleted the ci/test-and-windows-matrix branch June 22, 2026 03:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant