#!/usr/bin/env python3
"""
test_team_structure.py - 팀 디렉토리 구조 무결성 테스트

2026-04-17 에이전트 미팅 합의 항목 4:
dev1~dev7의 verifiers/qc_verify.py가 shared로의 symlink인지 검증.
dev8은 독립 구조 허용으로 제외.
"""

import os

import pytest

WORKSPACE_ROOT = "/home/jay/workspace"
TEAMS = ["dev1", "dev2", "dev3", "dev4", "dev5", "dev6", "dev7"]
# dev8은 독립 구조 허용 — 2026-04-17 미팅 합의


@pytest.mark.parametrize("team", TEAMS)
def test_verifiers_is_symlink(team: str) -> None:
    """각 팀의 verifiers 디렉토리가 symlink인지 확인."""
    verifiers_path = os.path.join(WORKSPACE_ROOT, "teams", team, "qc", "verifiers")
    assert os.path.islink(verifiers_path), (
        f"{team}/qc/verifiers가 symlink가 아닙니다. "
        f"shared/verifiers로의 symlink여야 합니다."
    )


@pytest.mark.parametrize("team", TEAMS)
def test_verifiers_points_to_shared(team: str) -> None:
    """각 팀의 verifiers symlink가 shared/verifiers를 가리키는지 확인."""
    verifiers_path = os.path.join(WORKSPACE_ROOT, "teams", team, "qc", "verifiers")
    if not os.path.islink(verifiers_path):
        pytest.skip(f"{team}/qc/verifiers가 symlink가 아님 (다른 테스트에서 FAIL)")
    real_path = os.path.realpath(verifiers_path)
    expected_suffix = os.path.join("teams", "shared", "verifiers")
    assert real_path.endswith(expected_suffix), (
        f"{team}/qc/verifiers symlink 대상이 shared/verifiers가 아닙니다. "
        f"실제: {real_path}"
    )


@pytest.mark.parametrize("team", TEAMS)
def test_qc_verify_is_symlink(team: str) -> None:
    """각 팀의 qc_verify.py가 symlink인지 확인."""
    qc_verify_path = os.path.join(WORKSPACE_ROOT, "teams", team, "qc", "qc_verify.py")
    assert os.path.islink(qc_verify_path), (
        f"{team}/qc/qc_verify.py가 symlink가 아닙니다. "
        f"shared/qc_verify.py로의 symlink여야 합니다."
    )


def test_dev8_excluded() -> None:
    """dev8은 독립 구조 허용 — 테스트 대상에서 제외됨을 문서화."""
    # dev8은 검증 대상이 아님 (독립 구조 허용)
    assert "dev8" not in TEAMS
