
    im              
          d Z ddlZddlZddlZej                  j                  dej                  j                  ej                  j                  e      d             ej                  j                  dej                  j                  ej                  j                  e      dddd             ddl	Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zy)u&   P2-4: TRUST 5 태그 단위 테스트.    Nz..teamsdev1qcc                  T    ddl m}  h d}t        | j                               |k(  sJ y)u3   TRUST_MAP이 5차원 모두 포함하는지 확인.r   	TRUST_MAP>   TestedSecuredUnifiedReadable	TrackableN)teams.dev1.qc.qc_verifyr   setkeys)r   expecteds     //home/jay/workspace/tests/test_trust_tagging.py&test_trust_map_contains_all_dimensionsr      s$    1HHy~~ H,,,    c                      ddl m}  d| d   v sJ d| d   v sJ d| d   v sJ d| d   v sJ d	| d
   v sJ d| d   v sJ d| d   v sJ d| d   v sJ y)u;   각 verifier가 올바른 차원에 매핑되는지 확인.r   r   test_runnerr	   	tdd_checkstyle_checkr   pyright_checkscope_checkr   schema_contractr
   data_integrityr   
file_checkN)r   r   r   s    r   test_trust_map_verifier_mappingr      s    1Ih////)H----Ij1111i
3333Ii0000	) 4444y55559[1111r   c                  n    ddl m} m} |j                         D ]  \  }}d|vrJ d| d        d| v sJ y)u8   api_health가 _independent에만 포함되는지 확인.r   TRUST_INDEPENDENTr   
api_healthu   api_health가 u   에 포함됨N)r   r!   r   items)r!   r   	dimension	verifierss       r   test_api_health_in_independentr&   #   sM    D ) 1 X	99,Wyk.WW,X,,,,r   c            
          ddl m}  ddiddiddiddiddiddiddiddiddid	} | |      }|d   d   du sJ |d	   d   du sJ |d
   d   du sJ |d   d   du sJ |d   d   du sJ d|v sJ y)u<   모든 verifier가 PASS일 때 모든 차원이 passed=True.r   _build_trust_summarystatusPASS	r   r   r   r   r   r   r   r   r"   r	   passedTr   r   r
   r   _independentNr   r)   r)   checkssummarys      r   !test_build_trust_summary_all_passr3   ,   s    < !&)' &)"F+ &)$f-#V,((
F #6*G8X&$...:x(D0009h'4///9h'4///;)T111W$$$r   c            	          ddl m}  ddiddiddiddiddiddiddiddid} | |      }|d   d   d	u sJ |d
   d   du sJ y)u?   하나의 verifier가 FAIL이면 해당 차원만 passed=False.r   r(   r*   FAILr+   r   r   r   r   r   r   r   r   r	   r-   Fr   TNr/   r0   s      r   !test_build_trust_summary_one_failr7   D   s    < !&)' &)"F+ &)$f-#V,(	F #6*G8X&%///:x(D000r   c            	          ddl m}  ddiddiddiddiddiddiddiddid} | |      }|d   d   d	u sJ |d
   d   d	u sJ y)u@   SKIP 상태의 verifier는 차원 실패로 간주하지 않음.r   r(   r*   SKIPr+   r6   r	   r-   Tr
   Nr/   r0   s      r   &test_build_trust_summary_skip_not_failr:   W   s    < !&)' &)"F+ &)$f-#V,(	F #6*G8X&$...9h'4///r   c            	         ddl m}  ddiddiddiddiddiddiddiddid} | |      }t        |      dk(  sJ dD ]D  }d||   v sJ d	||   v sJ t        ||   d   t              sJ t        ||   d	   t
              rDJ  d
|d   v sJ y)u.   trust_summary JSON 스키마 유효성 검사.r   r(   r*   r+   r6      )r	   r   r   r
   r   r%   r-   noter.   N)r   r)   len
isinstancelistbool)r)   r1   r2   dims       r   test_trust_summary_schemarC   j   s    < !&)' &)"F+ &)$f-#V,(	F #6*Gw<1H 8gcl***73<''''#,{3T:::'#,x0$777	8
 W^,,,,r   c                    ddl m} | dz  }|j                          |dz  }|j                  t	        j
                  dddii             dd	d
ii}t        j                  j                  dd      }t        |       t        j                  d<   	  |d|      }d|vsJ 	 |r|t        j                  d<   yt        j                  j                  dd       y# |r|t        j                  d<   w t        j                  j                  dd       w xY w)u6   feature_flag OFF 시 기존 JSON 변경 없음 확인.r   build_resultz.claudezfeature_flags.jsonflagstrust5_tagging_enabledFr   r*   r+   WORKSPACE_ROOT z	test-tasktrust_summaryN)r   rF   mkdir
write_textjsondumpsosenvirongetstrpop)tmp_pathrF   ff_dirff_filer1   orig_wsresults          r   &test_feature_flag_off_no_trust_summaryrZ      s    4 	!F
LLN++Gtzz7-Eu,M"NOPXv./Fjjnn-r2G#&x=BJJ 3k62f,,,+2BJJ'(JJNN+T2 +2BJJ'(JJNN+T2s   C 8Dc                  R    ddl m}  ddiddid} | d|      }d|v sJ d|d   v sJ y	)
u0   feature_flag ON 시 trust_summary 포함 확인.r   rE   r*   r+   )r   r   ztest-task-onrK   r	   N)r   rF   )rF   r1   rY   s      r   +test_feature_flag_on_includes_trust_summaryr\      sH    4 &v.&?QRF.&1Ff$$$vo....r   c                     ddl m} m} g }|j                         D ]  }|j	                  |        |j	                  |        g d}|D cg c]	  }||vs| }}t        |      t        |      z  }|dk  sJ d|d       yc c}w )u4   원본 9종 verifier 매핑 불일치율 <3% 검증.r   r    r,   gQ?u!   원본 9종 매핑 불일치율: z.1%N)r   r!   r   valuesextendr>   )r!   r   
all_mappedr%   
original_9cunmapped_originaloriginal_mismatchs           r    test_mapping_coverage_original_9re      s    DJ%%' %	)$%'(
J %/Fq!:2EFF-.Z@t#`'HIZ[^H_%``# Gs   
	BB)__doc__rN   rP   syspathinsertjoindirname__file__pytestr   r   r&   r3   r7   r:   rC   rZ   r\   re    r   r   <module>ro      s    ,  	 
 277<< 94@ A 277<< 94&RVW X -2-%01&0&-03./ar   