37 lines
1.7 KiB
Python
37 lines
1.7 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 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.20/ZhenAI-WeCom-Assistant-v1.4.20.exe'
|
|
pyz = CArchiveReader(str(exe)).open_embedded_archive('PYZ.pyz')
|
|
modules = {'protocol_engine', 'gui_runtime', 'wechat_gui_qt', 'wechat_bot', 'review_policy', 'review_state', 'reply_session_policy'}
|
|
|
|
|
|
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.parent / 'loading-performance-20260917/run_isolated.py'
|
|
sys.argv = [str(runner), str(root), str(folder / 'frozen-continuity-tests.json'),
|
|
'test_listener_continuity', 'test_listener_ui_continuity',
|
|
'test_listener_continuity_integration', 'test_protocol_listener_continuity',
|
|
'test_reply_session_policy', 'test_protocol_session_exclusions', 'test_visual_session_exclusions', 'test_review_badges', 'test_review_policy_integration', 'test_visual_review_visibility', 'test_protocol_review_visibility']
|
|
runpy.run_path(str(runner), run_name='__main__')
|