
    (<i=                         d Z ddlZddlZddlZddlmZ ej                  j                  dd       ej                  j                  dd       ddlm	Z	m
Z
mZ d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zy)u#   P1-7 hooks 자동 강제 테스트.    N)Pathz/home/jay/workspacez/home/jay/workspace/hooks)	cmd_check
cmd_record	cmd_resetc                     t        | dz        }t        d      D ]$  }t        dd| dd|      }|dk(  rJ d	|         t        dd
d|      }|dk(  sJ d       t        d
|      dk(  sJ y )Ncb_state.json   standardfoo_.pyruff_style_warning
state_pathokzShould be ok at iteration z	foo_14.pyhaltzShould halt at 15th warning)strranger   r   tmp_pathr   iresults       M/home/jay/workspace/.worktrees/task-2057-dev2/tests/test_hooks_enforcement.py&test_circuit_breaker_warning_thresholdr      s    X/0J2Y @J$qc7KXbc~?!;A3??~@
 
K1ER\]FV:::[Z8FBBB    c                     t        | dz        }t        d      D ]  }t        dddd|      } t        dddd|      }|dk(  sJ d	       y )
Nr      r
   foo.pyr   Writetoolr   r   z)Should halt at 3rd consecutive same tupler   r   r   )r   r   _r   s       r   &test_circuit_breaker_consecutive_tupler#      sd    X/0J1X mJ2FWaklm 
H.B]ghFVHHHr   c                     dd l }ddlm} | dz  }dddid}|j                   |j                  |      d	        |t        |      
      }|j                  d      du sJ y )Nr   )FeatureFlagLoaderzfeature_flags.jsonz1.0hooks_enforcement_enabledF)schema_versionflagsutf-8encoding)path)jsonutils.feature_flagsr%   
write_textdumpsr   
is_enabled)r   r-   r%   
flags_filedataloaders         r   test_flag_disabled_hook_skippedr5   &   sq    5 00J'
D *$**T*W=C
O4F89UBBBr   c                     t        | dz        }t        d      D ]  }t        ddd|        t        d|      dk(  sJ t	        |       t        d|      dk(  sJ y )	Nr      r
   r   r   r   r   r   )r   r   r   r   r   )r   r   r"   s      r   test_circuit_breaker_resetr8   9   sg    X/0J2Y V:x)=*UVX*5???$X*5===r   c                     t        | dz        }t        d      D ]$  }t        dd| dd|      }|dk(  rJ d	|         t        dd
d|      }|dk(  sJ d       y )Nr      criticalbar_r   pyright_type_errorr   r   z#Should be ok at critical iteration z	bar_29.pyr   zShould halt at 30th criticalr!   r   s       r   'test_circuit_breaker_critical_thresholdr>   E   s    X/0J2Y IJ$qc7KXbc~H!DQCHH~I 
K1ER\]FV;;;r   c                     t        | dz        }t        dddd|       t        dddd|       t        dddd|       t        dddd|      }|dk(  sJ d	       y )
Nr   r
   r   r   r   r   zbar.pyr   z/Consecutive should be broken by different event)r   r   )r   r   r   s      r   0test_consecutive_tuple_broken_by_different_eventr@   P   sm    X/0Jz8%9T^_z8%9T^_z8%9T^_
H.B]ghFT>LLL>r   c                      d} t         j                  j                  |       sJ d       t        |       5 }t	        j
                  |      }d d d        dv sJ d|d   v sJ y # 1 sw Y   xY w)Nz)/home/jay/workspace/.claude/settings.jsonzsettings.json should existhooksPostToolUse)osr,   existsopenr-   load)settings_pathfr3   s      r   test_settings_json_existsrJ   \   sm    ?M77>>-(F*FF(	m	 yy|d??DM))) s   A""A+c                  V    d} t        |       j                  d      }d|v sJ d|v sJ y )Nz,/home/jay/workspace/teams/shared/QC-RULES.mdr)   r*   u   hooks와 QC는 별개 의무u   hooks 통과 ≠ QC 면제)r   	read_text)qc_pathcontents     r   test_qc_rules_hooks_sectionrO   f   s:    <G7m%%w%7G)W444'7222r   c                      d} t         j                  j                  |       sJ d       t        j                  | t         j                        sJ d       y )Nz*/home/jay/workspace/hooks/post_tool_use.shzpost_tool_use.sh should existz%post_tool_use.sh should be executable)rD   r,   rE   accessX_OK)sh_paths    r    test_post_tool_use_sh_executablerT   n   sA    :G77>>'"C$CC"99Wbgg&O(OO&r   )__doc__r-   rD   syspathlibr   r,   inserthooks.circuit_breakerr   r   r   r   r#   r5   r8   r>   r@   rJ   rO   rT    r   r   <module>r[      sr    )  	 
  ( ) . / B B	CIC&><M*3Pr   