Files
kefu/deploy/plaintext-chat-20260918/run_plaintext_chat_frozen_regressions.py
T
2026-09-21 10:34:06 +08:00

39 lines
1.8 KiB
Python

"""Run synthetic regressions against actual frozen listener/UI code from the EXE."""
from pathlib import Path
import importlib.abc
import importlib.util
import runpy
import json
import sys
from PyInstaller.archive.readers import CArchiveReader
folder = Path(__file__).resolve().parent
root = Path(r'C:\wechat_rpa')
exe = root / 'dist/ZhenAI-WeCom-Assistant-v1.4.29/ZhenAI-WeCom-Assistant-v1.4.29.exe'
pyz = CArchiveReader(str(exe)).open_embedded_archive('PYZ.pyz')
plan=json.loads((folder/'plaintext-chat-release-plan.json').read_text(encoding='utf-8-sig'))
assert plan.get('finalized') is True and plan.get('version')=='1.4.29'
assert {'review_assistant_contacts','review_assistant','review_state','reply_session_policy','protocol_engine','wechat_bot','reply_database','wxwork_db','voice_messages','voice_transcription','wechat_gui_qt','app_version','contact_reply_guard','contact_relation'} <= set(plan['frozenModules'])
assert plan['windowsTestModules'], 'Choose explicit frozen regression modules'
modules=set(plan['frozenModules']) | {'gui_runtime','wechat_bot','review_policy','protocol_engine'}
class FrozenListenerCode(importlib.abc.MetaPathFinder, importlib.abc.Loader):
def find_spec(self, fullname, path=None, target=None):
if fullname in modules:
return importlib.util.spec_from_loader(fullname, self, origin=str(exe))
def create_module(self, spec):
return None
def exec_module(self, module):
module.__file__ = str(root / (module.__name__ + '.py'))
exec(pyz.extract(module.__name__), module.__dict__)
sys.meta_path.insert(0, FrozenListenerCode())
runner = folder / 'run_isolated_plaintext_chat.py'
sys.argv = [str(runner), str(root), str(folder / 'frozen-plaintext-chat-tests.json'), *plan['windowsTestModules']]
runpy.run_path(str(runner), run_name='__main__')