
     j              	      B   d Z ddlmZ ddlZddlmc mZ ddl	Z
ddlZe
j                  j                  e
j                  j                  e
j                  j                  e
j                  j                  e                        Zeej                  v rej                  j%                  e       ej                  j'                  de       ddlZddlmZmZmZmZmZmZ ej8                  j;                  dg d      d        Zej8                  j;                  dg d      d	        Zej8                  j;                  dg d
      d        Z ej8                  j;                  dg d      d        Z!d Z"ej8                  j;                  dg d      d        Z#d Z$d Z%d Z&d Z'y)u   tests/regression/test_task_id_parser_hardening.py — task-2485 회귀.

task-N+M (retry suffix) 형식이 parser/extractor에서 정상 인식되는지 검증.
    )annotationsN)is_valid_task_idextract_task_id
TASK_ID_RETASK_ID_PATTERNextract_task_id_from_branchextract_task_id_from_filenametid)z	task-2472ztask-1z	task-9999c                   t        |       }|sddt        j                         v st        j                  t               rt        j
                  t               nddt        j                         v st        j                  |       rt        j
                  |       ndt        j
                  |      dz  }t        t        j                  |            d }y )Nz,assert %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
}r   r
   py0py1py3)r   @py_builtinslocals
@pytest_ar_should_repr_global_name	_safereprAssertionError_format_explanationr
   @py_assert2@py_format4s      E/home/jay/workspace/tests/regression/test_task_id_parser_hardening.pytest_legacy_task_id_still_validr      sk    C                 C   C              )task-2472+1task-2472+2task-2467+3ztask-1+0c                   t        |       }|st        j                  |  d      dz   dt        j                         v st        j
                  t               rt        j                  t               nddt        j                         v st        j
                  |       rt        j                  |       ndt        j                  |      dz  }t        t        j                  |            d }y )Nz should be validz.
>assert %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
}r   r
   r   	r   r   _format_assertmsgr   r   r   r   r   r   r   s      r   test_retry_suffix_validr#   "   s~    C : ::SE)9"::::::::::::::::C:::C::: ::::::r   )task-abc
task-2472+task-2472++1ztask- z	TASK-2472z
task--2472c                   t        |       }| }|st        j                  |  d      dz   dt        j                         v st        j
                  t               rt        j                  t               nddt        j                         v st        j
                  |       rt        j                  |       ndt        j                  |      dz  }t        t        j                  |            d x}}y )Nz should NOT be validz2
>assert not %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
}r   r
   r   r!   )r
   r   @py_assert4@py_format5s       r   test_invalid_task_id_rejectedr+   (   s    $B$$B$BB-A&BBBBBBBBBBBBBBBBBBBBBB$BBBBBBr   text)r&   r%   ztask-2472abcc                X   t        |       }d}||u }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               nddt        j                         v st        j
                  |       rt        j                  |       ndt        j                  |      t        j                  |      dz  }t        j                  d| d      d	z   d
|iz  }t        t        j                  |            dx}x}}y)uL   경계 위반 입력에서 task id 를 잘라서 추출하지 않아야 함.Nis)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} is %(py6)sr   r,   )r   r   r   py6z
malformed u8    에서 잘라낸 추출 발생 — 경계 검사 미흡z
>assert %(py8)spy8)
r   r   _call_reprcomparer   r   r   r   r"   r   r   )r,   r   @py_assert5r)   @py_format7@py_format9s         r   &test_extract_task_id_rejects_malformedr6   .   s    4  D  D(    D                          !    %)    THTU     r   c                    d} t        |       }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}}d	} t        |       }d
}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}}y )Nzfoo task-2472+10 barztask-2472+10==z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sr   r   py2py4py7assert %(py9)spy9zfoo task-24720 barz
task-24720	r   r   r2   r   r   r   r   r   r   @py_assert1@py_assert3@py_assert6r3   @py_format8@py_format10s         r   +test_extract_task_id_boundary_no_truncationrH   7   s   1D?12DnD2nDDDD2nDDDDDD?DDD?DDD1DDD2DDDnDDDDDDD/@?/0@L@0L@@@@0L@@@@@@?@@@?@@@/@@@0@@@L@@@@@@@r   ztext,expected))zfoo-task-2472+1-barr   )ztask/task-2467+3-dev6r   )zmemory/tasks/task-2472+2.mdr   )z[task-2472+1] retry merger   )znothing hereNc                x   t        |       }||k(  }|s#t        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               nddt        j                         v st        j
                  |       rt        j                  |       ndt        j                  |      dt        j                         v st        j
                  |      rt        j                  |      nddz  }dd|iz  }t        t        j                  |            d x}}y )	Nr8   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py5)sr   r,   expected)r   r   r   py5zassert %(py7)sr>   rA   )r,   rJ   r   r)   @py_format6rF   s         r   test_extract_task_id_from_textrM   ?   s     4 , H,,,, H,,,,,,?,,,?,,,,,,4,,,4,,, ,,,,,,H,,,H,,,,,,,r   c                    d} t        |       }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}}y )	Nztask/task-2472+1-dev2r   r8   r:   r   r;   r?   r@   )	r   r   r2   r   r   r   r   r   r   rB   s         r   -test_extract_task_id_from_branch_retry_suffixrO   J   s    '>P&'>?P=P?=PPPP?=PPPPPP&PPP&PPP'>PPP?PPP=PPPPPPPr   c                    d} t        |       }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}}y )	Nzmemory/tasks/task-2467+3.mdr   r8   r:   r	   r;   r?   r@   )	r	   r   r2   r   r   r   r   r   r   rB   s         r   /test_extract_task_id_from_filename_retry_suffixrQ   N   s    )FX()FGX=XG=XXXXG=XXXXXX(XXX(XXX)FXXXGXXX=XXXXXXXr   c                    dd l } | j                  }t        t        |      }|sddt	        j
                         v st        j                  t              rt        j                  t              nddt	        j
                         v st        j                  t              rt        j                  t              nddt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      dz  }t        t        j                  |            d x}}t        j                  }d} ||      }d }||u}|st        j                  d|fd	||f      dt	        j
                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x}x}x}x}}t        j                  }d} ||      }d }||u }|st        j                  d|fd||f      dt	        j
                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x}x}x}x}}y )Nr   zRassert %(py6)s
{%(py6)s = %(py0)s(%(py1)s, %(py4)s
{%(py4)s = %(py2)s.Pattern
})
}
isinstancer   re)r   r   r<   r=   r0   r   is notzO%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.match
}(%(py4)s)
} is not %(py9)sr   r<   r=   r0   r@   assert %(py11)spy11r$   r.   )zK%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.match
}(%(py4)s)
} is %(py9)s)rT   PatternrS   r   r   r   r   r   r   r   r   matchr2   )	rT   rD   r3   r4   rC   @py_assert8@py_assert7rG   @py_format12s	            r   #test_TASK_ID_RE_is_compiled_patternr`   R   s   "$**-:j*--------:---:------j---j------"---"---*----------6M6M*6$6*$6666*$666666:666:666666M666*666$6666666/J/J'/4/'4////'4//////:///://////J///'///4////////r   c                    t        t        t              } | sddt        j                         v st        j                  t               rt        j                  t               nddt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  t              rt        j                  t              ndt        j                  |       dz  }t        t        j                  |            d } dd l
}|j                  t              }|j                  }d}  ||       }d }||u}|st        j                  d|fd	||f      d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      t        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }	t        t        j                  |	            d x}x} x}x}}y )Nz5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}rS   r   str)r   r   r<   r=   r   r   rU   rW   prX   rY   rZ   )rS   r   rb   r   r   r   r   r   r   r   rT   compiler\   r2   )
rD   r*   rT   rc   rC   r3   r]   r^   rG   r_   s
             r   test_TASK_ID_PATTERN_is_stringre   Z   s3   os++++++++:+++:++++++o+++o++++++s+++s++++++++++


?#A77-=-7=!--!----!------1---1---7---=---!-----------r   )(__doc__
__future__r   builtinsr   _pytest.assertion.rewrite	assertionrewriter   os_ossys_syspathdirnameabspath__file___WROOTremoveinsertpytestutils.task_id_parserr   r   r   r   r   r	   markparametrizer   r#   r+   r6   rH   rM   rO   rQ   r`   re    r   r   <module>r|      s   #      
		#((**388+;+;CHH<L<LX<V+WX	Y	TYYIIV 		  F     DE! F!
  YZ; [;
  rsC tC
 !OP QA  + --QY0.r   