
    i                     0   d Z ddlZddlmc mZ ddlZddlZdZ	g dZ
ej                  j                  de
      deddfd       Zej                  j                  de
      deddfd       Zej                  j                  de
      deddfd	       Zdd
Zy)u   
test_team_structure.py - 팀 디렉토리 구조 무결성 테스트

2026-04-17 에이전트 미팅 합의 항목 4:
dev1~dev7의 verifiers/qc_verify.py가 shared로의 symlink인지 검증.
dev8은 독립 구조 허용으로 제외.
    Nz/home/jay/workspace)dev1dev2dev3dev4dev5dev6dev7teamreturnc                    t         j                  j                  t        d| dd      }t         j                  }|j                  } ||      }|st        j                  |  d      dz   dt        j                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }t        t        j                  |            d	x}x}}y	)
u:   각 팀의 verifiers 디렉토리가 symlink인지 확인.teamsqc	verifiersuY   /qc/verifiers가 symlink가 아닙니다. shared/verifiers로의 symlink여야 합니다.d
>assert %(py7)s
{%(py7)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.path
}.islink
}(%(py5)s)
}osverifiers_pathpy0py2py4py5py7Nr   pathjoinWORKSPACE_ROOTislink
@pytest_ar_format_assertmsg@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)r
   r   @py_assert1@py_assert3@py_assert6@py_format8s         0/home/jay/workspace/tests/test_team_structure.pytest_verifiers_is_symlinkr+      s!    WW\\.'4{SN77 7>> >.) )   & : 	;                       )    )    *          c                 F   t         j                  j                  t        d| dd      }t         j                  j	                  |      st        j                  |  d       t         j                  j                  |      }t         j                  j                  ddd      }|j                  } ||      }|st        j                  |  d|       dz   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	t        j                  |      d
z  }t        t        j                   |            dx}}y)uK   각 팀의 verifiers symlink가 shared/verifiers를 가리키는지 확인.r   r   r   u@   /qc/verifiers가 symlink가 아님 (다른 테스트에서 FAIL)shareduJ   /qc/verifiers symlink 대상이 shared/verifiers가 아닙니다. 실제: zL
>assert %(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.endswith
}(%(py3)s)
}	real_pathexpected_suffix)r   r   py3r   N)r   r   r   r   r   pytestskiprealpathendswithr   r   r    r!   r"   r#   r$   r%   )r
   r   r/   r0   r&   @py_assert4@py_format6s          r*   test_verifiers_points_to_sharedr8      sT    WW\\.'4{SN77>>.)tf\]^  0Iggll7HkBO o. .   & +	                   .    .    /     r,   c                    t         j                  j                  t        d| dd      }t         j                  }|j                  } ||      }|st        j                  |  d      dz   dt        j                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }t        t        j                  |            d	x}x}}y	)
u0   각 팀의 qc_verify.py가 symlink인지 확인.r   r   zqc_verify.pyu_   /qc/qc_verify.py가 symlink가 아닙니다. shared/qc_verify.py로의 symlink여야 합니다.r   r   qc_verify_pathr   Nr   )r
   r:   r&   r'   r(   r)   s         r*   test_qc_verify_is_symlinkr;   +   s!    WW\\.'4~VN77 7>> >.) )   & = 	>                       )    )    *      r,   c                  n   d} | t         v}|st        j                  d|fd| t         f      t        j                  |       dt	        j
                         v st        j                  t               rt        j                  t               nddz  }dd|iz  }t        t        j                  |            dx} }y)	uO   dev8은 독립 구조 허용 — 테스트 대상에서 제외됨을 문서화.dev8)not in)z%(py1)s not in %(py3)sTEAMS)py1r1   zassert %(py5)sr   N)	r?   r   _call_reprcomparer#   r    r!   r"   r$   r%   )@py_assert0@py_assert2@py_format4r7   s       r*   test_dev8_excludedrE   5   s]     666r,   )r   N)__doc__builtinsr    _pytest.assertion.rewrite	assertionrewriter   r   r2   r   r?   markparametrizestrr+   r8   r;   rE    r,   r*   <module>rO      s     	 &@ 'C D  ( '
# 
$ 
 (
 'C D  (r,   