# By: Md. Fahim Bin Amin
"""
Pytest plugin to print test function results and collect file-level summary.
"""

import pytest
from collections import defaultdict

# This will be injected from testrunner.py
FILE_SUMMARY = defaultdict(lambda: {"passed": 0, "failed": 0})

@pytest.hookimpl(tryfirst=True)
def pytest_runtest_logreport(report):
    if report.when != "call":
        return

    status = report.outcome.upper()
    color = "\033[92m" if report.passed else "\033[91m"
    reset = "\033[0m"
    print(f"{color}{status}{reset} - {color}{report.nodeid}")

    # Track result per file
    filename = report.nodeid.split("::")[0]
    if report.passed:
        FILE_SUMMARY[filename]["passed"] += 1
    else:
        FILE_SUMMARY[filename]["failed"] += 1
