
    (<i                       d Z ddlmZ ddlZddlZddlmZ  ed      Z ee      ej                  vr"ej                  j                  d ee             ddlmZ  ej                  dedz        Zeej                   J  ej"                  e      Zej                   j'                  e       ej(                  Zej*                  Zd Zd	 Zd
 ZddZddZddZd Zy)u   skill-quality-check.py 단위 테스트.

테스트 대상:
- parse_frontmatter(text) — YAML frontmatter 파싱
- check_skill(skill_name, skill_dir, registry, eval_axes) — 단일 스킬 검증
- main() --summary 모드 실행 (subprocess)
    )annotationsN)Pathz/home/jay/workspace/scriptsskill_quality_checkskill-quality-check.pyc                 ~    d} t        |       }|J t        |t              sJ d|v sJ |d   dk(  sJ |d   dk(  sJ y)uZ   정상 frontmatter 파싱 시 description 필드가 포함된 dict를 반환해야 한다.uZ   ---
name: my-skill
description: 테스트용 스킬 설명
version: 1.0
---
본문 내용
Ndescriptionu   테스트용 스킬 설명namezmy-skillparse_frontmatter
isinstancedicttextresults     O/home/jay/workspace/.worktrees/task-2057-dev2/tests/test_skill_quality_check.pytest_parse_frontmatter_validr   (   se    D t$Ffd###F"""- $@@@@&>Z'''    c                 j    d} t        |       }|J t        |t              sJ d|vsJ |d   dk(  sJ y)uY   description이 없는 frontmatter 파싱 시 dict에 description 키가 없어야 한다.u0   ---
name: no-desc-skill
version: 2.0
---
본문
Nr   r	   zno-desc-skillr
   r   s     r   %test_parse_frontmatter_no_descriptionr   ?   sQ    D t$Ffd###&&&&>_,,,r   c                 &    d} t        |       }|J y)uN   frontmatter 구분자(---)가 없는 텍스트는 None을 반환해야 한다.u5   그냥 본문만 있는 마크다운 파일입니다.N)r   r   s     r   test_parse_frontmatter_noner   T   s    BDt$F>>r   c                   d}| |z  }|j                          |dz  }|j                  dd       |d|ii}i }t        ||||      }|j                  dk(  sJ |j                  du sJ |j
                  du sJ |j                  du sJ y	)
uX   SKILL.md 존재 + 유효 frontmatter + registry 등록 시 verdict가 PASS여야 한다.zmy-test-skillSKILL.mduA   ---
name: my-test-skill
description: 테스트 설명
---
본문
utf-8encodingr	   PASSTNmkdir
write_textcheck_skillverdicthas_skill_mdfrontmatter_validregistry_syncedtmp_path
skill_name	skill_dirskill_mdregistry	eval_axesr   s          r   test_check_skill_passr-   `   s     J:%IOO:%HP  
 VZ01HIY)DF>>V###$&&&##t+++!!T)))r   c                    d}| |z  }|j                          |d|ii}i }t        ||||      }|j                  dk(  sJ |j                  du sJ y)uC   SKILL.md가 없는 디렉토리는 verdict가 FAIL이어야 한다.zmissing-skillmdr	   FAILFN)r   r!   r"   r#   )r'   r(   r)   r+   r,   r   s         r    test_check_skill_fail_no_skillmdr0   |   sg    "J:%IOO VZ01HIY)DF>>V###%'''r   c                   d}| |z  }|j                          |dz  }|j                  dd       i }i }t        ||||      }|j                  dk(  sJ |j                  du sJ |j
                  du sJ |j                  du sJ y	)
uV   SKILL.md는 존재하지만 registry에 미등록 시 verdict가 WARN이어야 한다.zunregistered-skillr   uC   ---
name: unregistered-skill
description: 설명 있음
---
본문
r   r   WARNTFNr   r&   s          r   !test_check_skill_warn_no_registryr3      s    %J:%IOO:%HR   HIY)DF>>V###$&&&##t+++!!U***r   c                 p   t        t        dz        } t        j                  t        j
                  | dgddd      }|j                  dv s.J d|j                   d|j                   d	|j                          |j                  |j                  z   }d
|v s!J d|j                   d	|j                          y)uk   --summary 옵션으로 스크립트를 실행했을 때 정상 출력(exit 0 또는 1)이 나와야 한다.r   z	--summaryT   )capture_outputr   timeout)r      u   예상치 못한 exit code: z	
stdout: z	
stderr: u   스킬 품질 검증 요약u+   요약 헤더가 출력에 없음.
stdout: N)	str_SCRIPTS_DIR
subprocessrunsys
executable
returncodestdoutstderr)script_pathproccombineds      r   test_summary_runsrE      s    l%==>K>>	k2	D ??f$ 
&t&7 8;;-z$++	8$ {{T[[(H(H4 
6t{{m:dkk][4r   )r'   r   )__doc__
__future__r   r;   r=   pathlibr   r:   r9   pathinsertimportlib.utilutil_iluspec_from_file_location_specloadermodule_from_spec_modexec_moduler   r!   r   r   r   r-   r0   r3   rE    r   r   <module>rU      s    #  
  12|CHH$HHOOAs<() $$$++	 U\\5 55tU#    ** (.-**8(*+:r   