Skip to content

Commit f47cf56

Browse files
committed
WebView2 잠금 테스트의 docs 패키지 import를 파일 로더로 바꾼다
상황: v0.0.13 태그의 product-release 워크플로 build job이 테스트 수집 단계에서 실패했다. tests/product/testWebView2RuntimeLock.py가 `from docs.skills.ops.tools import installWebView2FixedRuntime`으로 docs 트리를 패키지처럼 import하는데, docs/는 패키지가 아니다. 로컬 게이트는 `python -m pytest`로 실행돼 cwd(repo 루트)가 sys.path에 올라 우연히 동작했고, CI는 `uv run pytest` 콘솔 스크립트라 repo 루트가 경로에 없어 ModuleNotFoundError('docs')로 죽었다. 저장소 전체에서 docs 패키지 import는 이 한 곳이다. 변경: tests/product/testWebView2RuntimeLock.py: import를 importlib.util spec_from_file_location 기반 파일 로더(_loadInstallerModule)로 바꿔 실행 방식과 무관하게 docs/skills/ops/tools/installWebView2FixedRuntime.py를 로드한다. 영향: release 워크플로의 pytest 수집이 다시 성립한다. 테스트 대상과 검증 내용은 그대로다. v0.0.13 태그는 이 수정 커밋으로 다시 발행한다(기존 태그는 draft조차 생성되기 전 build 단계에서 실패해 어떤 릴리즈에도 연결되지 않았다). 검증: uv run pytest tests/product/testWebView2RuntimeLock.py -q(콘솔 스크립트, CI와 같은 방식)와 uv run python -X utf8 -m pytest ... -q(로컬 게이트 방식) 모두 8개 테스트 통과. grep으로 docs 패키지 import가 저장소에 더 없음을 확인했다.
1 parent 1ae5d15 commit f47cf56

1 file changed

Lines changed: 14 additions & 1 deletion

File tree

‎tests/product/testWebView2RuntimeLock.py‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,26 @@
22

33
from copy import deepcopy
44
from datetime import UTC, datetime
5+
import importlib.util
56
import json
67
from pathlib import Path
78
import subprocess
89

910
import pytest
1011

11-
from docs.skills.ops.tools import installWebView2FixedRuntime as installer
12+
13+
def _loadInstallerModule():
14+
# docs/ 트리는 패키지가 아니다. `from docs...` import는 repo 루트가 sys.path에 있을
15+
# 때만 우연히 동작해(python -m pytest) CI의 pytest 콘솔 스크립트 실행에서 깨진다.
16+
path = Path(__file__).resolve().parents[2] / "docs" / "skills" / "ops" / "tools" / "installWebView2FixedRuntime.py"
17+
spec = importlib.util.spec_from_file_location("installWebView2FixedRuntime", path)
18+
assert spec is not None and spec.loader is not None
19+
module = importlib.util.module_from_spec(spec)
20+
spec.loader.exec_module(module)
21+
return module
22+
23+
24+
installer = _loadInstallerModule()
1225
from product.webview2RuntimeLock import (
1326
LOCK_PATH,
1427
RuntimeLockError,

0 commit comments

Comments
 (0)