
    /i1                         d 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
 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y)u&   P1-1 Progressive Disclosure 테스트.    N)patchz/home/jay/workspace)build_promptTOKEN_LIMITS_count_tokensztask-test-pd-01u  테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. 테스트용 작업 설명입니다. Progressive Disclosure 기능을 검증합니다. c           	          | dz  dz  }|j                   j                  dd       dddddddddd	}|j                  t        j                  |d
      d       t        |      S )u7   임시 feature_flags.json 생성 + 환경변수 설정..claudefeature_flags.jsonTparentsexist_ok1.02026-04-07T00:00:00+09:00Fprogressive_disclosure_enabledrw_isolation_enabledhooks_enforcement_enabledtrust5_tagging_enabledmodel_map_enabledhaiku_ab_enabledschema_version
updated_atflags   indentutf-8encodingparentmkdir
write_textjsondumpsstrtmp_path
flags_filedatas      8/home/jay/workspace/tests/test_progressive_disclosure.py_enable_pd_flagr,      sy    I%(<<JD481.2$)).&+!& %
D $**T!4wGz?    c           	          | dz  dz  }|j                   j                  dd       dddddddddd	}|j                  t        j                  |d
      d       t        |      S )u0   임시 feature_flags.json 생성 (모두 false).r   r	   Tr
   r   r   Fr   r   r   r   r   r   r    r'   s      r+   _disable_pd_flagr/   %   sy    I%(<<JD481.3$)).&+!& %
D $**T!4wGz?r-   c                    t        |       t        ddfd	      5  t        dt        t        d      }t        dt        dz   t        d      }d d d        t              }t              }|t        d   kD  r||z  }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      dz   d|iz  }	t        t        j                  |	            d x}}y d}
||
z   }||k  }|st        j                  d	|fd||f      dt        j                         v st        j                  |      rt        j                  |      nddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |
      dz  }	t        j                  d      dz   d|	iz  }t        t        j                  |            d x}x}
}y # 1 sw Y   xY w)N.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path
flags_paths     r+   <lambda>z0test_summary_phase_token_ratio.<locals>.<lambda><   C    gz*h#h$

	Z
 	Z
 r-   	dev1-teamfulldisclosure_phasez-ssummaryg333333?<=z%(py0)s <= %(py3)sratiopy0py3zsummary ratio z.2fz exceeds 0.30
>assert %(py5)spy5
   )z%(py0)s <= (%(py2)s + %(py4)s)summary_tokensfull_tokens)rK   py2py4z@summary should not exceed full when full is already within limitz
>assert %(py7)spy7N)r,   r   r   SAMPLE_TASK_IDSAMPLE_TASK_DESCr   r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_saferepr_format_assertmsgAssertionError_format_explanation)r(   full_promptsummary_promptrQ   rP   rI   @py_assert2@py_assert1@py_format4@py_format6@py_assert3@py_assert5@py_format8r>   s                @r+   test_summary_phase_token_ratiorj   :   s    *J	? B
 
 
 #)9F
 &$.0@S\

  ,K">2N\),,,Gu}GGGuGGGGGGuGGGuGGGGGGuSkGGGGGGG 02ur!1u~!11uuu~!1uuuuuu~uuu~uuuuuuuuuuuuruuu3uuuuuuuu)
 
s   2IIc                 0   t        |       t        ddfd	      5  t        dt        dz   t        d      }d d d        t              }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)Nr1   c                 t    t        | d      t        | di       t        | dd      | j                         fd   S r3   r8   r;   s     r+   r?   z0test_summary_phase_token_limit.<locals>.<lambda>V   r@   r-   rA   z-limrE   rC   iX  rF   rH   tokensrJ   zsummary tokens z exceeds 600 limitrM   rN   rU   )r,   r   r   rV   rW   r   rX   rY   rZ   r[   r\   r]   r^   r_   r`   )r(   promptrm   rc   rd   re   rf   r>   s          @r+   test_summary_phase_token_limitro   T   s     *J	? B
 
 
 &02BU^

 6"FF6S=FFF6SFFFFFF6FFF6FFFSFFFOF83EFFFFFFF
 
s   DDc           	      ,   t        |       t        ddfd	      5  dD ]\  }t        dt         d| t        |      }d}||v }|st        j                  d|fd	||f      t        j                  |      d
t        j                         v st        j                  |      rt        j                  |      nd
dz  }t        j                  d| d      dz   d|iz  }t        t        j                  |            d x}}d}||v }|st        j                  d|fd	||f      t        j                  |      d
t        j                         v st        j                  |      rt        j                  |      nd
dz  }t        j                  d| d      dz   d|iz  }t        t        j                  |            d x}}d}||v }|st        j                  d|fd	||f      t        j                  |      d
t        j                         v st        j                  |      rt        j                  |      nd
dz  }t        j                  d| d      dz   d|iz  }t        t        j                  |            d x}}_ 	 d d d        y # 1 sw Y   y xY w)Nr1   c                 t    t        | d      t        | di       t        | dd      | j                         fd   S r3   r8   r;   s     r+   r?   z3test_critical_set_always_included.<locals>.<lambda>f   r@   r-   )rE   standardrB   rA   -rC   u   금지행위)in)z%(py1)s in %(py3)srn   )py1rL   u   '금지행위' not in z promptrM   rN   u	   QC 의무u   'QC 의무' not in u   보고 형식u   '보고 형식' not in rU   )r,   r   r   rV   rW   rX   rY   r]   rZ   r[   r\   r^   r_   r`   )r(   phasern   @py_assert0rc   re   rf   r>   s          @r+   !test_critical_set_always_includedrx   d   s    *J	? B
 
 W 5 	WE!/q8:J]bF "T>V+TTT>VTTT>TTTTTTVTTTVTTTT/EeWG-TTTTTTTN;&(NNN;&NNN;NNNNNN&NNN&NNNN,?wg*NNNNNNN"V?f,VVV?fVVV?VVVVVVfVVVfVVVV0Gwg.VVVVVVVV	WW W Ws   I#J

Jc           	      D   t        |       t        ddfd	      5  t        dt        dz   t        d      }t        dt        dz   t        d      }d d d        t              }t              }||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                  |      rt        j                  |      ndt        j                  |      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                  |      dz  }t        j                  d      dz   d|iz  }t        t        j                  |            d x}x}}y # 1 sw Y   xY w)Nr1   c                 t    t        | d      t        | di       t        | dd      | j                         fd   S r3   r8   r;   s     r+   r?   z-test_flag_disabled_fallback.<locals>.<lambda>x   r@   r-   rA   z-f1rB   rC   z-f2rE   )==)zN%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py8)s
{%(py8)s = %(py5)s(%(py6)s)
}r   ra   rb   )rK   ru   rL   rN   py6py8z-Flag disabled: summary should be same as fullz
>assert %(py10)spy10rU   )r/   r   r   rV   rW   r   rX   rY   rZ   r[   r\   r]   r^   r_   r`   )	r(   ra   rb   rc   @py_assert7@py_assert4@py_format9@py_format11r>   s	           @r+   test_flag_disabled_fallbackr   v   s   !(+J	? B
 
 
 #%/1ATZ
 &%/1AT]

 % 8~)F 8%)FF 8 8&7&78%)F 8 8178 877  8 8.7i  8 8178 877 % 8 8.7i % 8 8.7i & 8 8178 877 *7 8 8.7i *7 8 8178 877 8F 8 8.7i 8F 8 8.7i *G 8 8&7&778 8 8$7$78 8 8
 
s   5HH)__doc__builtinsrZ   _pytest.assertion.rewrite	assertionrewriterX   sysr$   unittest.mockr   r=   insertprompts.team_promptsr   r   r   rV   rW   r,   r/   rj   ro   rx   r    r-   r+   <module>r      s^    ,   
   ( ) J J #q (*v4G W$8r-   