
    Ni                    n   d Z ddlmZ ddlZddlmc mZ ddl	Z
ddlZddlmZmZ ddlmZ ddlZ ee      j%                         j&                  d   Zedz  Z ej,                  d	      d
        Z ej,                  d	      d        ZddZeZej,                  d        ZdddZdddZdddZdddZy)z0Common fixtures for Phase 3 evidence gate tests.    )annotationsN)datetimetimezone)Path   scriptsmodule)scopec                 0   t         j                  j                  dt        dz        } g }| }| r| j                  }|}|sdddt        j                         v st        j                  |       rt        j                  |       ndiz  }|j                  |       | rlddt        j                         v st        j                  |       rt        j                  |       ndt        j                        dz  }|j                  |       t        j                  |d      i z  }d	d
|iz  }t        t        j                  |            dx}x}}t         j                  j                  |       }|t        j                   d<   | j                  j#                  |       |S )z#Load gemini_evidence_verify module.gemini_evidence_verifyzgemini_evidence_verify.py%(py2)spy2spec#%(py6)s
{%(py6)s = %(py4)s.loader
}py4py6r   assert %(py9)spy9N	importlibutilspec_from_file_location
SCRIPT_DIRloader@py_builtinslocals
@pytest_ar_should_repr_global_name	_safereprappend_format_boolopAssertionError_format_explanationmodule_from_specsysmodulesexec_module)	r   @py_assert1@py_assert0@py_assert5@py_format3@py_format7@py_format8@py_format10mods	            :/home/jay/workspace/tests/phase3_evidence_gate/conftest.pyevidence_moduler2      s     >>11 */J"JD  44DKKK444DDK
..
)
)$
/C,/CKK()KKC J    c                4   | }t         j                  j                  dt        dz        }g }|}|r|j                  }|}|sdddt        j                         v st        j                  |      rt        j                  |      ndiz  }|j                  |       |rlddt        j                         v st        j                  |      rt        j                  |      ndt        j                        dz  }|j                  |       t        j                  |d      i z  }d	d
|iz  }	t        t        j                  |	            dx}x}}t         j                  j                  |      }
|
t        j                   d<   |j                  j#                  |
       |
S )zOLoad gemini_review_gate module (depends on evidence_module being loaded first).gemini_review_gatezgemini_review_gate.pyr   r   r   r   r   r   r   r   Nr   )r2   _r   r)   r*   r+   r,   r-   r.   r/   r0   s              r1   gate_moduler7      s     	A>>11j+BBD  44DKKK444DDK
..
)
)$
/C(+CKK$%KKC Jr3   c                |    | j                  t        j                        j                         j	                  dd      S )Nz+00:00Z)
astimezoner   utc	isoformatreplace)dts    r1   iso_zr?   (   s+    ==&002::8SIIr3   c                6     	 	 	 	 	 d	 	 	 	 	 	 	 	 	 d fd}|S )u   Stub _gh_api / _fetch_* / audit で外部呼び出しをブロック.

    使用法:
        mock_gh_api(reviews=[], review_comments=[], issue_comments=[],
                    check_runs=[], head_sha_date=None)
    c                @    j                  d fd       j                  dfd       j                  dfd       j                  dfd       j                  d	fd
       j                  dfd       j                  dd        y )N_fetch_reviewsc                     xs g S N )_areviewss    r1   <lambda>z-mock_gh_api.<locals>._setup.<locals>.<lambda>?   s    7=VX r3   _fetch_review_commentsc                     xs g S rD   rE   )rF   review_commentss    r1   rH   z-mock_gh_api.<locals>._setup.<locals>.<lambda>@   s    SbShfh r3   _fetch_issue_commentsc                     xs g S rD   rE   )rF   issue_commentss    r1   rH   z-mock_gh_api.<locals>._setup.<locals>.<lambda>A   s    R`Rfdf r3   _fetch_check_runsc                     xs g S rD   rE   )rF   
check_runss    r1   rH   z-mock_gh_api.<locals>._setup.<locals>.<lambda>B   s    jN^\^ r3   _fetch_head_pushed_atc                     S rD   rE   rF   head_sha_dates    r1   rH   z-mock_gh_api.<locals>._setup.<locals>.<lambda>D   s    R_ r3   _fetch_head_sha_datec                     S rD   rE   rT   s    r1   rH   z-mock_gh_api.<locals>._setup.<locals>.<lambda>E   s    Q^ r3   _append_auditc                      y rD   rE   )rF   s    r1   rH   z-mock_gh_api.<locals>._setup.<locals>.<lambda>G   s    r3   )setattr)rG   rK   rN   rQ   rU   r2   monkeypatchs   `````r1   _setupzmock_gh_api.<locals>._setup8   s     	O-=?XYO-EGhiO-DFfgO-@B^_O-DF_`O-CE^_O_>NOr3   )NNNNN)
rG   list[dict] | NonerK   r]   rN   r]   rQ   r]   rU   
str | NonerE   )r2   r[   r\   s   `` r1   mock_gh_apir_   0   sT     &*-1,0(,$(P"P*P *P &	P
 "P  Mr3   c                    |ddi| |ddS )Nlogingemini-code-assist[bot]	COMMENTED)iduserbody	commit_idstaterE   )rf   rg   	review_ids      r1   make_reviewrj   K   s!    34 r3   c                    |ddi| |dS )Nra   rb   )rd   re   rf   rg   rE   )rf   rg   
comment_ids      r1   make_review_commentrm   U   s    34	 r3   c                    |ddi| |dS )Nra   rb   )rd   re   rf   
created_atrE   )rf   rl   ro   s      r1   make_issue_commentrp   ^   s    34 	 r3   c                    || d|ddidS )N	completedslugzgemini-code-assist)rd   namestatus
conclusionapprE   )rt   rv   run_ids      r1   make_check_runry   g   s!     ,- r3   )r>   r   returnstr)   )rf   r{   rg   r{   ri   intrz   dict)d   )rf   r{   rg   r{   rl   r}   rz   r~   )   N)rf   r{   rl   r}   ro   r^   rz   r~   )successi  )rt   r{   rv   r{   rx   r}   rz   r~   ) __doc__
__future__r   builtinsr   _pytest.assertion.rewrite	assertionrewriter   importlib.utilr   r&   r   r   pathlibr   pytest__file__resolveparentsROOTr   fixturer2   r7   r?   _isor_   rj   rm   rp   ry   rE   r3   r1   <module>r      s    6 "     
 '  H~''*I
 h	  	 h
  
J
   4r3   