
    9j8                    V   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ddlmZ ddlZ ee      j!                         j"                  d   ZdZddZ edd	      Zd
 Zd Zd Zd Zej4                  j7                  e      d        Zej4                  j7                  e      d        Zy)u   tests/regression/test_dotphase_compat_2487.py — task-2487 회귀 (legacy dot-phase, task-2547 corrected).

verifier/dispatch path 의 legacy dot-phase 호환 회복 검증.
PR #51 Gemini high: task-1234.5 거부 회귀 픽스용.
    )annotationsN)Path   u   main에 browser_verify SSOT 위임 미적용 (PR #97 corrected scope 4 files만 머지). task-2487 chain 후속 PR에서 verifier 9개 SSOT 동기화 후 활성화 (회장 §명시 task-2551).c                <   t         |z  }t        j                  j                  | t	        |            }||j
                  t        d|       t        j                  j                  |      }|t        j                  | <   |j
                  j                  |       |S )Nzcannot load spec for )	WORKSPACE	importlibutilspec_from_file_locationstrloaderImportErrormodule_from_specsysmodulesexec_module)mod_namefile_rel	file_pathspecmodules        A/home/jay/workspace/tests/regression/test_dotphase_compat_2487.py_load_moduler      s    H$I>>11(C	NKD|t{{*1)=>>^^,,T2F"CKKKKF#M    tip_2487_dotphasezutils/task_id_parser.pyc                 (   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 )
Ntask-9.1Tiszb%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.is_valid_task_id_with_legacy
}(%(py4)s)
} is %(py9)stippy0py2py4py6py9assert %(py11)spy11task-1234.5
r    is_valid_task_id_with_legacy
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation@py_assert1@py_assert3@py_assert5@py_assert8@py_assert7@py_format10@py_format12s          r   test_legacy_dotphase_basic_passr<   $   s7   ++?J?+J7?4?74????74??????3???3???+???J???7???4???????++BMB+M:BdB:dBBBB:dBBBBBB3BBB3BBB+BBBMBBB:BBBdBBBBBBBBr   c                 (   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 )
Ntask-648.1.dev1Tr   r   r    r!   r'   r(   ztask-648.1.dev1.doner*   r4   s          r   $test_legacy_dotphase_with_dev_suffixr?   )   s=   ++F,=F+,=>F$F>$FFFF>$FFFFFF3FFF3FFF+FFF,=FFF>FFF$FFFFFFF++K,BK+,BCKtKCtKKKKCtKKKKKK3KKK3KKK+KKK,BKKKCKKKtKKKKKKKKr   c                 (   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	)u<   is_valid_task_id (V2 strict) 는 dot-phase 를 거부한다.r)   Fr   )zV%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.is_valid_task_id
}(%(py4)s)
} is %(py9)sr    r!   r'   r(   Nr   )
r    is_valid_task_idr,   r-   r.   r/   r0   r1   r2   r3   r4   s          r   test_v2_strict_rejects_dotphaserB   .   s7   77.7%7.%7777.%77777737773777777777.777%77777774
4
+4u4+u4444+u44444434443444444
444+444u44444444r   c            	        g d} g d}| |z   D ]O  }t         j                  } ||      }d}||u }|s#t        j                  d|fd||f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      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}x}}R y)uF   is_valid_task_id_with_legacy 는 V2와 legacy 양쪽 모두 받는다.)z	task-2487ztask-2487+1ztask-2469_1.2_a+3)r)   r   r>   Tr   )zb%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.is_valid_task_id_with_legacy
}(%(py3)s)
} is %(py8)sr    s)r"   r#   py3py5py8z should passz
>assert %(py10)spy10N)r    r+   r,   r-   r.   r/   r0   r1   _format_assertmsgr2   r3   )	
samples_v2samples_legacyrD   r5   @py_assert4r9   @py_assert6@py_format9@py_format11s	            r   +test_legacy_func_accepts_both_v2_and_legacyrP   4   s    BJCN.( O//N/2NdN2d:NNN2dNNNNNNsNNNsNNN/NNNNNNNNNNNN2NNNdNNNqc<NNNNNNNNOr   )reasonc                    t         dz  dz  dz  dz  j                  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)u[   teams/shared/verifiers/browser_verify.py 가 is_valid_task_id_with_legacy 를 호출한다.teamsshared	verifiersbrowser_verify.pyutf-8encodingr+   inz%(py1)s in %(py3)ssrcpy1rE   ui   browser_verify.py가 is_valid_task_id_with_legacy 를 사용하지 않음 — legacy 거부 회귀 가능
>assert %(py5)srF   Nr   	read_textr,   r-   r1   r.   r/   r0   rI   r2   r3   r]   @py_assert0@py_assert2@py_format4@py_format6s        r   &test_browser_verify_uses_legacy_compatrh   <   s     w)K7:MM
X
Xbi
X
jC) )S0  )S    *      .1    .1    	t    r   c                    t         dz  dz  dz  dz  j                  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)uY   browser_verify.verify 가 V2 strict (is_valid_task_id) 만 사용하지 않는지 검증.rS   rT   rU   rV   rW   rX   z%is_valid_task_id_with_legacy(task_id)rZ   r\   r]   r^   uH   browser_verify.verify 가 V2+legacy 통합 검증을 사용하지 않음r`   rF   Nra   rc   s        r   /test_browser_verify_no_strict_v2_only_in_verifyrj   E   s     w)K7:MM
X
Xbi
X
jC2 2c9  2c    3      7:    7:    	S    r   )r   r   r   r   )__doc__
__future__r   builtinsr.   _pytest.assertion.rewrite	assertionrewriter,   importlib.utilr   r   pathlibr   pytest__file__resolveparentsr   _BROWSER_VERIFY_SSOT_PENDINGr   r    r<   r?   rB   rP   markskiprh   rj    r   r   <module>r{      s   
 #     
  N""$,,Q/	n  &(ABC
L
5O 56 7 56 7r   