
    B2i^              	           d Z ddlZddlmc mZ ddlZddlZdZ	ej                  j                  e	dd      Zddededz  dedz  d	efd
Zd Zd Zd Zd Zd Zd Zd Zd Zy)u   
test_finish_task_g3_gate.py — finish-task.sh L306~L363 G3 gate 레벨 판정 로직 테스트
작성자: 아르고스 (QA 테스터)
태스크: task-2081
    Nz/home/jay/workspacescriptszfinish-task.shtask_idtimers_datatask_file_contentreturnc                 d  	 d	|rV|j                  d|      }|j                  | i       }|j                  dd      xs dj                         j                         		s|rt        j                  d|t        j
                        }|rl|j                  d      j                         j                         }d|v rd	n8d|v rd	n1t        j                  d|      rd		nt        j                  d
|      rd	d}t        	fd|D              }|s!	rt        t        j                  d	            }|rdS dS )u=   finish-task.sh L307-346의 레벨 판정 Python 로직 재현 tasks
work_levelu   ## 레벨\s*\n(.*?)(?=\n## |\Z)   criticalsecurityzlv\.?4|level\s*4lv4zlv\.?3|level\s*3lv3)r   r   r   r   zlv.3zlv.4c              3   &   K   | ]  }|v  
 y w)N ).0kwlevels     5/home/jay/workspace/tests/test_finish_task_g3_gate.py	<genexpr>z%resolve_task_level.<locals>.<genexpr>,   s     4u4s   zlevel\s*[34]lv3plusbelow)	getstriplowerresearchDOTALLgroupanybool)
r   r   r   r
   tmsectionlv3_keywordsis_lv3r   s
            @r   resolve_task_levelr(      s   E 5IIgr"|R(.B557==? &II8:KRYYWggaj&&(..0GW$"w&".8.8 JL4|44Febii789+G+    c                  z   ddddiii} t        d|       }d}||k(  }|st        j                  d|fd||f      d	t        j                         v st        j
                  |      rt        j                  |      nd	t        j                  |      d
z  }dd|iz  }t        t        j                  |            dx}}y)u5   task-timers.json에 work_level='critical' → lv3plusr
   	task-2081r   r   r   r   ==z%(py0)s == %(py3)sresultpy0py3assert %(py5)spy5N	r(   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationr   r0   @py_assert2@py_assert1@py_format4@py_format6s         r   )test_level_detection_from_timers_criticalrD   7        	j
K  EF6Y6Y66Yr)   c                  z   ddddiii} t        d|       }d}||k(  }|st        j                  d|fd||f      d	t        j                         v st        j
                  |      rt        j                  |      nd	t        j                  |      d
z  }dd|iz  }t        t        j                  |            dx}}y)u1   task-timers.json에 work_level='normal' → belowr
   r+   r   normalr,   r   r-   r/   r0   r1   r4   r5   Nr6   r?   s         r   'test_level_detection_from_timers_normalrH   D   s     	h
K  EF6W6W66Wr)   c                  z   ddddiii} t        d|       }d}||k(  }|st        j                  d|fd||f      d	t        j                         v st        j
                  |      rt        j                  |      nd	t        j                  |      d
z  }dd|iz  }t        t        j                  |            dx}}y)u!   work_level='security' → lv3plusr
   z	task-9999r   r   r,   r   r-   r/   r0   r1   r4   r5   Nr6   r?   s         r   )test_level_detection_from_timers_securityrJ   Q   rE   r)   c                     ddddiii} d}t        d| |      }d}||k(  }|st        j                  d|fd	||f      d
t        j                         v st        j
                  |      rt        j                  |      nd
t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}}y)u@   work_level='' + task 파일에 ## 레벨\n- critical → lv3plusr
   r+   r   r	   uW   # task-2081

## 개요
작업 내용

## 레벨
- critical

## 작업 목록
- 항목1
)r   r   r   r-   r/   r0   r1   r4   r5   Nr6   )r   r   r0   r@   rA   rB   rC   s          r   'test_level_detection_fallback_task_filerL   ^   s     	b
K |+F
 6Y6Y66Yr)   c                  z   ddddiii} t        d|       }d}||k(  }|st        j                  d|fd||f      d	t        j                         v st        j
                  |      rt        j                  |      nd	t        j                  |      d
z  }dd|iz  }t        t        j                  |            dx}}y)u   work_level='lv1' → belowr
   r+   r   lv1r,   r   r-   r/   r0   r1   r4   r5   Nr6   r?   s         r   test_level_detection_lv1_belowrO   p        	e
K  EF6W6W66Wr)   c                  z   ddddiii} t        d|       }d}||k(  }|st        j                  d|fd||f      d	t        j                         v st        j
                  |      rt        j                  |      nd	t        j                  |      d
z  }dd|iz  }t        t        j                  |            dx}}y)u   work_level='lv2' → belowr
   r+   r   lv2r,   r   r-   r/   r0   r1   r4   r5   Nr6   r?   s         r   test_level_detection_lv2_belowrS   }   rP   r)   c                  h   t         j                  } | j                  } |t              }|st	        j
                  dt               dz   dt        j                         v st	        j                  t               rt	        j                  t               ndt	        j                  |       t	        j                  |      dt        j                         v st	        j                  t              rt	        j                  t              ndt	        j                  |      dz  }t        t	        j                  |            dx} x}}t        t        dd	      5 }|j                         }ddd       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z   d|iz  }	t        t	        j                  |	            dx}}y# 1 sw Y   xY w)u?   finish-task.sh에 'G3-GATE' 문자열이 존재하는지 확인   finish-task.sh 파일 없음: d
>assert %(py7)s
{%(py7)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.path
}.isfile
}(%(py5)s)
}osFINISH_TASK_PATHr2   py2py4r5   py7Nrutf-8encodingzG3-GATEinz%(py1)s in %(py3)scontentpy1r3   u5   finish-task.sh에 'G3-GATE' 문자열이 없습니다
>assert %(py5)sr5   rW   pathisfilerX   r7   _format_assertmsgr9   r:   r;   r<   r=   r>   openreadr8   
rA   @py_assert3@py_assert6@py_format8frd   @py_assert0r@   rB   rC   s
             r   *test_g3_gate_section_exists_in_finish_taskrt      s=   77`7>>`>*+`+``/MN^M_-```````2```2```7```>``````*```*```+``````	g	6 !&&(X9XXX9XXX9XXXXXXXXXXXXX!XXXXXXX    H((H1c                  h   t         j                  } | j                  } |t              }|st	        j
                  dt               dz   dt        j                         v st	        j                  t               rt	        j                  t               ndt	        j                  |       t	        j                  |      dt        j                         v st	        j                  t              rt	        j                  t              ndt	        j                  |      dz  }t        t	        j                  |            dx} x}}t        t        dd	      5 }|j                         }ddd       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z   d|iz  }	t        t	        j                  |	            dx}}y# 1 sw Y   xY w)uO   finish-task.sh에 'g3_independent_verifier.py' 호출이 존재하는지 확인rU   rV   rW   rX   rY   Nr]   r^   r_   zg3_independent_verifier.pyra   rc   rd   re   uE   finish-task.sh에 'g3_independent_verifier.py' 호출이 없습니다rg   r5   rh   rn   s
             r   test_g3_gate_calls_verifierrw      s   77`7>>`>*+`+``/MN^M_-```````2```2```7```>``````*```*```+``````	g	6 !&&(' P'72 P>O>OP'7 P PFOi ( P PIOP P7O7O ,3 P PFOi ,3 P P>O>OOP P P<O<OP P ru   )NN)__doc__builtinsr9   _pytest.assertion.rewrite	assertionrewriter7   rW   r   WORKSPACE_ROOTri   joinrX   strdictr(   rD   rH   rJ   rL   rO   rS   rt   rw   r   r)   r   <module>r      s     	 	&77<<	;KL , ,$+ ,Y\_cYc ,or ,J


$

YPr)   