
    U6i                         d Z ddlZddlmc m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 Zd Zd Zd	 Zd
 Zd Zd Zy)u   Phase 1 통합 테스트.    N)Pathz/home/jay/workspacez/home/jay/workspace/hooksc                     ddl m}   |        }|j                         }|j                  }d} ||      }d}||u }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        j                  |      t	        j                  |      t	        j                  |      t	        j                  |      dz  }d	d
|iz  }	t        t	        j                  |	            dx}x}x}x}}|j                  }d} ||      }d}||u }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        j                  |      t	        j                  |      t	        j                  |      t	        j                  |      dz  }d	d
|iz  }	t        t	        j                  |	            dx}x}x}x}}|j                  }d} ||      }d}||u }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        j                  |      t	        j                  |      t	        j                  |      t	        j                  |      dz  }d	d
|iz  }	t        t	        j                  |	            dx}x}x}x}}|j                  }d} ||      }d}||u }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        j                  |      t	        j                  |      t	        j                  |      t	        j                  |      dz  }d	d
|iz  }	t        t	        j                  |	            dx}x}x}x}}|j                  }d} ||      }d}||u }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        j                  |      t	        j                  |      t	        j                  |      t	        j                  |      dz  }d	d
|iz  }	t        t	        j                  |	            dx}x}x}x}}|j                  }d} ||      }d}||u }|st	        j
                  d|fd||f      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        j                  |      t	        j                  |      t	        j                  |      t	        j                  |      dz  }d	d
|iz  }	t        t	        j                  |	            dx}x}x}x}}y)u`   Phase 1 플래그 3개 활성화, Phase 2 플래그(trust5_tagging, model_map) 활성화 확인.r   )FeatureFlagLoaderprogressive_disclosure_enabledTis)zI%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py4)s)
} is %(py9)sflags)py0py2py4py6py9zassert %(py11)spy11Nrw_isolation_enabledhooks_enforcement_enabledtrust5_tagging_enabledmodel_map_enabledhaiku_ab_enabledF)utils.feature_flagsr   get_all_flagsget
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)
r   loaderr	   @py_assert1@py_assert3@py_assert5@py_assert8@py_assert7@py_format10@py_format12s
             @/home/jay/workspace/tests/integration/test_phase1_integration.py!test_int01_phase1_flags_activatedr)      s   5 F  "E99>5>956>$>6$>>>>6$>>>>>>5>>>5>>>9>>>5>>>6>>>$>>>>>>>994+49+,44,4444,444444544454449444+444,4444444444999099019T91T99991T99999959995999999909991999T9999999996-69-.6$6.$6666.$666666566656669666-666.666$6666666991(19()1T1)T1111)T111111511151119111(111)111T1111111991'19'(1E1(E1111(E111111511151119111'111(111E11111111    c                    ddl m} ddlm}m} | dz  }dddid}|j                  t        j                  |      d	
       t        |       |dfd      5   |dddd        |dddd      }ddd        |      }d}||k  }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }
t        j                  d| d      dz   d|
iz  }t!        t        j"                  |            dx}	}y# 1 sw Y   xY w)u.   PD 플래그 활성 시 summary 토큰 검증.r   )patch)_count_tokensbuild_promptzfeature_flags.jsonz1.0r   T)schema_versionr	   zutf-8)encodingz.utils.feature_flags.FeatureFlagLoader.__init__c                 t    t        | d      t        | di       t        | dd      | j                         fd   S )N_path_cache_mtimeg        )setattr_load)self_kw
flags_paths     r(   <lambda>z/test_int02_pd_enabled_summary.<locals>.<lambda>.   sA    D':.D(B'D(C(JJL	

  r*   z	dev1-teamztask-int-02au~  통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 통합테스트 작업 full)disclosure_phaseztask-int-02bsummaryNiX  )<=)z%(py0)s <= %(py3)ssummary_tokens)r
   py3zsummary tokens z > 600z
>assert %(py5)spy5)unittest.mockr,   prompts.team_promptsr-   r.   
write_textjsondumpsstrr   r   r   r   r   r   _format_assertmsgr   r   )tmp_pathr,   r-   r.   
flags_filedatasummary_promptr@   @py_assert2r!   @py_format4@py_format6r:   s               @r(   test_int02_pd_enabled_summaryrQ      s   #@00J2D9D $**T*W=ZJ	8	
 
 	[.2Pcij%k>Cat}~
 #>2N J>S JJJ>SJJJJJJ>JJJ>JJJSJJJON3C6"JJJJJJJ
 
s   EEc                  &   ddl m}   | dddd      }|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}}|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	)u&   read_only=True 시 worktree 미생성.r   
cmd_createz/tmp/test-projectztask-int-03dev1T)	read_onlyworktree_pathNr   )z%(py1)s is %(py4)s)py1r   zassert %(py6)sr   statusskipped==)z%(py1)s == %(py4)s)scripts.worktree_managerrT   r   r   r   r   r   )rT   result@py_assert0r"   rN   @py_format5@py_format7s          r(   test_int03_rw_read_no_worktreerb   =   s    3+]FdSF/"*d*"d****"d***"***d*******((y(y((((y((((((y(((((((r*   c                     ddl } ddlm} | j                  |      }|j                  d   }|j
                  }d}||u }|st        j                  d|fd||f      t        j                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            dx}x}x}}y)u%   write(기본값) 시 read_only=False.r   NrS   rV   Fr   )z/%(py3)s
{%(py3)s = %(py1)s.default
} is %(py6)s)rX   rA   r   zassert %(py8)spy8)inspectr]   rT   	signature
parametersdefaultr   r   r   r   r   )	re   rT   sigr_   rN   r#   @py_assert4ra   @py_format9s	            r(   test_int04_rw_write_defaultrl   G   s    3


J
'C>>+&7&..7%7.%7777.%777&777.777%7777777r*   c                    ddl m}m} t        | dz        }t	        d      D ]  } |dddd|	        d} |||
      }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }	dd|	iz  }
t        t        j                  |
            dx}x}x}}y)u#   circuit breaker가 halt 후 차단.r   )	cmd_check
cmd_recordcb.json   standardtest.py
ruff_errorWritetool
state_pathrx   haltr[   zD%(py5)s
{%(py5)s = %(py0)s(%(py2)s, state_path=%(py3)s)
} == %(py8)srn   rx   r
   r   rA   rB   rd   assert %(py10)spy10N)hooks.circuit_breakerrn   ro   rH   ranger   r   r   r   r   r   r   r   )rJ   rn   ro   rx   _r!   rj   r%   @py_assert6rk   @py_format11s              r(    test_int05_hooks_circuit_breakerr   R   s    ;X	)*J1X ]:y,WQ[\]@9Y:6@&@6&@@@@6&@@@@@@9@@@9@@@Y@@@@@@:@@@:@@@6@@@&@@@@@@@r*   c                     ddl m}m}m} t	        | dz        }t        d      D ]  } |dddd|	        d} |||
      }d}||k(  }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }
dd|
iz  }t        t        j                  |            dx}x}x}	} ||
       d} |||
      }d}||k(  }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }
dd|
iz  }t        t        j                  |            dx}x}x}	}y)u   halt 후 reset하면 다시 ok.r   )rn   ro   	cmd_resetrp   rq   rr   rs   rt   ru   rv   ry   rz   r[   r{   rn   rx   r|   r}   r~   Nok)r   rn   ro   r   rH   r   r   r   r   r   r   r   r   r   )rJ   rn   ro   r   rx   r   r!   rj   r%   r   rk   r   s               r(    test_int06_circuit_breaker_resetr   ^   s   FFX	)*J1X ]:y,WQ[\]@9Y:6@&@6&@@@@6&@@@@@@9@@@9@@@Y@@@@@@:@@@:@@@6@@@&@@@@@@@$>9Y:6>$>6$>>>>6$>>>>>>9>>>9>>>Y>>>>>>:>>>:>>>6>>>$>>>>>>>r*   c                  2   d} t        |       }|j                  } |       }|sddt        j                         v st	        j
                  t               rt	        j                  t               ndt	        j                  |       t	        j                  |      t	        j                  |      t	        j                  |      dz  }t        t	        j                  |            dx} x}x}}d} t        |       }|j                  } |       }|sddt        j                         v st	        j
                  t               rt	        j                  t               ndt	        j                  |       t	        j                  |      t	        j                  |      t	        j                  |      dz  }t        t	        j                  |            dx} x}x}}d} t        |       }|j                  } |       }|sddt        j                         v st	        j
                  t               rt	        j                  t               ndt	        j                  |       t	        j                  |      t	        j                  |      t	        j                  |      dz  }t        t	        j                  |            dx} x}x}}d}t        |      }|j                  } |       }|sd	dt        j                         v st	        j
                  t               rt	        j                  t               ndd
t        j                         v st	        j
                  |      rt	        j                  |      nd
t	        j                  |      t	        j                  |      t	        j                  |      dz  }	t        t	        j                  |	            dx}x}}t        j                  } t        j                  } | ||      }|s3ddt        j                         v st	        j
                  t              rt	        j                  t              ndt	        j                  |       d
t        j                         v st	        j
                  |      rt	        j                  |      nd
dt        j                         v st	        j
                  t              rt	        j                  t              ndt	        j                  |      t	        j                  |      dz  }t        t	        j                  |            dx} x}}d} t        |       }|j                  } |       }|sddt        j                         v st	        j
                  t               rt	        j                  t               ndt	        j                  |       t	        j                  |      t	        j                  |      t	        j                  |      dz  }t        t	        j                  |            dx} x}x}}t        d      }
|
j                  }  |        }|sddt        j                         v st	        j
                  |
      rt	        j                  |
      ndt	        j                  |       t	        j                  |      dz  }t        t	        j                  |            dx} }|
j                  }d} ||      }t        |      }t        |      }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dt        j                         v st	        j
                  |
      rt	        j                  |
      ndt	        j                  |      t	        j                  |      t	        j                  |      t	        j                  |      t	        j                  |      t	        j                  |      d	z  }dd|iz  }t        t	        j                  |            dx}x}x}x}x}x}}y)u,   전체 시스템 구성요소 존재 확인.z./home/jay/workspace/.claude/feature_flags.jsonz_assert %(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}.exists
}()
}r   )r
   r   r   r   rd   Nz)/home/jay/workspace/.claude/settings.jsonz,/home/jay/workspace/hooks/circuit_breaker.pyz*/home/jay/workspace/hooks/post_tool_use.shz_assert %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
}.exists
}()
}sh_path)r
   rX   rA   rB   py7zkassert %(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.access
}(%(py3)s, %(py6)s
{%(py6)s = %(py4)s.X_OK
})
}os)r
   r   rA   r   r   rd   z>/home/jay/workspace/.metrics/baseline/baseline_2026-04-03.jsonz/home/jay/workspace/docs/specszAassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}	specs_dir)r
   r   r   z*.md   )>=)z%(py12)s
{%(py12)s = %(py0)s(%(py10)s
{%(py10)s = %(py1)s(%(py8)s
{%(py8)s = %(py4)s
{%(py4)s = %(py2)s.glob
}(%(py6)s)
})
})
} >= %(py15)slenlist)	r
   rX   r   r   r   rd   r~   py12py15zassert %(py17)spy17)r   existsr   r   r   r   r   r   r   r   accessX_OKglobr   r   r   )r!   r"   r#   r%   rk   r   rN   rj   r   @py_format8r   r`   @py_assert9@py_assert11@py_assert14@py_assert13@py_format16@py_format18s                     r(   test_int07_full_integrationr   k   s    AJ4@AJAHHJHJJJJJJJJ4JJJ4JJJ@JJJAJJJHJJJJJJJJJJ;E4;<E<CCECEEEEEEEE4EEE4EEE;EEE<EEECEEEEEEEEEE>H4>?H?FFHFHHHHHHHH4HHH4HHH>HHH?HHHFHHHHHHHHHH:G=!=!!!!!!!!!4!!!4!!!!!!!!!!!!=!!!!!!!!!!!!!99&bgg&9Wg&&&&&&&&2&&&2&&&9&&&&&&W&&&W&&&&&&b&&&b&&&g&&&&&&&&&&PZ4PQZQXXZXZZZZZZZZ4ZZZ4ZZZPZZZQZZZXZZZZZZZZZZ56I99NN161N6*1t*+13+,11,1111,11111131113111111t111t111111I111I111N1116111*111+111,11111111111r*   )__doc__builtinsr   _pytest.assertion.rewrite	assertionrewriter   rF   r   syspathlibr   pathinsertr)   rQ   rb   rl   r   r   r    r*   r(   <module>r      sc        	 
  ( ) . /2"K>)8A	?2r*   