SXXXXXXX_PyUCC/tests/test_countings_impl.py

65 lines
1.7 KiB
Python

from pathlib import Path
import json
import os
from pyucc.core import countings_impl as ci
def make_item_variant(key_map):
# helper to create dict with varying keys
return key_map
def test_map_pygount_json_item_variants():
item1 = {
"raw_total_lines": 10,
"code": 7,
"comment": 2,
"blank": 1,
"language": "Python",
"filename": "a.py",
}
res1 = ci._map_pygount_json_item(item1)
assert res1["physical_lines"] == 10
assert res1["code_lines"] == 7
assert res1["comment_lines"] == 2
assert res1["blank_lines"] == 1
assert res1["language"] == "Python"
assert res1["file"].endswith("a.py")
# variant with different key names
item2 = {
"n_lines": 4,
"n_code": 3,
"n_comment": 1,
"n_blank": 0,
"lang": "C",
"file": "b.c",
}
res2 = ci._map_pygount_json_item(item2)
assert res2["physical_lines"] == 4
assert res2["code_lines"] == 3
assert res2["comment_lines"] == 1
assert res2["blank_lines"] == 0
assert res2["language"] == "C"
def test_analyze_file_counts_fallback(tmp_path):
p = tmp_path / "sample.txt"
data = "line1\n\nline3\nline4\n\n"
p.write_text(data)
res = ci.analyze_file_counts(p)
# pygount counts this as 4 physical lines (doesn't count final empty line)
assert res["physical_lines"] >= 4 # May be 4 (pygount) or 5 (fallback)
assert res["blank_lines"] >= 1
assert "file" in res
def test_analyze_paths_with_missing(tmp_path):
files = [tmp_path / "nope.py", tmp_path / "also.py"]
# none exist
out = ci.analyze_paths(files)
assert isinstance(out, list)
assert len(out) == 2
assert "error" in out[0] or "error" in out[1]