
     Oi                     .   d Z ddlZddlZddlmZ ddlZ ee      j                         j                  j                  j                  Z	 e
e	      ej                  vr"ej                  j                  d e
e	             e	dz  dz  Zd Zd Zd Zd	 Zd
 Zy)u  task-2503 회귀 테스트 파일 3 — dispatch.py main() hook 통합 검증.

회장 §6 회귀 테스트 (파일 3/3):
  - dispatch/__init__.py hook 코드 존재 검증 (grep 기반)
  - --override-merge-topology-gate argparse 등록 검증
  - BLOCK 시 sys.exit(1) 호출 검증
  - run_gate 호출 가능성 검증
  - AUDIT_LOG_PATH monkeypatch로 실제 audit 파일 오염 방지
    N)Pathdispatchz__init__.pyc                     	 ddl } | J 	 	 ddlm} t        |      sJ d       y# t        $ r"}t        j                  d|        Y d}~@d}~ww xY w# t        $ r"}t        j                  d|        Y d}~yd}~ww xY w)ur   dispatch/__init__.py를 import해도 에러 없음 + from utils.merge_topology_gate import run_gate 호출 가능.r   Nzdispatch module import failed: run_gatezrun_gate must be callablezrun_gate import failed: )r   	Exceptionpytestfailutils.merge_topology_gater   callableImportError)_dispatch_moder   s      Z/home/jay/workspace/tests/regression/test_merge_topology_gate_dispatch_integration_2503.py)test_dispatch_imports_merge_topology_gater      s    ;((((
46!>#>>!  ;5aS9::;  4.qc2334s+   % A 	AAA	A>A99A>c                      t         j                         sJ dt                 t         j                  d      } d| v sJ d       d| v sJ d       y)	u[   dispatch/__init__.py에 --override-merge-topology-gate 인자와 dest 등록 확인 (grep). dispatch/__init__.py not found: utf-8encodingz--override-merge-topology-gatezK--override-merge-topology-gate flag must be registered in dispatch argparsez#dest="override_merge_topology_gate"zHdest="override_merge_topology_gate" must be set in argparse add_argumentNDISPATCH_FILEexists	read_textcontents    r   (test_dispatch_argparse_has_override_flagr   /   sf    !U%Em_#UU!%%w%7G+w6 U6 1G; R;    c                      t         j                         sJ dt                 t         j                  d      } t        j                  d| t        j
                        }|J d       d| v sJ d       y)	uU   dispatch/__init__.py의 merge-topology-gate hook 블록에 sys.exit(1) 존재 검증.r   r   r   z(\[merge-topology-gate\].*?sys\.exit\(1\)NzGdispatch/__init__.py hook block must call sys.exit(1) on BLOCK decisionu   Merge Topology Gate 차단u=   "Merge Topology Gate 차단" message must exist in hook block)r   r   r   researchDOTALL)r   
hook_matchs     r   2test_dispatch_main_block_decision_exits_with_errorr$   ?   s    !U%Em_#UU!%%w%7G 3
		J
 ! Q!
 (72 G2r   c                      t         j                         sJ dt                 t         j                  d      } d| v sJ d       y)uc   dispatch/__init__.py에 from utils.merge_topology_gate import run_gate 존재 (hook 등록 확인).r   r   r   z.from utils.merge_topology_gate import run_gatezHdispatch/__init__.py must import run_gate from utils.merge_topology_gateNr   r   s    r   *test_dispatch_main_allow_decision_proceedsr&   W   sL    !U%Em_#UU!%%w%7G;wF RFr   c                     ddl m} | dz  }|j                  d|        |dd      \  }}|j                  dk(  sJ d	|j                          |d
u s
J d|        y)uK   run_gate — empty task_desc → metadata 누락 → BLOCK + allowed=False.r   r   zmerge-topology-gate.jsonlz(utils.merge_topology_gate.AUDIT_LOG_PATHz
test-empty )task_id	task_descBLOCKz*empty task_desc must result in BLOCK, got Fzexpected allowed=False, got N)r   r   setattrdecision)tmp_pathmonkeypatchr   
audit_filer-   alloweds         r   (test_run_gate_callable_with_minimal_argsr2   d   s    2 77J2
 !DHg' 
4X5F5F4GH' eE;G9EEr   )__doc__r    syspathlibr   r	   __file__resolveparent	WORKSPACEstrpathinsertr   r   r   r$   r&   r2    r   r   <module>r>      s    
 
   N""$++2299	y>!HHOOAs9~&J&64(
 0Fr   