from pathlib import Path

import pytest

from cibuildwheel.logger import BuildInfo, Logger
from cibuildwheel.options import CommandLineArguments, Options

OPTIONS_DEFAULTS = Options("linux", CommandLineArguments.defaults(), {}, defaults=True)
FILE = Path(__file__)


def test_printout_wheels(capsys: pytest.CaptureFixture[str]) -> None:
    log = Logger()
    log.fold_mode = "disabled"
    log.colors_enabled = False

    with log.print_summary(options=OPTIONS_DEFAULTS):
        # the number of BuildInfo with & without filename shall be different for this test
        log.summary = [
            BuildInfo(identifier="id1", filename=None, duration=3),
            BuildInfo(identifier="id2", filename=FILE, duration=2),
            BuildInfo(identifier="id3", filename=FILE, duration=3),
        ]

    captured = capsys.readouterr()
    assert captured.err == ""

    assert "id1" in captured.out
    assert "id2" in captured.out
    assert "id3" in captured.out
    assert "2 wheels produced in" in captured.out
    assert "SHA256=" in captured.out


def test_no_printout_on_error(capsys: pytest.CaptureFixture[str]) -> None:
    log = Logger()
    with pytest.raises(RuntimeError), log.print_summary(options=OPTIONS_DEFAULTS):
        raise RuntimeError()

    captured = capsys.readouterr()
    assert captured.err == ""
    assert captured.out == ""
