
    (<i]                     v    d Z ddlZddlmZ ddlZ ed      ZdhZ G d d      Z G d d	      Z G d
 d      Z	y)u   task-1058.1: Before Starting 명칭 통일 테스트

모든 SKILL.md 파일에서 "시작 전 확인" 섹션이 "Before Starting"으로 통일되었는지 검증.
    N)Pathz/home/jay/.claude/skillszconversion-copywriterc                       e Zd ZdZej
                  dee   fd       Zdee   ddfdZ	dee   ddfdZ
dee   ddfdZdee   ddfd	Zdee   ddfd
Zy)TestBeforeStartingUnificationu(   Before Starting 명칭 통일 테스트.returnc                 >    t        t        j                  d            S )u   모든 SKILL.md 파일 목록.
*/SKILL.md)list
SKILLS_DIRglob)selfs    W/home/jay/workspace/.worktrees/task-2057-dev2/tests/test_task_1058_1_before_starting.pyskill_filesz)TestBeforeStartingUnification.skill_files   s     JOOL122    r   Nc                 .    t        |      dkD  sJ d       y)u$   SKILL.md 파일이 존재해야 함.r   u   SKILL.md 파일이 없음N)len)r   r   s     r   test_all_skill_files_existz8TestBeforeStartingUnification.test_all_skill_files_exist   s    ;!#@%@@#r   c                    t        j                  dt         j                        }g }|D ]X  }|j                  j                  t
        v r 	 |j                  d      }|j                  |      }|r|j                  ||f       Z t        |      dk(  s#J ddj                  d	 |dd
 D              z          y# t        $ r!}|j                  |d| gf       Y d}~d}~ww xY w)uG   모든 파일에서 '시작 전 확인' 섹션 헤더가 없어야 함.u   ^## .*시작 전.*$utf-8encodingzError: Nr   u-   한국어 '시작 전 확인' 섹션 발견:

c              3   2   K   | ]  \  }}d | d|   yw)z  : N ).0fms      r   	<genexpr>zOTestBeforeStartingUnification.test_no_korean_before_starting.<locals>.<genexpr>/   s'      c
"ab2aSMc
s   
   )recompile	MULTILINEparentnameDEPRECATED_SKILLS	read_textfindallappend	Exceptionr   join)r   r   korean_pattern
violationsfilepathcontentmatcheses           r   test_no_korean_before_startingz<TestBeforeStartingUnification.test_no_korean_before_starting   s    $:BLLI
# 	?H##'88?",,g,>(009%%x&9:	? :!# 	
'UY]YbYb c
&0"oc
 Z
 &
 	
#  ?!!8sm_"=>>?s   
8B66	C ?CC c                 J   t        j                  dt         j                        }g }|D ]T  }|j                  j                  t
        v r 	 |j                  d      }|j                  |      r|j                  |       V t        |      dkD  sJ d       y# t        $ r Y xw xY w)uD   'Before Starting' 섹션이 있으면 일관된 형식이어야 함.z^## Before Starting$r   r   r   u1   Before Starting 섹션을 가진 파일이 없음N)r    r!   r"   r#   r$   r%   r&   searchr(   r)   r   )r   r   patternfiles_with_before_startingr-   r.   s         r   test_before_starting_consistentz=TestBeforeStartingUnification.test_before_starting_consistent3   s    **4bllC%'"# 
	H##'88",,g,>>>'*.55h?
	 -.2g4gg2	  s   
4B	B"!B"c                 B   t        j                  dt         j                        }|dd D ]d  }|j                  j                  t
        v r 	 |j                  d      }|j                  |      r!d|j                  dd      d	   vs
J d
|        f y# t        $ r Y sw xY w)u5   YAML frontmatter가 변경되지 않았는지 확인.z^---\n.*?\n---Nr   r   r   u   시작 전 확인z---
   u7   YAML frontmatter 내부에 '시작 전 확인' 있음: )
r    r!   DOTALLr#   r$   r%   r&   matchsplitr)   )r   r   yaml_patternr-   r.   s        r   test_yaml_frontmatter_unchangedz=TestBeforeStartingUnification.test_yaml_frontmatter_unchangedG   s    zz"3RYY?#CR( 	H##'88",,g,>%%g. ,7==!3LR3PP\PQYPZ[\P	  s   AB	BBc                    t        j                  dt         j                  t         j                  z        }|dd D ]|  }|j                  j
                  t        v r 	 |j                  d      }|j                  |      }|r7|j                  d      j                         }t        |      dkD  s
J d|        ~ y# t        $ r Y w xY w)	u+   섹션 내용이 보존되었는지 확인.z%^## Before Starting\n(.+?)(?=^## |\Z)Nr   r   r      r   u(   Before Starting 섹션이 비어있음: )r    r!   r"   r:   r#   r$   r%   r&   r3   groupstripr   r)   )r   r   r4   r-   r.   r;   section_contents          r   test_section_content_preservedz<TestBeforeStartingUnification.test_section_content_preservedZ   s    **Er||VXV_V_G_`#CR( 	H##'88",,g,>w/&+kk!n&:&:&<O/!3j7_`h_i5jj3	  s   AB;;	CC)__name__
__module____qualname____doc__pytestfixturer	   r   r   r   r1   r6   r>   rD   r   r   r   r   r      s    2^^3T$Z 3 3Ad4j AT A
$t* 
 
,h4: h$ h(4: $ &$t*  r   r   c                       e Zd ZdZddZy)TestChangeSummaryu   변경 요약 테스트.Nc                     d}g d}t        |      |k(  sJ dt        |       d|        |D ]?  }t        |z  dz  }|j                         s |j                  d      }d|v r7J d	|         y
)u   변경된 파일 수 확인.   )zonboarding-crozpaid-adszanalytics-trackingzpaywall-upgrade-croz
cold-emailzcompetitor-alternativeszcopy-editingzlaunch-strategyzsocial-contentzfree-tool-strategyzlead-magnetsz	popup-crozad-creativezsite-architecturezform-crozchurn-preventionzreferral-programzschema-markupzab-test-setupzsales-enablementrevopszai-seozemail-sequenceu    변경된 파일 수 불일치: z != zSKILL.mdr   r   z## Before Startingu   Before Starting 섹션 없음: N)r   r
   existsr&   )r   expected_countchanged_files
skill_namer-   r.   s         r   test_change_countz#TestChangeSummary.test_change_countq   s     
4 =!^3  	A7WX[\iXjWkkop~o  6A  	A3 ( 	gJ!J.;H ",,g,>+w6f:YZdYe8ff6		gr   r   N)rE   rF   rG   rH   rT   r   r   r   rL   rL   n   s    "'gr   rL   c                       e Zd ZdZddZy)TestIntegrationu   통합 테스트.Nc                    t        t        j                  d            }|D ]y  }|j                  j                  t
        v r 	 |j                  d      }t        |      dkD  s
J d|        t        j                  d|t        j                        s
J d|        { y
# t        $ r%}t        j                  d| d	|        Y d
}~d
}~ww xY w)u.   모든 SKILL.md 파일이 유효한지 확인.r   r   r   r   u   빈 파일: z^## u   섹션 헤더 없음: u   유효하지 않은 파일 r   N)r	   r
   r   r#   r$   r%   r&   r   r    r3   r"   r)   rI   fail)r   r   r-   r.   r0   s        r   test_all_skill_md_files_validz-TestIntegration.test_all_skill_md_files_valid   s    :??<89# 	KH##'88K",,g,>7|a'B<z)BB'yy'2<<@eDZ[cZdBee@	K  K9(2aSIJJKs   AB	C'CCrU   )rE   rF   rG   rH   rZ   r   r   r   rW   rW      s    Kr   rW   )
rH   r    pathlibr   rI   r
   r%   r   rL   rW   r   r   r   <module>r\      sQ   
 
  ,-
 -- Z Zz*g *gZK Kr   