"""
Go Test Discovery

Functions for discovering Go tests in a codebase.
"""

from pathlib import Path
from typing import List

from ...models import TestCase, TestFramework, TestCategory
from ..config import PROJECT_ROOT


def discover_go_tests(base_path: Path) -> List[TestCase]:
    """Entdeckt Go-Tests in einem Verzeichnis"""
    tests = []
    if not base_path.exists():
        return tests

    # Suche nach *_test.go Dateien
    test_files = list(base_path.rglob("*_test.go"))

    for test_file in test_files:
        # Parse Test-Funktionen aus der Datei
        try:
            content = test_file.read_text()
            for i, line in enumerate(content.split("\n"), 1):
                if line.strip().startswith("func Test"):
                    # Extrahiere Funktionsname
                    name_start = line.find("Test")
                    name_end = line.find("(", name_start)
                    if name_end > name_start:
                        func_name = line[name_start:name_end]
                        tests.append(TestCase(
                            id=f"{test_file.stem}_{func_name}",
                            name=func_name,
                            file_path=str(test_file.relative_to(PROJECT_ROOT)),
                            line_number=i,
                            framework=TestFramework.GO_TEST,
                            category=TestCategory.UNIT,
                        ))
        except Exception:
            pass

    return tests
