
    Si                         d Z ddlZddlZddlmZ ddlZ ee      j                  j                  Zej                  j                  d ee             ddlmZ  G d d      Zy)u  
test_dispatch_phase_warn.py

dispatch._warn_phase_without_task_id() 단위 테스트 (헤임달 작성, task-1894)

테스트 항목:
1. Phase 패턴 + 자동 생성 ID → WARNING 로그 출력됨
2. Phase 패턴 + 수동 지정 ID → 경고 미출력
3. Phase 패턴 없는 일반 task → 경고 미출력
4. 다양한 Phase 패턴 매칭 (Phase 1, phase 2, Phase 1.1, Phase 2.3)
5. Phase가 없는 유사 텍스트 → 미감지 (Phases, phased)
    N)Path_warn_phase_without_task_idc                   X    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)TestWarnPhaseWithoutTaskIdu+   _warn_phase_without_task_id() 동작 검증c                     d}|j                  t        j                  d      5  t        d||       ddd       d|j                  v sJ y# 1 sw Y   xY w)uh   Phase 패턴이 감지되고 task_id가 자동 생성 ID와 동일하면 WARNING 로그가 출력된다.auto-20240101-abcddispatchloggeru:   Phase 1 작업입니다. 기능 구현을 완료하세요.	task_desctask_idgenerated_idN   Phase 작업 감지at_levelloggingWARNINGr   textselfcaplogauto_ids      O/home/jay/workspace/.worktrees/task-2117-dev1/tests/test_dispatch_phase_warn.py6test_phase_pattern_with_auto_generated_id_logs_warningzQTestWarnPhaseWithoutTaskId.test_phase_pattern_with_auto_generated_id_logs_warning&   sU    &__W__Z_@ 	'V$	 %333	 	   AAc                     |j                  t        j                  d      5  t        ddd       ddd       d|j                  vsJ y# 1 sw Y   xY w)	us   Phase 패턴이 있어도 task_id가 수동 지정(generated_id와 다름)이면 WARNING이 출력되지 않는다.r
   r   u"   Phase 2 작업을 시작합니다.z	task-1894r	   r   Nr   r   r   r   s     r   1test_phase_pattern_with_manual_task_id_no_warningzLTestWarnPhaseWithoutTaskId.test_phase_pattern_with_manual_task_id_no_warning2   sP    __W__Z_@ 	'>#1	 %FKK777	 	   A

Ac                     d}|j                  t        j                  d      5  t        d||       ddd       d|j                  vsJ y# 1 sw Y   xY w)uW   Phase 패턴이 없는 일반 작업 설명에서는 WARNING이 출력되지 않는다.r	   r
   r   uJ   일반 버그 수정 작업입니다. 로그인 오류를 고쳐주세요.r   Nr   r   r   s      r    test_no_phase_pattern_no_warningz;TestWarnPhaseWithoutTaskId.test_no_phase_pattern_no_warning=   sU    &__W__Z_@ 	'f$	 %FKK777	 	r   c                     d}|j                  t        j                  d      5  t        d||       ddd       d|j                  v sJ y# 1 sw Y   xY w)u!   'Phase 1' 패턴이 감지된다.zauto-gen-001r
   r   u"   Phase 1을 완료해야 합니다.r   Nr   r   r   s      r   $test_phase_pattern_uppercase_integerz?TestWarnPhaseWithoutTaskId.test_phase_pattern_uppercase_integerI   U     __W__Z_@ 	'>$	 %333	 	r   c                     d}|j                  t        j                  d      5  t        d||       ddd       d|j                  v sJ y# 1 sw Y   xY w)u+   'phase 2' 소문자 패턴이 감지된다.zauto-gen-002r
   r   u"   phase 2 구현을 시작합니다.r   Nr   r   r   s      r   $test_phase_pattern_lowercase_integerz?TestWarnPhaseWithoutTaskId.test_phase_pattern_lowercase_integerU   r&   r   c                     d}|j                  t        j                  d      5  t        d||       ddd       d|j                  v sJ y# 1 sw Y   xY w)u-   'Phase 1.1' 소수점 패턴이 감지된다.zauto-gen-003r
   r   u.   Phase 1.1 디자인 리뷰를 진행합니다.r   Nr   r   r   s      r   test_phase_pattern_decimal_1_1z9TestWarnPhaseWithoutTaskId.test_phase_pattern_decimal_1_1a   sU     __W__Z_@ 	'J$	 %333	 	r   c                     d}|j                  t        j                  d      5  t        d||       ddd       d|j                  v sJ y# 1 sw Y   xY w)u-   'Phase 2.3' 소수점 패턴이 감지된다.zauto-gen-004r
   r   u?   이번 스프린트는 Phase 2.3 완료를 목표로 합니다.r   Nr   r   r   s      r   test_phase_pattern_decimal_2_3z9TestWarnPhaseWithoutTaskId.test_phase_pattern_decimal_2_3m   sU     __W__Z_@ 	'[$	 %333	 	r   c                     d}|j                  t        j                  d      5  t        d||       ddd       d|j                  vsJ y# 1 sw Y   xY w)uA   'Phases'(복수형)는 Phase 패턴으로 감지되지 않는다.zauto-gen-005r
   r   z.Phases of the project are defined in the docs.r   Nr   r   r   s      r   test_phases_plural_not_detectedz:TestWarnPhaseWithoutTaskId.test_phases_plural_not_detectedy   sU     __W__Z_@ 	'J$	 %FKK777	 	r   c                     d}|j                  t        j                  d      5  t        d||       ddd       d|j                  vsJ y# 1 sw Y   xY w)uA   'phased'(파생어)는 Phase 패턴으로 감지되지 않는다.zauto-gen-006r
   r   z2This is a phased rollout plan for the new feature.r   Nr   r   r   s      r   test_phased_word_not_detectedz8TestWarnPhaseWithoutTaskId.test_phased_word_not_detected   sU     __W__Z_@ 	'N$	 %FKK777	 	r   c                 ,    d}t        d||      }|J y)uM   함수는 경고만 출력하고 None을 반환한다 (작업 차단 없음).zauto-gen-007u)   Phase 3 배포 작업을 진행합니다.r   Nr   )r   r   results      r   )test_function_does_not_block_returns_nonezDTestWarnPhaseWithoutTaskId.test_function_does_not_block_returns_none   s&     ,A 

 ~~    c                     d}|j                  t        j                  d      5  t        d||       ddd       d|j                  v sJ y# 1 sw Y   xY w)uK   task_id와 generated_id가 정확히 같을 때만 WARNING이 발생한다.auto-xyz-9999r
   r   &   Phase 4 최종 검수 단계입니다.r   Nr   r   )r   r   same_ids      r   ;test_task_id_exactly_equal_to_generated_id_triggers_warningzVTestWarnPhaseWithoutTaskId.test_task_id_exactly_equal_to_generated_id_triggers_warning   sU    !__W__Z_@ 	'B$	 %333	 	r   c                     |j                  t        j                  d      5  t        ddd       ddd       d|j                  vsJ y# 1 sw Y   xY w)	uK   task_id와 generated_id가 다를 때는 WARNING이 발생하지 않는다.r
   r   r7   z	task-1000r6   r   Nr   r   r   s     r   1test_task_id_differs_from_generated_id_no_warningzLTestWarnPhaseWithoutTaskId.test_task_id_differs_from_generated_id_no_warning   sP    __W__Z_@ 	'B#,	 %FKK777	 	r!   N)__name__
__module____qualname____doc__r   r    r#   r%   r(   r*   r,   r.   r0   r3   r9   r;    r4   r   r   r   "   sA    5	48	8	4	4	4	4	8	8	48r4   r   )r?   r   syspathlibr   pytest__file__parent
_WORKSPACEpathinsertstrr
   r   r   r@   r4   r   <module>rJ      sT     
   (^""))
 3z? # 0M8 M8r4   