Initial commit: CodeMap v0.1.0 - CLI tool for code analysis and diagram generation
This commit is contained in:
120
tests/test_graph_builder.py
Normal file
120
tests/test_graph_builder.py
Normal file
@@ -0,0 +1,120 @@
|
||||
import tempfile
|
||||
import os
|
||||
from pathlib import Path
|
||||
from codemap.core import GraphBuilder
|
||||
from codemap.parsers import ParsedFile, Dependency
|
||||
|
||||
|
||||
def test_graph_builder_basic():
|
||||
builder = GraphBuilder()
|
||||
|
||||
dep = Dependency(
|
||||
module_name="utils",
|
||||
file_path=Path("/app/main.py"),
|
||||
line_number=1
|
||||
)
|
||||
parsed1 = ParsedFile(
|
||||
file_path=Path("/app/main.py"),
|
||||
module_name="main",
|
||||
dependencies=[dep],
|
||||
file_type="python"
|
||||
)
|
||||
parsed2 = ParsedFile(
|
||||
file_path=Path("/app/utils.py"),
|
||||
module_name="utils",
|
||||
dependencies=[],
|
||||
file_type="python"
|
||||
)
|
||||
|
||||
builder.add_file(parsed1)
|
||||
builder.add_file(parsed2)
|
||||
|
||||
stats = builder.get_stats()
|
||||
assert stats["node_count"] == 3
|
||||
assert stats["edge_count"] == 1
|
||||
|
||||
|
||||
def test_graph_builder_build_from_files():
|
||||
builder = GraphBuilder()
|
||||
|
||||
files = []
|
||||
for i in range(3):
|
||||
parsed = ParsedFile(
|
||||
file_path=Path(f"/app/module{i}.py"),
|
||||
module_name=f"module{i}",
|
||||
dependencies=[],
|
||||
file_type="python"
|
||||
)
|
||||
files.append(parsed)
|
||||
|
||||
builder.build_from_files(files)
|
||||
|
||||
stats = builder.get_stats()
|
||||
assert stats["node_count"] == 3
|
||||
assert stats["edge_count"] == 0
|
||||
|
||||
|
||||
def test_get_dependencies():
|
||||
builder = GraphBuilder()
|
||||
|
||||
dep_a = Dependency(module_name="a", file_path=Path("/app/main.py"), line_number=1)
|
||||
main = ParsedFile(
|
||||
file_path=Path("/app/main.py"),
|
||||
module_name="main",
|
||||
dependencies=[dep_a],
|
||||
file_type="python"
|
||||
)
|
||||
dep_b = Dependency(module_name="b", file_path=Path("/app/utils.py"), line_number=1)
|
||||
utils = ParsedFile(
|
||||
file_path=Path("/app/utils.py"),
|
||||
module_name="utils",
|
||||
dependencies=[dep_b],
|
||||
file_type="python"
|
||||
)
|
||||
a = ParsedFile(
|
||||
file_path=Path("/app/a.py"),
|
||||
module_name="a",
|
||||
dependencies=[],
|
||||
file_type="python"
|
||||
)
|
||||
|
||||
builder.add_file(main)
|
||||
builder.add_file(utils)
|
||||
builder.add_file(a)
|
||||
|
||||
graph_data = builder.get_graph_data()
|
||||
assert len(graph_data.nodes) >= 3
|
||||
assert len(graph_data.edges) >= 2
|
||||
|
||||
|
||||
def test_get_packages():
|
||||
builder = GraphBuilder()
|
||||
|
||||
files = [
|
||||
ParsedFile(file_path=Path("/app/src/main.py"), module_name="main", dependencies=[], file_type="python"),
|
||||
ParsedFile(file_path=Path("/app/src/utils.py"), module_name="utils", dependencies=[], file_type="python"),
|
||||
ParsedFile(file_path=Path("/app/lib/helper.py"), module_name="helper", dependencies=[], file_type="python"),
|
||||
]
|
||||
|
||||
builder.build_from_files(files)
|
||||
packages = builder.get_packages()
|
||||
|
||||
assert "src" in packages or "lib" in packages
|
||||
|
||||
|
||||
def test_get_stats():
|
||||
builder = GraphBuilder()
|
||||
|
||||
for i in range(5):
|
||||
parsed = ParsedFile(
|
||||
file_path=Path(f"/app/module{i}.py"),
|
||||
module_name=f"module{i}",
|
||||
dependencies=[],
|
||||
file_type="python"
|
||||
)
|
||||
builder.add_file(parsed)
|
||||
|
||||
stats = builder.get_stats()
|
||||
assert stats["node_count"] == 5
|
||||
assert stats["file_count"] == 5
|
||||
assert stats["edge_count"] == 0
|
||||
Reference in New Issue
Block a user