
    jm                         d Z ddlZddlmc mZ ddlZddlm	Z	 ddl
Z
 e	e      j                         j                  d   Zedz  dz  Z e
j                   d      d	efd
       ZdefdZdefdZdefdZd Zy)u  
test_finish_task_stash_lifecycle_2569.py
MT-T2: RC-3 검증 (finish-task.sh stash audit)
  - _STASH_AUDIT_BEFORE / _STASH_AUDIT_AFTER 박제 라인 존재
  - stash 누적 5개 초과 시 WARN 출력 로직 존재
  - cleanup-audit.jsonl 출력 경로 명시
  - bash -n 문법 검증
    N)Path   scriptszfinish-task.shmodule)scopereturnc                     t         j                  }  |        }|st        j                  dt                dz   dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |       t        j                  |      dz  }t        t        j                  |            d x} }t         j                  d      S )Nu   finish-task.sh 없음: zC
>assert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}FINISH_TASK_SH)py0py2py4zutf-8)encoding)r
   exists
@pytest_ar_format_assertmsg@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation	read_text)@py_assert1@py_assert3@py_format5s      M/home/jay/workspace/tests/regression/test_finish_task_stash_lifecycle_2569.pyfinish_task_contentr      s      N "N"NN&=n=M$NNNNNNN>NNN>NNN NNN"NNNNNN##W#55    r   c                    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}}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	)u_   finish-task.sh에 _STASH_AUDIT_BEFORE 및 _STASH_AUDIT_AFTER 박제 라인이 있어야 한다._STASH_AUDIT_BEFOREinz%(py1)s in %(py3)sr   py1py3ui   _STASH_AUDIT_BEFORE 변수가 finish-task.sh에 없습니다. RC-3 stash audit 구현을 확인하세요.
>assert %(py5)spy5N_STASH_AUDIT_AFTERuh   _STASH_AUDIT_AFTER 변수가 finish-task.sh에 없습니다. RC-3 stash audit 구현을 확인하세요.	r   _call_reprcomparer   r   r   r   r   r   r   r   @py_assert0@py_assert2@py_format4@py_format6s        r   &test_finish_task_has_stash_audit_blockr1      s<      $77   $7    !      %8    %8   	6       #66  #6           $7    $7   	6    r   c                 >   d| v }d| v }g }|}|s|}|sdddt        j                         v st        j                  |      rt        j                  |      ndiz  }|j                  |       |sXdddt        j                         v st        j                  |      rt        j                  |      ndiz  }|j                  |       t        j                  |d	      i z  }t        j                  d
      dz   d|iz  }t        t        j                  |            dx}}y)uV   finish-task.sh에 stash 누적 5개 초과 시 WARN 출력 로직이 있어야 한다.u   stash 누적 감지z-gt 5z%(py2)sr   has_warn_textz%(py4)sr   has_gt_5   u   finish-task.sh에 stash 누적 5개 초과 경고 로직이 없습니다. 'stash 누적 감지' 텍스트 또는 '-gt 5' 조건 중 하나가 필요합니다.
>assert %(py7)spy7N)
r   r   r   r   r   append_format_boolopr   r   r   )	r   r3   r4   r   r-   @py_format3r   r0   @py_format8s	            r   ,test_finish_task_warns_on_stash_accumulationr<   (   s    )-@@M--H= =H                   %    %      	_    r   c                 z   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	)
uU   finish-task.sh에 cleanup-audit.jsonl 출력 경로가 명시되어 있어야 한다.zcleanup-audit.jsonlr!   r#   r   r$   ui   finish-task.sh에 'cleanup-audit.jsonl' 경로가 없습니다. RC-3 audit log 구현을 확인하세요.r'   r(   Nr*   r,   s        r   #test_finish_task_audit_writes_jsonlr>   6   s       $77   $7    !      %8    %8   	4    r   c                  *   t        j                  ddt        t              gdd      } | j                  }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      d	z  }t        j                  d
| j                         dz   d|iz  }t        t        j                  |            dx}x}}y)u?   bash -n으로 finish-task.sh 문법 오류가 없어야 한다.bashz-nT)capture_outputtextr   )==)z2%(py2)s
{%(py2)s = %(py0)s.returncode
} == %(py5)sresult)r   r   r(   u   finish-task.sh 문법 오류:
r6   r7   N)
subprocessrunstrr
   
returncoder   r+   r   r   r   r   r   stderrr   r   )rD   r   @py_assert4r   r0   r;   s         r   "test_finish_task_bash_syntax_validrK   @   s    ^^	s>*+F
   !                    !"    *&--9     r   )__doc__builtinsr   _pytest.assertion.rewrite	assertionrewriter   rE   pathlibr   pytest__file__resolveparents	WORKSPACEr
   fixturerG   r   r1   r<   r>   rK    r   r   <module>rY      s        N""$,,Q/	Y&)99 h6S 6  6	 		c 	S 	r   