
     j\                        d Z ddlmZ ddlZddlZddlZddlmZ ddl	Z	 ee
      j                         j                  d   ZddZ edd      Zd	 Zd
 Zd Zd Zy)uJ  tests/regression/test_review_thread_guard.py — Group 1 (4건).

task-2472 regression: Gemini review thread 임의 resolve 차단 검증.

1. test_resolve_low_severity_no_evidence_ok
2. test_resolve_medium_severity_without_evidence_rejected
3. test_resolve_with_evidence_allowed_and_audited
4. test_resolve_audit_missing_rejects
    )annotationsN)Path   c                4   t         |z  }t        j                  j                  | t	        |            }||j
                  
J d|        t        j                  j                  |      }|t        j                  | <   |j
                  j                  |       |S )Nu   spec load 실패: )
WORKTREE	importlibutilspec_from_file_locationstrloadermodule_from_specsysmodulesexec_module)mod_namerelpathspecmods        @/home/jay/workspace/tests/regression/test_review_thread_guard.py_loadr      s    c>D>>11(CIFD 7T;MdV9TT7
..
)
)$
/CCKKKKC J    review_thread_guardzutils/review_thread_guard.pyc                     t         j                  dddd      } | d   du sJ d| d	   v sJ | d
   d   dk(  sJ | d
   d   J y)u/   low severity는 evidence 없이 resolve 허용.z
thread-001lowtest-botNactorapproval_evidenceokTu   허용reasondetailseverityr   )rtgcan_resolve_threadresults    r   (test_resolve_low_severity_no_evidence_okr(   '   sy    ##	 $ F $<4vh''''(J'5000(/0888r   c                     t         j                  dddd      } | d   du sJ d| d   v sd	| d   j                         v sJ | d
   d   dk(  sJ | d
   d   J y)uM   medium thread는 chairman approval evidence 없이 resolve 시도 → reject.zthread-medium-001mediumzodin-botNr   r    Fr!   evidencer"   r#   r   )r$   r%   lowerr&   s    r   6test_resolve_medium_severity_without_evidence_rejectedr-   9   s    ##	 $ F $<5   vh'':9I9O9O9Q+QQQ(J'8333(/0888r   c                   dddd}t         j                  ddd|      }|d	   d
u sJ d|d           t         j                  ddddd|dd| 	      }|j                         sJ d       |j	                  d      j                         j                         }t        |      dk\  sJ t        j                  |d         }|d   dk(  sJ |d   dk(  sJ |d   dk(  sJ |d   dk(  sJ d|v sJ |d   dk(  sJ y)uK   유효한 evidence와 함께 high resolve → ok=True + audit jsonl 기록.chairmanz/tmp/evidence.jsonz2026-05-07T00:00:00Zapproved_byevidence_pathtszthread-high-001highr   r   r    Tzcan_resolve failed: r!   	task-2472c   allowedzchairman approved	task_id	pr_number	thread_idr#   r   r   r'   r!   	workspaceu,   audit jsonl 파일이 생성되지 않았음zutf-8)encoding   r9   r;   r#   r'   evidence_hashr   N)
r$   r%   record_resolution_auditexists	read_textstrip
splitlineslenjsonloads)tmp_pathr+   gate
audit_pathlinesrecords         r   .test_resolve_with_evidence_allowed_and_auditedrN   K   s]    "-$H !!"	 " D :F!5d8n5EFF ,,#"" - 
J N NN  ' 288:EEGEu:??ZZb	"F)++++"3333*'''(y(((f$$$'?j(((r   c                r   dddd}t         j                  j                  }d }|j                  t         j                  d|       t	        j
                  t        t        f      5  t         j                  ddd	d
d|dd| 	       ddd       |j                  t         j                  d|       y# 1 sw Y   +xY w)uK   audit write 차단 시 record_resolution_audit 실패 → exception 발생.r/   z/tmp/ev.jsonz2026-05-07T01:00:00Zr0   c                     ~ ~t        d      )Nu   디렉토리 read-only (mock))OSError)argskwargss     r   _blocked_writez:test_resolve_audit_missing_rejects.<locals>._blocked_write   s    &566r   writer5   r6   zthread-audit-blockr4   r   r7   zaudit blocked testr8   N)	r$   osrU   setattrpytestraisesrQ   	ExceptionrA   )rI   monkeypatchr+   original_os_writerT   s        r   "test_resolve_audit_missing_rejectsr]   z   s     "'$H 7 8	+	, 
##*&' 	$ 
	

 ):;
 
s   $B--B6)r   r   r   r   )__doc__
__future__r   importlib.utilr   rG   r   pathlibr   rX   __file__resolveparentsr   r   r$   r(   r-   rN   r]    r   r   <module>rf      se    #   
  >!!#++A. !#AB9$9$()^<r   