
    wjt                       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
mZ ddlZ ee      j                         j                  d   Z ee      e	j$                  vr"e	j$                  j'                  d ee             ddlmZmZmZmZmZmZ dZdZd	 Zd
 Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.y)u   anu_v2.tests.test_owner_trigger_decision_schema_2554 — decision JSON v1 schema 회귀 (task-2554).

회장 §명시 14장 §5 1:1: schema ``anu_v2.owner_trigger_decision.v1``,
8 실행 조건 fail-closed, ``additionalProperties: false`` 강제.
    )annotationsN)Path   )ALLOWED_ACTIONALLOWED_COMMENT_BODYDecisionInvalidErrorREQUIRED_KEYSSCHEMA_NAMEvalidate_decision(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbc                 d    t         ddt        ddddt        t        dd}|j	                  |        |S )Nz	task-2554g   TFr   )schematask_idprcurrent_head
queue_headcurrent_head_confirmedgemini_evidence_freshnudge_count_for_pr_headallowed_actioncomment_bodyallowed)r
   _HEAD_Ar   r   update)	overridesbases     K/home/jay/workspace/anu_v2/tests/test_owner_trigger_decision_schema_2554.py_valid_decisionr        s=    "&!&#$(,D 	KK	K    c                 p   d} t         | k(  }|st        j                  d|fdt         | f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       dz  }dd|iz  }t        t        j                  |            d x}} y )Nz anu_v2.owner_trigger_decision.v1==z%(py0)s == %(py3)sr
   py0py3assert %(py5)spy5)	r
   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation@py_assert2@py_assert1@py_format4@py_format6s       r   "test_schema_name_constant_is_fixedr8   2   s^    <<;<<<<<;<<<<<<<;<<<;<<<<<<<<<<<r!   c                 p   d} t         | k(  }|st        j                  d|fdt         | f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       dz  }dd|iz  }t        t        j                  |            d x}} y )N"POST_GEMINI_REVIEW_TRIGGER_COMMENTr#   r%   r   r&   r)   r*   )	r   r+   r,   r-   r.   r/   r0   r1   r2   r3   s       r   %test_allowed_action_constant_is_fixedr;   6   s^    AA>AAAAA>AAAAAAA>AAA>AAAAAAAAAAAr!   c                 p   d} t         | k(  }|st        j                  d|fdt         | f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       dz  }dd|iz  }t        t        j                  |            d x}} y )Nz/gemini reviewr#   r%   r   r&   r)   r*   )	r   r+   r,   r-   r.   r/   r0   r1   r2   r3   s       r   +test_allowed_comment_body_constant_is_fixedr=   :   sb    #33#33333#3333333333333#33333333r!   c                 (   t        t                     } | d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}y )Nr   T)is)z%(py1)s is %(py4)spy1py4assert %(py6)spy6)r   r    r+   r,   r0   r1   r2   )result@py_assert0@py_assert3r4   @py_format5@py_format7s         r   test_valid_decision_passesrJ   >   sa    01F)$$$$$$$$$$$$$$$$$$$r!   c                 h   t               } d| d<   t        j                  t              5 }t	        |        d d d        j
                  }|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}x}}y # 1 sw Y   xY w)
Nghp_AAAAsecret_tokenE_ADDITIONAL_PROPERTIESr#   zG%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.value
}.code
} == %(py7)sexcr'   py2rB   py7assert %(py9)spy9r    pytestraisesr   r   valuecoder+   r,   r-   r.   r/   r0   r1   r2   drP   r5   rG   @py_assert6@py_assert5@py_format8@py_format10s           r   3test_extra_keys_blocked_additional_properties_falsera   C   s    A"An	+	, !9969>>666>66666>6666666366636669666>66666666666 s   D((D1c                 d   t               } | d= t        j                  t              5 }t	        |        d d d        j
                  }|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}y # 1 sw Y   xY w)	Nr   E_MISSING_KEYSr#   rO   rP   rQ   rT   rU   rV   r[   s           r   test_missing_required_key_failsrd   K   s    A	,	+	, !99-9>>--->----->-------3---3---9--->----------- s   D&&D/c                 b   t        d      } t        j                  t              5 }t	        |        d d d        j
                  }|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}x}}y # 1 sw Y   xY w)
Nz anu_v2.owner_trigger_decision.v2)r   E_SCHEMAr#   rO   rP   rQ   rT   rU   rV   r[   s           r   test_wrong_schema_name_failsrg   S   s    ABA	+	, !99'9>>'Z'>Z''''>Z''''''3'''3'''9'''>'''Z'''''''    D%%D.c                 b   t        d      } t        j                  t              5 }t	        |        d d d        j
                  }|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}x}}y # 1 sw Y   xY w)
NPOST_ARBITRARY_COMMENT)r   E_ACTIONr#   rO   rP   rQ   rT   rU   rV   r[   s           r   test_wrong_action_failsrl   Z   s    '?@A	+	, !99'9>>'Z'>Z''''>Z''''''3'''3'''9'''>'''Z''''''' rh   c                 b   t        d      } t        j                  t              5 }t	        |        d d d        j
                  }|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}x}}y # 1 sw Y   xY w)
Nz/gemini approve)r   E_COMMENT_BODYr#   rO   rP   rQ   rT   rU   rV   r[   s           r   test_wrong_comment_body_failsro   a   s    %67A	+	, !99-9>>--->----->-------3---3---9--->----------- rh   c                 b   t        d      } t        j                  t              5 }t	        |        d d d        j
                  }|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}x}}y # 1 sw Y   xY w)
NF)r   E_NOT_ALLOWEDr#   rO   rP   rQ   rT   rU   rV   r[   s           r   test_allowed_false_fails_closedrr   h   s    &A	+	, !99,9>>,_,>_,,,,>_,,,,,,3,,,3,,,9,,,>,,,_,,,,,,, rh   c                 b   t        d      } t        j                  t              5 }t	        |        d d d        j
                  }|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}x}}y # 1 sw Y   xY w)
Nabcr   E_HEAD_FORMATr#   rO   rP   rQ   rT   rU   rV   r[   s           r   test_current_head_short_failsrw   o   s    U+A	+	, !99,9>>,_,>_,,,,>_,,,,,,3,,,3,,,9,,,>,,,_,,,,,,, rh   c                 b   t        d      } t        j                  t              5 }t	        |        d d d        j
                  }|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}x}}y # 1 sw Y   xY w)
N(zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzru   rv   r#   rO   rP   rQ   rT   rU   rV   r[   s           r   test_current_head_non_hex_failsrz   v   s    X.A	+	, !99,9>>,_,>_,,,,>_,,,,,,3,,,3,,,9,,,>,,,_,,,,,,, rh   c                 b   t        d      } t        j                  t              5 }t	        |        d d d        j
                  }|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}x}}y # 1 sw Y   xY w)
NT)r   E_TYPEr#   rO   rP   rQ   rT   rU   rV   r[   s           r   test_pr_must_be_int_not_boolr}   }   s    4 A	+	, !99%9>>%X%>X%%%%>X%%%%%%3%%%3%%%9%%%>%%%X%%%%%%% rh   c                 v   t        t              } t        j                  t              5 }t        | t               d d d        j                  }|j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                   |            d x}x}x}}y # 1 sw Y   xY w)
Nru   current_head_actualE_HEAD_MISMATCHr#   rO   rP   rQ   rT   rU   )r    r   rW   rX   r   r   _HEAD_BrY   rZ   r+   r,   r-   r.   r/   r0   r1   r2   r[   s           r   test_actual_head_mismatch_failsr      s    W-A	+	, :!9:99.9>>...>.....>.......3...3...9...>...........: :s   D//D8c                 B   t        t              } t        | t              d   }d}||k(  }|slt        j                  d|fd||f      t        j
                  |      t        j
                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}}y )
Nru   r   r   r   r#   )z%(py1)s == %(py4)sr@   rC   rD   )r    r   r   r+   r,   r0   r1   r2   )r\   rF   rG   r4   rH   rI   s         r   test_actual_head_match_passesr      se    W-AQG<TBIcIBcIIIIBcIIIBIIIcIIIIIIIr!   c                 J   t        j                  t              5 } t        d       d d d         j                  }|j
                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}y # 1 sw Y   xY w)	Nz
not-a-dict
E_NOT_DICTr#   rO   rP   rQ   rT   rU   )rW   rX   r   r   rY   rZ   r+   r,   r-   r.   r/   r0   r1   r2   )rP   r5   rG   r]   r^   r_   r`   s          r   test_not_a_dict_failsr      s    	+	, (,'(99)9>>)\)>\))))>\))))))3)))3)))9)))>)))\)))))))( (s   DD"c                 @   t        t              } h d}| |k(  }|st        j                  d|fd| |f      dt	        j
                         v st        j                  t               rt        j                  t               nddt	        j
                         v st        j                  t              rt        j                  t              ndt        j                  |       t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}}y )	N>   r   r   r   r   r   r   r   r   r   r   r   r#   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)ssetr	   )r'   rA   r(   rD   zassert %(py8)spy8)
r   r	   r+   r,   r-   r.   r/   r0   r1   r2   )r4   r^   @py_assert4rI   @py_format9s        r   test_required_keys_completenessr      s    }  "  "    "                           "       r!   )/__doc__
__future__r   builtinsr-   _pytest.assertion.rewrite	assertionrewriter+   syspathlibr   rW   __file__resolveparentsWORKSPACE_ROOTstrpathinsertanu_v2.owner_trigger_decisionr   r   r   r	   r
   r   r   r   r    r8   r;   r=   rJ   ra   rd   rg   rl   ro   rr   rw   rz   r}   r   r   r   r    r!   r   <module>r      s    #   
  h'')11!4~chh&HHOOAs>*+  
$=B4%
7.((.---&/J
*r!   