
     j                        d Z ddlmZ ddlZddlZddlmZ  ee      j                         j                  d   ZddZ edd      Zddddd	d
	 ddZd Zd Zd Zd Zy)u*  tests/lifecycle_guards/test_gemini_gate_validator.py — Group 4 (4건).

task-2472 regression: Gemini gate 검증 강화.

12. test_body_high_zero_thread_medium_blocks_gate
13. test_image_markdown_high_severity_detected
14. test_no_gemini_review_fails_gate
15. test_unresolved_thread_blocks_merge
    )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        H/home/jay/workspace/tests/lifecycle_guards/test_gemini_gate_validator.py_loadr      s    c>D>>11(CIFD 7T;MdV9TT7
..
)
)$
/CCKKKKC J    gemini_gate_validatorzutils/gemini_gate_validator.pyTreviewscommentsthreadsissue_commentsfetch_okc                @    | ddiddg} |g }|g }|g }| ||||g dS )u(   테스트용 PR 데이터 구성 헬퍼.logingemini-code-assist[bot]zLGTM no issues founduserbody)r   r   r   r   r   errors r   s        r   _make_pr_datar(       sY     $&?@J`ab( r   c                     t        ddiddgddddg	      } t        j                  | d
      }|d   dk(  s
J d|        |d   d
u sJ t        |d         dk\  sJ t	        d |d   D              sJ y)uH   review body에 high=0이어도 unresolved medium thread 존재 → FAIL.r!   r"   z:Review complete. No high severity issues in the code body.r#   zthread-medium-001Fu2   severity: medium — This logic needs improvement.id
isResolvedr%   r   r   T)block_unresolved_mediumverdictFAILu*   medium unresolved thread → FAIL 필수: gemini_review_presentunresolved_threads   c              3  ,   K   | ]  }|d    dk(    yw)severitymediumNr'   ).0ts     r   	<genexpr>z@test_body_high_zero_thread_medium_blocks_gate.<locals>.<genexpr>W   s     OQq}(Os   N)r(   ggvevaluate_gatelenanypr_dataresults     r   -test_body_high_zero_thread_medium_blocks_gaterA   @   s     !";<T
 *#L
G  wEF)&]*TU[T\(]]&)*d222v*+,111O&9M2NOOOOr   c                    d} t         j                  |       }|d   dk(  s
J d|        |d   dk(  sJ |d   dk(  sJ |d   dk(  sJ t        d	d
iddg      }t         j                  |      }|d   dk(  sJ d       |d   d   dk\  sJ y)u?   ![high](...) 패턴 → detect_image_severity가 high=1 반환.zOHere is the review: ![high](https://img.shields.io/badge/severity-high-red.svg)highr3   u   image_high 탐지 실패: r6   r   criticallowr!   r"   zV![high](https://img.shields.io/badge/severity-high-red.svg) critical path issue found.r#   r   r/   r0   u%   image badge high → gate FAIL 필수severity_counts
image_highN)r:   detect_image_severityr(   r;   )textr@   r?   gate_results       r   *test_image_markdown_high_severity_detectedrL   ^   s    \D&&t,F&>QE"<VH EE(q   *"""%=A  !";<p
G ##G,Ky!V+T-TT+(),71<<<r   c                     t        ddiddddiddg      } t        j                  |       }|d   d	k(  sJ d
       |d   du sJ d|d   v sd|d   j                         v sJ yy)u>   Gemini bot 리뷰 없음 → FAIL with 'Gemini review 부재'.r!   zhuman-reviewerzLooks good to me.r#   z	other-botz
CI passed.rF   r/   r0   u$   Gemini 리뷰 부재 → FAIL 필수r1   FGeminireasongeminiN)r(   r:   r;   lowerr>   s     r    test_no_gemini_review_fails_gaterR   {   s    /0:MN{+\B
G w'F)&N(NN&)*e333vh''8vh7G7M7M7O+OOO+O'r   c                    t        ddiddgddddg	      } t        j                  |       }|d
   dk(  s
J d|        t        |d         dk\  sJ |d   D cg c]  }|d   dk(  s| }}t        |      dk\  sJ d       yc c}w )u5   unresolved high thread 존재 → FAIL, verdict=FAIL.r!   r"   zReview completed.r#   zthread-high-blockerFuB   severity: high — Security vulnerability detected in auth module.r*   r-   r/   r0   u(   unresolved high thread → FAIL 필수: r2   r3   r5   rC   u@   high severity unresolved thread가 목록에 포함되어야 함N)r(   r:   r;   r<   )r?   r@   r8   high_threadss       r   #test_unresolved_thread_blocks_mergerU      s     !";<+
 ,#\
G  w'F)&[*RSYRZ([[&v*+,111%&:;W!q}PV?VAWLW|!e#ee! Xs   B(B)r   r   r   r   )returndict)__doc__
__future__r   importlib.utilr   r   pathlibr   __file__resolveparentsr   r   r:   r(   rA   rL   rR   rU   r'   r   r   <module>r_      s    #  
 >!!#++A. #%EF
  
@P<=:P(fr   