1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from __future__ import annotations
from unittest.mock import MagicMock
import pytest
from pygittools.tui import status_bar
def test_content_height_reserves_status_row() -> None:
assert status_bar.content_height(10) == 9
assert status_bar.content_height(0) == 0
def test_format_line_with_hint() -> None:
line = status_bar._format_line("left text", "q quit", 40)
assert line.endswith("q quit")
assert "left" in line
def test_format_line_without_hint() -> None:
assert status_bar._format_line("hello", "", 10) == "hello "
def test_format_line_hint_wider_than_width() -> None:
line = status_bar._format_line("ignored", "longhint", 4)
assert line.strip() == "long"
def test_format_line_tight_width() -> None:
line = status_bar._format_line("left", "hint", 4)
assert len(line) == 4
def test_draw_status_bar_skips_zero_width() -> None:
status_bar.draw_status_bar(0, 0, "x", 0)
def test_init_status_bar_without_colors(monkeypatch: pytest.MonkeyPatch) -> None:
monkeypatch.setattr(status_bar, "has_colors", lambda: False)
assert status_bar.init_status_bar() == status_bar.A_REVERSE
def test_init_status_bar_with_colors(monkeypatch: pytest.MonkeyPatch) -> None:
monkeypatch.setattr(status_bar, "has_colors", lambda: True)
monkeypatch.setattr(status_bar, "start_color", MagicMock())
monkeypatch.setattr(status_bar, "use_default_colors", MagicMock())
monkeypatch.setattr(status_bar, "init_pair", MagicMock())
attr = status_bar.init_status_bar()
assert attr == status_bar.COLOR_PAIR(status_bar._STATUS_PAIR)