Skip to content

fix: Windows CI 테스트 실패 진단·해결 + 포크 문서 일반화#12

Merged
entelecheia merged 4 commits into
STAIxBWLB:mainfrom
entelecheia:fix/windows-ci
Jul 19, 2026
Merged

fix: Windows CI 테스트 실패 진단·해결 + 포크 문서 일반화#12
entelecheia merged 4 commits into
STAIxBWLB:mainfrom
entelecheia:fix/windows-ci

Conversation

@entelecheia

Copy link
Copy Markdown
Member

목적

  • Windows 레그(참고용)에서만 실패하는 3개 테스트의 원인 진단·해결:
    • edit_add_row_then_fill, fill_data_tables_grows: 표 #0를 찾을 수 없습니다
    • edit_seal_floating_image_roundtrip: hwp5 왕복 후 앵커 소실
  • CLAUDE.md 포크 구도 문구를 구체 계정명 없이 일반화

진행 방식

1단계(이 커밋): 실패 지점에 중간 산출물 cat 덤프 계측 → Windows CI 로그로 가설 이분
2단계: 근본 원인 수정 커밋 추가 예정

체크리스트: scripts/check.sh 통과(로컬 macOS)

🤖 Generated with Claude Code

https://claude.ai/code/session_018AiF9yuE7MwRk4uYZBonw9

…ures

- CLAUDE.md: fork-topology guidance without concrete fork names
  (push branches to your fork/origin, open PRs against upstream main)
- cli.rs: the Windows CI leg fails edit_add_row_then_fill /
  fill_data_tables_grows (표 #0를 찾을 수 없습니다 - the md-synthesized
  table is missing after hwp new) and edit_seal_floating_image_roundtrip
  (anchor lost after the hwp5 roundtrip). Not reproducible on
  macOS/ubuntu, so dump the intermediate document's cat output in the
  asserts to split the hypothesis space (content lost at write vs
  lookup failure) on the next Windows run.
Copilot AI review requested due to automatic review settings July 19, 2026 02:44

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

…invisible)

Root cause of all three Windows-only CI failures: cfb's Entry::path()
is built with Path::join, so on Windows the walked stream paths render
with backslashes. Every consumer of list_streams assumes '/' - the
/BodyText/Section prefix filter matched nothing, so any .hwp read back
on Windows had sections: 0 and empty text (표 #0 없음 in edit/fill,
anchor 'lost' in the seal roundtrip - the whole body was missing).
Direct open_stream("/DocInfo") paths were unaffected, which is why
FileHeader/summary still parsed and masked the bug.

Blind replace is safe: CFB entry names themselves cannot contain path
separators. The three instrumented cli tests are the regression net
(Windows leg).
Root cause of the 3 Windows-only CI failures (edit_add_row_then_fill,
fill_data_tables_grows, edit_seal_floating_image_roundtrip):

cfb 0.14's Entry::path() is built with Path::join, which renders '\'
separators on Windows ("/BodyText\Section0"). Our body_sections()
filter ("/BodyText/Section") then matched nothing, so hwp5 documents
read back with zero sections — valid files (writer passes '/' into the
crate) parsed as empty, with no error. Diagnostics captured from the
windows-latest runner (stream list + empty cat) confirmed the
mechanism.

list_streams() now normalizes every enumerated path to '/'. CFB entry
names cannot contain separators, so the mapping is loss-free. Adds a
synthetic regression test asserting normalized paths, exact section
enumeration, and reading BodyText through them.
@entelecheia
entelecheia merged commit 7f9770e into STAIxBWLB:main Jul 19, 2026
3 checks passed
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.

2 participants