
    i6                         d Z ddlZddlmc mZ ddlZddlm	Z	m
Z
 g dZej                  j                  de      d        Zej                  j                  dg d      d	        Zd
 Zd Zd Zy)uF   task-2487+1 dot-phase 호환 픽스 — 소비자 단위 매트릭스.    N)is_valid_task_idis_valid_task_id_with_legacy)ztask-9.1ztask-648.1.dev1.doneztask-1234.5task-2485+1task-2487+1task-2469_1.2_a+3tidc                    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 )N,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      ]/home/jay/workspace/.worktrees/task-2487+1-dev2/tests/regression/test_dotphase_compat_2487.py test_compat_function_accepts_allr      sk    ',,,,,,,,',,,',,,,,,,,,,,,,,,,,,,    v2_tid)r   r   r   c                    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)uX   V2 strict 함수는 V2 패턴 task_id를 PASS (dot-phase 파일 소비자 단위 박제)r
   r   r   r   N)r   r   r   r   r   r   r   r   )r   r   r   s      r    test_v2_strict_accepts_v2_formatr      sm     F#################F###F##########r   c                  \    ddl m}   | t              j                         j                  d   S )uG   프로젝트 루트(workspace) 경로를 환경 독립적으로 계산.r   Path   )pathlibr    __file__resolveparentsr   s    r   _workspace_rootr&   "   s#    >!!#++A..r   c                     ddl } t               dz  dz  }| j                  dddt        |      gdd	      }|j                  }d
}||v }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}}y)uF   dispatch/__init__.py의 cancel_task가 task-N+M을 reject하지 않음r   Ndispatchz__init__.pygrepz-cz^task-\\d+\$T)capture_outputtext)r      )in)z2%(py2)s
{%(py2)s = %(py0)s.returncode
} in %(py5)sresult)r   py2py5zassert %(py7)spy7)
subprocessr&   runstr
returncoder   _call_reprcomparer   r   r   r   r   r   )r2   targetr.   @py_assert1@py_assert4@py_assert3@py_format6@py_format8s           r   +test_dispatch_no_legacy_dotphase_only_regexr=   (   s    +m;F^^	F4$  F &&&&&&&&&&&&6&&&6&&&&&&&&&&&&&r   c                      t               dz  dz  } 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)uX   notify-completion.py의 _RE_TASK_ID가 task-N+M을 reject하지 않음 (SSOT 위임 후)scriptsznotify-completion.pyrzutf-8)encodingNz,_RE_TASK_ID = re.compile(r"^task-\d+\.\d+$"))not in)z%(py1)s not in %(py3)scontent)r   r   uO   notify-completion.py의 dot-phase 한정 regex가 잔존 — SSOT 위임 누락z
>assert %(py5)sr0   )r&   openreadr   r6   r   r   r   r   _format_assertmsgr   r   )r7   frC   @py_assert0r   r   r;   s          r   -test_notify_completion_no_dotphase_only_regexrI   3   s    *-CCF	fcG	, &&(? ?wN  ?w    @      HO    HO    	Z     s   C44C=)__doc__builtinsr   _pytest.assertion.rewrite	assertionrewriter   pytestutils.task_id_parserr   r   REGRESSION_TASK_IDSmarkparametrizer   r   r&   r=   rI    r   r   <module>rU      s{    L      34- 5-  $ 
$
$
/'r   