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]