Skip to content

Comments

테스트 커버리지 측정 도입 및 document/package 커버리지 보강#23

Merged
airmang merged 1 commit intomainfrom
codex/add-pytest-cov-to-test-extra
Feb 18, 2026
Merged

테스트 커버리지 측정 도입 및 document/package 커버리지 보강#23
airmang merged 1 commit intomainfrom
codex/add-pytest-cov-to-test-extra

Conversation

@airmang
Copy link
Owner

@airmang airmang commented Feb 18, 2026

Motivation

  • CI와 로컬에서 코드 커버리지를 수집하여 점진적으로 최소 커버리지 기준을 도입하려는 목적입니다.
  • 우선 커버리지 부족이 많은 핵심 모듈(document.py, package.py)을 우선 보강하여 신뢰성을 높이고자 했습니다.
  • 테스트 실행 환경에서 드러난 XML element 타입 혼합 문제를 해결해 관련 기능의 안정성을 확보하려 했습니다.

Description

  • pyproject.tomltest extra에 pytest-cov>=5.0을 추가하여 커버리지 플러그인을 설치하도록 했습니다 (pyproject.toml).
  • CI 워크플로우(.github/workflows/tests.yml)의 테스트 실행을 pytest -v -ra --cov=hwpx --cov-report=term-missing --cov-fail-under=${COVERAGE_FAIL_UNDER}로 변경하고, 환경변수 COVERAGE_FAIL_UNDER: 50로 단계적 도입 계획(50 -> 60 -> 70)을 주석으로 명시했습니다.
  • 커버리지 보강 대상 테스트 tests/test_coverage_targets.py를 추가하여 _append_element, HwpxDocument._flush_resource/_close_resource 동작과 hwpx.package 모듈의 deprecation 경고 및 __all__ 내보내기 심볼을 검증하도록 했습니다.
  • src/hwpx/oxml/document.py에서 lxml/xml.etree 타입 혼합으로 발생하던 오류를 해결하기 위해 부모 요소 타입에 맞춰 makeelement/append 경로로 정리하고, 필요한 경우 xml.etree.ElementTree 생성 요소를 lxml.etree로 변환하여 append 하도록 보완했습니다.

Testing

  • 의존성 설치: pip install -e '.[test,typecheck]'이 성공적으로 실행되었습니다.
  • 전체 테스트 및 커버리지: pytest --cov=hwpx --cov-report=term-missing --cov-fail-under=50을 실행하여 74 passed, 4 skipped를 확인했고 전체 커버리지는 약 80%로 설정한 기준(50%)을 충족했습니다.
  • 문제 해결 검증: XML 요소 타입 혼합으로 인한 실패 테스트를 로컬에서 재현 및 수정한 후 관련 테스트(tests/test_tables_default_border.py, 새로 추가한 대상 테스트들)가 통과함을 확인했습니다.

Codex Task

@airmang airmang merged commit c922c4a into main Feb 18, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant