
     j              	      J   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 ej.                  j1                  dg d      d        Zej.                  j1                  dg d	      d
        Zd Zd Zd Zy)u   task-2502 회귀: utils.task_id_parser SSOT export 검증.

회장 §7-2 검증 케이스:
- task-2485+1, task-2487+1, task-2494, task-1234.1 → PASS
- invalid id → FAIL

PR #47 partial merge 후 ImportError 차단 회복 evidence.
    )annotationsN)is_valid_task_id_with_legacytask_id)	task-2494ztask-2485+1ztask-2487+1ztask-2469_1.2ztask-2469_1.2_aztask-2469_1.2_a+3ztask-1234.1ztask-9.1ztask-1234.5ztask-648.1.dev1ztask-648.1.dev1.donec                V   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z   d	|iz  }t        t        j                  |            d
x}x}}y
)u-   회장 §7-2: 유효 task id 는 모두 True.Tisz0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} is %(py6)sr   r   py0py1py3py6z should PASS
>assert %(py8)spy8N
r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_saferepr_format_assertmsgAssertionError_format_explanation)r   @py_assert2@py_assert5@py_assert4@py_format7@py_format9s         N/home/jay/workspace/tests/regression/test_task_id_parser_legacy_export_2502.pytest_valid_task_ids_passr"      s    " (0RDR0D8RRR0DRRRRRR'RRR'RRRRRRRRRRRR0RRRDRRRWI\:RRRRRRRR    invalid) r$   ztask-ztask-abcz	TASK-12341234z
not-a-taskc                V   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z   d	|iz  }t        t        j                  |            d
x}x}}y
)u.   회장 §7-2: 무효 task id 는 모두 False.Fr   r
   r   r$   r   z should FAILr   r   Nr   )r$   r   r   r   r   r    s         r!   test_invalid_task_ids_failr(   ,   s     (0UEU0E9UUU0EUUUUUU'UUU'UUUUUUUUUUUU0UUUEUUUg[;UUUUUUUUr#   c                 j   d} t        |       }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                  |      dz  }dd|iz  }t        t        j                  |            dx} x}x}}d	} t        |       }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                  |      dz  }dd|iz  }t        t        j                  |            dx} x}x}}d
g} t        |       }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                  |      dz  }dd|iz  }t        t        j                  |            dx} x}x}}y)u*   비문자열 입력은 안전하게 False.NFr   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} is %(py7)sr   )r   py2py4py7zassert %(py9)spy9i90  r   )	r   r   r   r   r   r   r   r   r   )@py_assert1@py_assert3@py_assert6r   @py_format8@py_format10s         r!   #test_non_string_inputs_return_falser3   :   s   (,6'-66-6666-666666'666'666666-6666666666(-7'.7%7.%7777.%777777'777'777777.777%7777777)4?'6?%?6%????6%??????'???'??????6???%???????r#   c                    t        t              } | sd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} y)uI   SSOT export 자체가 callable 인지 검증 (ImportError 회귀 방어).z,assert %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
}callabler   )r   r   r   N)	r5   r   r   r   r   r   r   r   r   )r   @py_format4s     r!   test_export_is_callabler7   A   sl    01111111181118111111011101111111111r#   c                    ddl } ddlm} | j                  }t	        ||      }|s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dt        j                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      dz  }t        t        j                  |            dx}}y)	uM   _LEGACY_DOTPHASE_PATTERN 상수가 존재하고 compiled regex 인지 검증.r   N)_LEGACY_DOTPHASE_PATTERNzRassert %(py6)s
{%(py6)s = %(py0)s(%(py1)s, %(py4)s
{%(py4)s = %(py2)s.Pattern
})
}
isinstancer9   re)r   r   r*   r+   r   )r;   utils.task_id_parserr9   Patternr:   r   r   r   r   r   r   r   )r;   r9   r/   r   r   s        r!   #test_legacy_pattern_constant_existsr>   F   s    =02

;:.
;;;;;;;;:;;;:;;;;;;.;;;.;;;;;;;;;;;;
;;;;;;;;;;r#   )__doc__
__future__r   builtinsr   _pytest.assertion.rewrite	assertionrewriter   os_ossys_syspathdirnameabspath__file___WROOTremoveinsertpytestr<   r   markparametrizer"   r(   r3   r7   r>    r#   r!   <module>rT      s    #      
		#((**388+;+;CHH<L<LX<V+WX	Y	TYYIIV 		  F   =  % SS
  % VV
@2
<r#   