Add utils and tests
This commit is contained in:
92
tests/test_dependency.py
Normal file
92
tests/test_dependency.py
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
import pytest
|
||||||
|
from pathlib import Path
|
||||||
|
from codechunk.core.dependency import DependencyAnalyzer, DependencyNode
|
||||||
|
from codechunk.core.chunking import ParsedChunk, ChunkMetadata
|
||||||
|
|
||||||
|
|
||||||
|
class TestDependencyAnalyzer:
|
||||||
|
"""Tests for DependencyAnalyzer."""
|
||||||
|
|
||||||
|
def test_analyze_dependencies_basic(self, tmp_path):
|
||||||
|
"""Test basic dependency analysis."""
|
||||||
|
main_code = '''
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
|
||||||
|
def main():
|
||||||
|
pass
|
||||||
|
'''
|
||||||
|
utils_code = '''
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
def helper():
|
||||||
|
pass
|
||||||
|
'''
|
||||||
|
|
||||||
|
(tmp_path / "main.py").write_text(main_code)
|
||||||
|
(tmp_path / "utils.py").write_text(utils_code)
|
||||||
|
|
||||||
|
from codechunk.core.parser import CodeParser
|
||||||
|
parser = CodeParser()
|
||||||
|
parser.discover_files(tmp_path, ["*.py"], [])
|
||||||
|
chunks = parser.parse_all()
|
||||||
|
|
||||||
|
analyzer = DependencyAnalyzer()
|
||||||
|
graph = analyzer.analyze_dependencies(chunks, parser.files)
|
||||||
|
|
||||||
|
assert len(graph) >= 2
|
||||||
|
|
||||||
|
def test_get_essential_chunks(self):
|
||||||
|
"""Test getting essential chunks including dependencies."""
|
||||||
|
analyzer = DependencyAnalyzer()
|
||||||
|
|
||||||
|
analyzer.dependency_graph = {
|
||||||
|
"main": DependencyNode(
|
||||||
|
chunk_name="main",
|
||||||
|
file_path=Path("main.py"),
|
||||||
|
module_name="main",
|
||||||
|
dependencies={"utils", "helper"}
|
||||||
|
),
|
||||||
|
"utils": DependencyNode(
|
||||||
|
chunk_name="utils",
|
||||||
|
file_path=Path("utils.py"),
|
||||||
|
module_name="utils",
|
||||||
|
dependencies={"helper"}
|
||||||
|
),
|
||||||
|
"helper": DependencyNode(
|
||||||
|
chunk_name="helper",
|
||||||
|
file_path=Path("helper.py"),
|
||||||
|
module_name="helper",
|
||||||
|
dependencies=set()
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
|
essential = analyzer.get_essential_chunks(["main"])
|
||||||
|
|
||||||
|
assert "main" in essential
|
||||||
|
assert "utils" in essential
|
||||||
|
assert "helper" in essential
|
||||||
|
|
||||||
|
def test_empty_project(self):
|
||||||
|
"""Test dependency analysis with no chunks."""
|
||||||
|
analyzer = DependencyAnalyzer()
|
||||||
|
graph = analyzer.analyze_dependencies([], [])
|
||||||
|
|
||||||
|
assert len(graph) == 0
|
||||||
|
|
||||||
|
|
||||||
|
class TestDependencyNode:
|
||||||
|
"""Tests for DependencyNode dataclass."""
|
||||||
|
|
||||||
|
def test_dependency_node_creation(self):
|
||||||
|
"""Test creating a dependency node."""
|
||||||
|
node = DependencyNode(
|
||||||
|
chunk_name="test",
|
||||||
|
file_path=Path("test.py"),
|
||||||
|
module_name="test",
|
||||||
|
dependencies={"dep1", "dep2"},
|
||||||
|
dependents={"parent"}
|
||||||
|
)
|
||||||
|
|
||||||
|
assert node.chunk_name == "test"
|
||||||
|
assert node.dependencies == {"dep1", "dep2"}
|
||||||
Reference in New Issue
Block a user