Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 41 additions & 1 deletion tests/copilot_usage/test_vscode_report.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,11 +166,15 @@ def test_avg_ms_division_by_zero_guard(self) -> None:
"""A model with count=0 in duration_by_model produces avg_ms=0."""
summary = _make_summary(
total_requests=0,
total_duration_ms=1_000,
requests_by_model={"some-model": 0},
duration_by_model={"some-model": 100},
)
output = _capture(summary)
assert "0ms" in output
model_line = _strip_ansi(
next(line for line in output.splitlines() if "some-model" in line)
)
assert re.search(r"(?<!\d)0ms(?!\d)", model_line)

def test_total_duration_formatted(self) -> None:
summary = _make_summary(
Expand All @@ -182,6 +186,42 @@ def test_total_duration_formatted(self) -> None:
# format_duration(389_114) -> "6m 29s"
assert "6m 29s" in output

def test_per_model_table_absent_duration_defaults_to_zero_avg(self) -> None:
"""Model in requests_by_model but absent from duration_by_model → 0ms avg."""
summary = _make_summary(
total_requests=3,
total_duration_ms=1_000,
requests_by_model={"claude-opus-4.6": 3},
duration_by_model={},
)
output = _capture(summary)
model_line = _strip_ansi(
next(line for line in output.splitlines() if "claude-opus-4.6" in line)
)
assert "claude-opus-4.6" in model_line
assert model_line.count("0ms") == 2

def test_per_model_table_partial_duration_dict(self) -> None:
"""Only one of two models has a duration entry; the other defaults to 0ms."""
summary = _make_summary(
total_requests=5,
total_duration_ms=1_500,
requests_by_model={"gpt-4o-mini": 3, "claude-opus-4.6": 2},
duration_by_model={"gpt-4o-mini": 1500},
)
output = _capture(summary)
gpt_line = _strip_ansi(
next(line for line in output.splitlines() if "gpt-4o-mini" in line)
)
opus_line = _strip_ansi(
next(line for line in output.splitlines() if "claude-opus-4.6" in line)
)
# gpt-4o-mini avg = 1500 // 3 = 500ms; total = "1s 500ms"
# "500ms" appears once for avg and once inside the total format.
assert gpt_line.count("500ms") == 2
# claude-opus-4.6 has no duration entry → 0ms avg and 0ms total
assert opus_line.count("0ms") == 2

def test_empty_requests_by_model_table_absent(self) -> None:
summary = _make_summary(total_requests=5, requests_by_model={})
output = _capture(summary)
Expand Down
Loading